summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp1
-rw-r--r--api/current.txt57
-rw-r--r--api/removed.txt1
-rw-r--r--api/system-current.txt13
-rw-r--r--api/test-current.txt76
-rw-r--r--cmds/statsd/src/atoms.proto100
-rw-r--r--config/preloaded-classes2
-rw-r--r--config/preloaded-classes-blacklist2
-rw-r--r--core/java/android/accounts/Account.java6
-rw-r--r--core/java/android/app/Activity.java14
-rw-r--r--core/java/android/app/ActivityManager.java69
-rw-r--r--core/java/android/app/ActivityThread.java27
-rw-r--r--core/java/android/app/ClientTransactionHandler.java3
-rw-r--r--core/java/android/app/INotificationManager.aidl6
-rw-r--r--core/java/android/app/LocalActivityManager.java2
-rw-r--r--core/java/android/app/Notification.java14
-rw-r--r--core/java/android/app/NotificationManager.java34
-rw-r--r--core/java/android/app/job/JobInfo.java10
-rw-r--r--core/java/android/app/servertransaction/NewIntentItem.java21
-rw-r--r--core/java/android/content/ContentResolver.java6
-rw-r--r--core/java/android/content/Intent.java12
-rw-r--r--core/java/android/content/om/OverlayInfo.java2
-rw-r--r--core/java/android/content/pm/PackageManagerInternal.java4
-rw-r--r--core/java/android/content/pm/PackageParser.java49
-rw-r--r--core/java/android/content/res/ApkAssets.java19
-rw-r--r--core/java/android/content/res/StringBlock.java48
-rw-r--r--core/java/android/database/sqlite/SQLiteQueryBuilder.java2
-rw-r--r--core/java/android/hardware/biometrics/BiometricManager.java17
-rw-r--r--core/java/android/hardware/biometrics/BiometricPrompt.java33
-rw-r--r--core/java/android/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback.aidl26
-rw-r--r--core/java/android/hardware/biometrics/IBiometricService.aidl9
-rw-r--r--core/java/android/hardware/display/DisplayManagerInternal.java8
-rw-r--r--core/java/android/net/NetworkStack.java55
-rw-r--r--core/java/android/os/Environment.java4
-rw-r--r--core/java/android/os/GraphicsEnvironment.java15
-rw-r--r--core/java/android/os/ZygoteProcess.java7
-rw-r--r--core/java/android/os/image/DynamicSystemClient.java6
-rw-r--r--core/java/android/os/storage/StorageManager.java38
-rw-r--r--core/java/android/os/storage/StorageVolume.java7
-rw-r--r--core/java/android/provider/MediaStore.java130
-rw-r--r--core/java/android/provider/SearchIndexablesContract.java2
-rw-r--r--core/java/android/provider/SearchIndexablesProvider.java2
-rw-r--r--core/java/android/provider/Settings.java70
-rw-r--r--core/java/android/service/autofill/AutofillService.java4
-rw-r--r--core/java/android/service/autofill/IFillCallback.aidl2
-rw-r--r--core/java/android/service/autofill/augmented/AugmentedAutofillService.java3
-rw-r--r--core/java/android/service/contentcapture/ContentCaptureService.java5
-rw-r--r--core/java/android/service/notification/Adjustment.java4
-rw-r--r--core/java/android/service/notification/INotificationListener.aidl1
-rw-r--r--core/java/android/service/notification/NotificationAssistantService.java16
-rw-r--r--core/java/android/service/notification/NotificationListenerService.java7
-rw-r--r--core/java/android/util/FeatureFlagUtils.java3
-rw-r--r--core/java/android/util/StatsLog.java8
-rw-r--r--core/java/android/util/proto/ProtoInputStream.java3
-rw-r--r--core/java/android/util/proto/TEST_MAPPING7
-rw-r--r--core/java/android/view/IRecentsAnimationController.aidl4
-rw-r--r--core/java/android/view/InsetsSourceConsumer.java1
-rw-r--r--core/java/android/view/LayoutInflater.java17
-rw-r--r--core/java/android/view/SurfaceControl.java16
-rw-r--r--core/java/android/view/ViewTreeObserver.java6
-rw-r--r--core/java/android/view/Window.java64
-rw-r--r--core/java/android/view/contentcapture/ContentCaptureCondition.java4
-rw-r--r--core/java/android/view/textclassifier/ConversationAction.java6
-rw-r--r--core/java/android/view/textclassifier/ConversationActions.java6
-rw-r--r--core/java/android/view/textclassifier/TextClassification.java12
-rw-r--r--core/java/android/view/textclassifier/TextLinks.java12
-rw-r--r--core/java/android/view/textclassifier/TextSelection.java12
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java147
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java78
-rw-r--r--core/java/com/android/internal/app/ResolverListController.java13
-rw-r--r--core/java/com/android/internal/app/SuspendedAppActivity.java2
-rw-r--r--core/java/com/android/internal/app/procstats/ProcessState.java2
-rw-r--r--core/java/com/android/internal/infra/AbstractRemoteService.java2
-rw-r--r--core/java/com/android/internal/policy/DecorView.java29
-rw-r--r--core/java/com/android/internal/policy/PhoneWindow.java37
-rw-r--r--core/java/com/android/internal/util/MimeIconUtils.java16
-rw-r--r--core/jni/android_hardware_camera2_DngCreator.cpp173
-rw-r--r--core/jni/android_view_SurfaceControl.cpp11
-rw-r--r--core/jni/fd_utils.cpp2
-rw-r--r--core/res/res/drawable/ic_bluetooth_share_icon.xml4
-rw-r--r--core/res/res/values-night/colors.xml4
-rw-r--r--core/res/res/values-night/themes_device_defaults.xml7
-rw-r--r--core/res/res/values/attrs.xml38
-rw-r--r--core/res/res/values/colors.xml3
-rw-r--r--core/res/res/values/config.xml10
-rw-r--r--core/res/res/values/dimens.xml1
-rw-r--r--core/res/res/values/dimens_car.xml6
-rw-r--r--core/res/res/values/strings.xml12
-rw-r--r--core/res/res/values/symbols.xml7
-rw-r--r--core/res/res/values/themes_device_defaults.xml8
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java6
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java2
-rw-r--r--core/tests/coretests/src/android/provider/SettingsBackupTest.java4
-rw-r--r--data/etc/privapp-permissions-platform.xml1
-rw-r--r--libs/hwui/renderthread/VulkanSurface.cpp77
-rw-r--r--libs/hwui/tests/unit/CommonPoolTests.cpp44
-rw-r--r--libs/hwui/thread/CommonPool.cpp21
-rw-r--r--libs/hwui/thread/CommonPool.h12
-rw-r--r--libs/hwui/utils/Color.cpp3
-rw-r--r--location/java/android/location/Location.java8
-rw-r--r--media/Android.bp4
-rw-r--r--media/OWNERS1
-rw-r--r--media/apex/java/android/media/MediaPlayer2.java2
-rw-r--r--media/java/android/media/AudioTrack.java3
-rw-r--r--media/java/android/media/MediaHTTPConnection.java244
-rw-r--r--media/jni/android_media_MediaHTTPConnection.cpp9
-rw-r--r--media/proto/jarjar-rules.txt2
-rw-r--r--native/android/system_fonts.cpp3
-rw-r--r--packages/CaptivePortalLogin/AndroidManifest.xml2
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButton.java13
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java104
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java4
-rw-r--r--packages/DynamicSystemInstallationService/res/values/strings.xml12
-rw-r--r--packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java8
-rw-r--r--packages/ExtServices/AndroidManifest.xml2
-rw-r--r--packages/NetworkStack/AndroidManifest.xml2
-rw-r--r--packages/NetworkStack/src/android/net/ip/IpClient.java46
-rw-r--r--packages/NetworkStack/src/android/net/util/DataStallUtils.java72
-rw-r--r--packages/NetworkStack/src/android/net/util/NetworkStackUtils.java21
-rw-r--r--packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java80
-rw-r--r--packages/NetworkStack/tests/src/android/net/ip/IpClientTest.java22
-rw-r--r--packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java24
-rw-r--r--packages/PackageInstaller/res/values-af/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-am/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-as/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-az/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-b+sr+Latn/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-be/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-bg/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-bn/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-bs/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-cs/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-da/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-de/strings.xml2
-rw-r--r--packages/PackageInstaller/res/values-el/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-en-rAU/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-en-rCA/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-en-rGB/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-en-rIN/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-en-rXC/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-es-rUS/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-et/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-fa/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-fi/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-gl/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-gu/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-hi/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-hr/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-hu/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-in/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-is/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-it/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-iw/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ja/strings.xml13
-rw-r--r--packages/PackageInstaller/res/values-ka/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-km/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ko/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ky/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-lo/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-lt/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-lv/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-mk/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ml/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-mn/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ms/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-my/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-nb/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ne/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-nl/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-or/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-pa/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-pl/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-pt-rBR/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-pt/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ro/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ru/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-si/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-sl/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-sq/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-sr/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-sv/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-sw/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-te/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-th/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-tl/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-tr/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-uk/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-ur/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-uz/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-zh-rCN/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-zh-rHK/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-zh-rTW/strings.xml1
-rw-r--r--packages/PackageInstaller/res/values-zu/strings.xml1
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java11
-rw-r--r--packages/SettingsLib/res/values-af/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-am/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ar/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-as/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-az/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-be/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-bg/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-bn/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-bs/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ca/strings.xml21
-rw-r--r--packages/SettingsLib/res/values-cs/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-de/strings.xml21
-rw-r--r--packages/SettingsLib/res/values-el/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-en-rAU/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-en-rCA/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-en-rGB/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-en-rIN/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-en-rXC/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-es-rUS/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-es/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-et/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-eu/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-fa/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-fi/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-fr-rCA/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-fr/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-gl/strings.xml19
-rw-r--r--packages/SettingsLib/res/values-gu/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-hi/strings.xml8
-rw-r--r--packages/SettingsLib/res/values-hr/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-hu/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-hy/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-in/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-is/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-it/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-iw/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ja/strings.xml41
-rw-r--r--packages/SettingsLib/res/values-ka/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-kk/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-km/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-kn/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-ko/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ky/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-lo/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-lt/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-lv/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-mk/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ml/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-ml/strings.xml39
-rw-r--r--packages/SettingsLib/res/values-mn/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-mr/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ms/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-my/strings.xml53
-rw-r--r--packages/SettingsLib/res/values-nb/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ne/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-nl/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-or/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-pl/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-pt-rPT/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-pt/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ro/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-ru/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-si/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-sk/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-sl/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-sq/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-sq/strings.xml23
-rw-r--r--packages/SettingsLib/res/values-sr/arrays.xml2
-rw-r--r--packages/SettingsLib/res/values-sr/strings.xml17
-rw-r--r--packages/SettingsLib/res/values-sv/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-sw/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-te/strings.xml29
-rw-r--r--packages/SettingsLib/res/values-th/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-tl/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-tr/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-uk/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-uz/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-vi/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-zh-rHK/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/strings.xml15
-rw-r--r--packages/SettingsLib/res/values-zu/strings.xml15
-rw-r--r--packages/SettingsLib/res/values/strings.xml4
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java72
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java54
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java25
-rw-r--r--packages/Shell/AndroidManifest.xml4
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java5
-rw-r--r--packages/SystemUI/res-keyguard/values-af/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-am/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ar/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-as/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-az/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-be/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-bg/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-bn/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-bs/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ca/strings.xml73
-rw-r--r--packages/SystemUI/res-keyguard/values-cs/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-da/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-de/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-el/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rAU/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rCA/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rGB/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rIN/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-en-rXC/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-es-rUS/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-es/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-et/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-eu/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-fa/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-fi/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-fr/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-gl/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-gu/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-hi/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-hr/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-hu/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-hy/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-in/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-it/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-iw/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ja/strings.xml48
-rw-r--r--packages/SystemUI/res-keyguard/values-ka/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-kk/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-km/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-kn/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-ko/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ky/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-lo/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-lt/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-lv/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-mk/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ml/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-mn/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-mr/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-ms/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-my/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-nb/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ne/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-nl/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-or/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-pa/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-pl/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-pt/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ro/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ru/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-si/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-sk/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-sl/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-sq/strings.xml26
-rw-r--r--packages/SystemUI/res-keyguard/values-sr/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-sv/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-sw/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-te/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-th/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-tl/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-tr/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-uk/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-ur/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-uz/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-vi/strings.xml71
-rw-r--r--packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml18
-rw-r--r--packages/SystemUI/res-keyguard/values-zu/strings.xml18
-rw-r--r--packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml31
-rw-r--r--packages/SystemUI/res/drawable/ic_sysbar_back.xml1
-rw-r--r--packages/SystemUI/res/drawable/ic_sysbar_back_quick_step.xml1
-rw-r--r--packages/SystemUI/res/layout/quick_qs_status_icons.xml3
-rw-r--r--packages/SystemUI/res/layout/system_icons.xml4
-rw-r--r--packages/SystemUI/res/values-af/strings.xml69
-rw-r--r--packages/SystemUI/res/values-am/strings.xml69
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml100
-rw-r--r--packages/SystemUI/res/values-as/strings.xml76
-rw-r--r--packages/SystemUI/res/values-az/strings.xml69
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml72
-rw-r--r--packages/SystemUI/res/values-be/strings.xml75
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml69
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml76
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml72
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml100
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml75
-rw-r--r--packages/SystemUI/res/values-da/strings.xml69
-rw-r--r--packages/SystemUI/res/values-de/strings.xml108
-rw-r--r--packages/SystemUI/res/values-el/strings.xml71
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml69
-rw-r--r--packages/SystemUI/res/values-en-rCA/strings.xml69
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml69
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml69
-rw-r--r--packages/SystemUI/res/values-en-rXC/strings.xml69
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml69
-rw-r--r--packages/SystemUI/res/values-es/strings.xml104
-rw-r--r--packages/SystemUI/res/values-et/strings.xml71
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml108
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml69
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml69
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml100
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml100
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml69
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml76
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml105
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml72
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml69
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml100
-rw-r--r--packages/SystemUI/res/values-in/strings.xml69
-rw-r--r--packages/SystemUI/res/values-is/strings.xml69
-rw-r--r--packages/SystemUI/res/values-it/strings.xml69
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml75
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml129
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml69
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml100
-rw-r--r--packages/SystemUI/res/values-km/strings.xml69
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml101
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml69
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml69
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml69
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml75
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml72
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc030/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc070/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc170/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc280/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc380/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc410/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc560/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc310-mnc950/config.xml26
-rw-r--r--packages/SystemUI/res/values-mcc311-mnc180/config.xml26
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml69
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml113
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml71
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml101
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml69
-rw-r--r--packages/SystemUI/res/values-my/strings.xml69
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml69
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml76
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml69
-rw-r--r--packages/SystemUI/res/values-or/strings.xml69
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml76
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml75
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml69
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml100
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml69
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml72
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml75
-rw-r--r--packages/SystemUI/res/values-si/strings.xml69
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml100
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml75
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml85
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml72
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml69
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml69
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml27
-rw-r--r--packages/SystemUI/res/values-te/strings.xml76
-rw-r--r--packages/SystemUI/res/values-th/strings.xml69
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml69
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml69
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml75
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml105
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml69
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml100
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml69
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml69
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml69
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml69
-rw-r--r--packages/SystemUI/res/values/attrs.xml1
-rw-r--r--packages/SystemUI/res/values/config.xml4
-rw-r--r--packages/SystemUI/res/values/dimens.xml4
-rw-r--r--packages/SystemUI/res/values/internal.xml1
-rw-r--r--packages/SystemUI/res/values/strings.xml3
-rw-r--r--packages/SystemUI/res/values/styles.xml7
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java10
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java1
-rw-r--r--packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java30
-rw-r--r--packages/SystemUI/src/com/android/keyguard/clock/SettingsWrapper.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/BatteryMeterView.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java43
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java78
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java61
-rw-r--r--packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java17
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java41
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java24
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java73
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java62
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java29
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java123
-rw-r--r--packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayManager.java161
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/Events.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java34
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayManagerTest.java230
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml (renamed from packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_perm_group_sms.xml)0
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml (renamed from packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml)0
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml25
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml (renamed from packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_perm_group_sms.xml)0
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml (renamed from packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml)0
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml25
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml (renamed from packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_perm_group_sms.xml)0
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml (renamed from packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml)0
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml25
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml5
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml8
-rw-r--r--packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml4
-rw-r--r--proto/src/wifi.proto24
-rw-r--r--services/autofill/java/com/android/server/autofill/Session.java2
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java3
-rw-r--r--services/core/java/com/android/server/ConnectivityService.java15
-rw-r--r--services/core/java/com/android/server/IpSecService.java4
-rw-r--r--services/core/java/com/android/server/StorageManagerService.java4
-rw-r--r--services/core/java/com/android/server/SystemServerInitThreadPool.java58
-rw-r--r--services/core/java/com/android/server/TelephonyRegistry.java6
-rw-r--r--services/core/java/com/android/server/am/OomAdjuster.java9
-rw-r--r--services/core/java/com/android/server/appop/AppOpsService.java3
-rw-r--r--services/core/java/com/android/server/attention/AttentionManagerService.java226
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java23
-rw-r--r--services/core/java/com/android/server/biometrics/AuthenticationClient.java13
-rw-r--r--services/core/java/com/android/server/biometrics/BiometricService.java268
-rw-r--r--services/core/java/com/android/server/camera/CameraServiceProxy.java36
-rw-r--r--services/core/java/com/android/server/connectivity/PermissionMonitor.java5
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java17
-rw-r--r--services/core/java/com/android/server/display/color/ColorDisplayService.java10
-rw-r--r--services/core/java/com/android/server/display/color/DisplayTransformManager.java21
-rw-r--r--services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java2
-rw-r--r--services/core/java/com/android/server/gpu/GpuService.java38
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java25
-rw-r--r--services/core/java/com/android/server/job/JobStore.java20
-rw-r--r--services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java51
-rw-r--r--services/core/java/com/android/server/media/MediaSessionServiceImpl.java6
-rw-r--r--services/core/java/com/android/server/net/NetworkStatsService.java3
-rw-r--r--services/core/java/com/android/server/notification/ManagedServices.java7
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java60
-rw-r--r--services/core/java/com/android/server/notification/PreferencesHelper.java826
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerService.java7
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerSettings.java7
-rw-r--r--services/core/java/com/android/server/pm/ApexManager.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java160
-rw-r--r--services/core/java/com/android/server/pm/StagingManager.java3
-rw-r--r--services/core/java/com/android/server/pm/UserRestrictionsUtils.java58
-rw-r--r--services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java44
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java66
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java1
-rw-r--r--services/core/java/com/android/server/policy/PermissionPolicyService.java180
-rw-r--r--services/core/java/com/android/server/role/RoleManagerService.java11
-rw-r--r--services/core/java/com/android/server/wallpaper/WallpaperManagerService.java3
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java24
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java8
-rw-r--r--services/core/java/com/android/server/wm/ActivityStackSupervisor.java5
-rw-r--r--services/core/java/com/android/server/wm/BoundsAnimationController.java93
-rw-r--r--services/core/java/com/android/server/wm/BoundsAnimationTarget.java6
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimation.java28
-rw-r--r--services/core/java/com/android/server/wm/RecentsAnimationController.java17
-rw-r--r--services/core/java/com/android/server/wm/ScreenRotationAnimation.java15
-rw-r--r--services/core/java/com/android/server/wm/TaskPositioner.java3
-rw-r--r--services/core/java/com/android/server/wm/TaskRecord.java9
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotController.java4
-rw-r--r--services/core/java/com/android/server/wm/TaskSnapshotSurface.java44
-rw-r--r--services/core/java/com/android/server/wm/TaskStack.java53
-rw-r--r--services/core/java/com/android/server/wm/WindowAnimationSpec.java19
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java3
-rw-r--r--services/net/java/android/net/ip/IIpClient.aidl1
-rw-r--r--services/tests/servicestests/AndroidManifest.xml1
-rw-r--r--services/tests/servicestests/src/com/android/server/display/color/DisplayTransformManagerTest.java102
-rw-r--r--services/tests/servicestests/src/com/android/server/job/JobStoreTest.java76
-rw-r--r--services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java504
-rw-r--r--services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java505
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java60
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java87
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java4
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/BoundsAnimationControllerTests.java119
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java1
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java121
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java15
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/WindowAnimationSpecTest.java19
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java12
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java7
-rw-r--r--telecomm/java/android/telecom/CallRedirectionService.java6
-rw-r--r--telephony/java/android/provider/Telephony.java16
-rwxr-xr-xtelephony/java/android/telephony/CarrierConfigManager.java40
-rw-r--r--telephony/java/android/telephony/CellIdentity.java18
-rw-r--r--telephony/java/android/telephony/CellIdentityGsm.java2
-rw-r--r--telephony/java/android/telephony/CellIdentityLte.java2
-rw-r--r--telephony/java/android/telephony/CellIdentityTdscdma.java2
-rw-r--r--telephony/java/android/telephony/CellIdentityWcdma.java2
-rw-r--r--telephony/java/android/telephony/CellInfoCdma.java12
-rw-r--r--telephony/java/android/telephony/CellInfoGsm.java12
-rw-r--r--telephony/java/android/telephony/CellInfoLte.java12
-rw-r--r--telephony/java/android/telephony/CellInfoNr.java6
-rw-r--r--telephony/java/android/telephony/CellInfoTdscdma.java6
-rw-r--r--telephony/java/android/telephony/CellInfoWcdma.java7
-rw-r--r--telephony/java/android/telephony/CellSignalStrength.java20
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthCdma.java9
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthGsm.java39
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthLte.java9
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthNr.java6
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthTdscdma.java53
-rw-r--r--telephony/java/android/telephony/CellSignalStrengthWcdma.java19
-rw-r--r--telephony/java/android/telephony/ServiceState.java53
-rw-r--r--telephony/java/android/telephony/SubscriptionManager.java4
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java22
-rw-r--r--telephony/java/android/telephony/data/ApnSetting.java5
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl5
-rw-r--r--tests/ProtoInputStreamTests/Android.mk34
-rw-r--r--tests/ProtoInputStreamTests/AndroidManifest.xml27
-rw-r--r--tests/ProtoInputStreamTests/AndroidTest.xml28
-rw-r--r--tests/ProtoInputStreamTests/TEST_MAPPING7
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBoolTest.java500
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBytesTest.java423
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamDoubleTest.java728
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamEnumTest.java570
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed32Test.java547
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed64Test.java649
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFloatTest.java679
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt32Test.java565
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt64Test.java645
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamObjectTest.java507
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed32Test.java547
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed64Test.java648
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt32Test.java547
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt64Test.java622
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamStringTest.java404
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt32Test.java564
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt64Test.java641
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoTests.java45
-rw-r--r--tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/test.proto115
-rw-r--r--tests/net/Android.bp1
-rw-r--r--tests/net/common/Android.bp29
-rw-r--r--tests/net/common/java/android/net/IpPrefixTest.java (renamed from tests/net/java/android/net/IpPrefixTest.java)80
-rw-r--r--tests/net/java/android/net/NetworkStackTest.java75
-rw-r--r--tests/net/java/android/net/netlink/InetDiagSocketTest.java2
-rw-r--r--tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java11
-rw-r--r--tests/net/java/com/android/server/IpSecServiceTest.java34
-rw-r--r--tests/utils/testutils/java/com/android/internal/util/test/BidirectionalAsyncChannelServer.java5
-rw-r--r--tools/aapt2/link/TableMerger.cpp32
-rw-r--r--tools/aapt2/link/TableMerger_test.cpp64
-rw-r--r--tools/stats_log_api_gen/main.cpp2
-rw-r--r--wifi/java/android/net/wifi/aware/ConfigRequest.java2
-rw-r--r--wifi/java/android/net/wifi/aware/PublishConfig.java5
-rw-r--r--wifi/java/android/net/wifi/aware/SubscribeConfig.java6
-rw-r--r--wifi/java/android/net/wifi/aware/WifiAwareManager.java2
-rw-r--r--wifi/tests/src/android/net/wifi/WifiManagerTest.java201
-rw-r--r--wifi/tests/src/android/net/wifi/WifiScannerTest.java221
-rw-r--r--wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java5
667 files changed, 22868 insertions, 7575 deletions
diff --git a/Android.bp b/Android.bp
index 21054ddd89c6..6a85f62a5ae6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -161,6 +161,7 @@ java_defaults {
":libcamera_client_framework_aidl",
"core/java/android/hardware/IConsumerIrService.aidl",
"core/java/android/hardware/ISerialManager.aidl",
+ "core/java/android/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback.aidl",
"core/java/android/hardware/biometrics/IBiometricEnabledOnKeyguardCallback.aidl",
"core/java/android/hardware/biometrics/IBiometricService.aidl",
"core/java/android/hardware/biometrics/IBiometricServiceReceiver.aidl",
diff --git a/api/current.txt b/api/current.txt
index 5997043cdd4a..4bbae3b14f7d 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -5335,6 +5335,7 @@ package android.app {
field public static final String EXTRA_TITLE = "android.title";
field public static final String EXTRA_TITLE_BIG = "android.title.big";
field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
+ field public static final int FLAG_BUBBLE = 4096; // 0x1000
field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
@@ -9515,7 +9516,7 @@ package android.content {
method public static android.content.SyncAdapterType[] getSyncAdapterTypes();
method public static boolean getSyncAutomatically(android.accounts.Account, String);
method @Nullable public final String getType(@NonNull android.net.Uri);
- method @NonNull public final android.content.ContentResolver.TypeInfo getTypeInfo(@NonNull String);
+ method @NonNull public final android.content.ContentResolver.MimeTypeInfo getTypeInfo(@NonNull String);
method @Nullable public final android.net.Uri insert(@RequiresPermission.Write @NonNull android.net.Uri, @Nullable android.content.ContentValues);
method public static boolean isSyncActive(android.accounts.Account, String);
method public static boolean isSyncPending(android.accounts.Account, String);
@@ -9595,7 +9596,7 @@ package android.content {
field public static final int SYNC_OBSERVER_TYPE_SETTINGS = 1; // 0x1
}
- public static final class ContentResolver.TypeInfo {
+ public static final class ContentResolver.MimeTypeInfo {
method @NonNull public CharSequence getContentDescription();
method @NonNull public android.graphics.drawable.Icon getIcon();
method @NonNull public CharSequence getLabel();
@@ -10307,6 +10308,7 @@ package android.content {
field public static final String CATEGORY_APP_CALENDAR = "android.intent.category.APP_CALENDAR";
field public static final String CATEGORY_APP_CONTACTS = "android.intent.category.APP_CONTACTS";
field public static final String CATEGORY_APP_EMAIL = "android.intent.category.APP_EMAIL";
+ field public static final String CATEGORY_APP_FILES = "android.intent.category.APP_FILES";
field public static final String CATEGORY_APP_GALLERY = "android.intent.category.APP_GALLERY";
field public static final String CATEGORY_APP_MAPS = "android.intent.category.APP_MAPS";
field public static final String CATEGORY_APP_MARKET = "android.intent.category.APP_MARKET";
@@ -38477,8 +38479,8 @@ package android.provider {
public final class MediaStore {
ctor public MediaStore();
- method @NonNull public static java.util.Set<java.lang.String> getAllVolumeNames(@NonNull android.content.Context);
method @Nullable public static android.net.Uri getDocumentUri(@NonNull android.content.Context, @NonNull android.net.Uri);
+ method @NonNull public static java.util.Set<java.lang.String> getExternalVolumeNames(@NonNull android.content.Context);
method public static android.net.Uri getMediaScannerUri();
method @Nullable public static android.net.Uri getMediaUri(@NonNull android.content.Context, @NonNull android.net.Uri);
method @NonNull public static String getVersion(@NonNull android.content.Context);
@@ -38522,6 +38524,7 @@ package android.provider {
field public static final String META_DATA_STILL_IMAGE_CAMERA_PREWARM_SERVICE = "android.media.still_image_camera_preview_service";
field public static final String UNKNOWN_STRING = "<unknown>";
field public static final String VOLUME_EXTERNAL = "external";
+ field public static final String VOLUME_EXTERNAL_PRIMARY = "external_primary";
field public static final String VOLUME_INTERNAL = "internal";
}
@@ -38536,6 +38539,7 @@ package android.provider {
field public static final String ALBUM_ID = "album_id";
field public static final String ALBUM_KEY = "album_key";
field public static final String ARTIST = "artist";
+ field public static final String ARTIST_ID = "artist_id";
field public static final String FIRST_YEAR = "minyear";
field public static final String LAST_YEAR = "maxyear";
field public static final String NUMBER_OF_SONGS = "numsongs";
@@ -38769,6 +38773,7 @@ package android.provider {
field public static final String RELATIVE_PATH = "relative_path";
field public static final String SIZE = "_size";
field public static final String TITLE = "title";
+ field public static final String VOLUME_NAME = "volume_name";
field public static final String WIDTH = "width";
}
@@ -44380,9 +44385,9 @@ package android.telephony {
method public int getCid();
method public int getLac();
method @Deprecated public int getMcc();
- method public String getMccString();
+ method @Nullable public String getMccString();
method @Deprecated public int getMnc();
- method public String getMncString();
+ method @Nullable public String getMncString();
method @Nullable public String getMobileNetworkOperator();
method @Deprecated public int getPsc();
method public void writeToParcel(android.os.Parcel, int);
@@ -44394,9 +44399,9 @@ package android.telephony {
method public int getCi();
method public int getEarfcn();
method @Deprecated public int getMcc();
- method public String getMccString();
+ method @Nullable public String getMccString();
method @Deprecated public int getMnc();
- method public String getMncString();
+ method @Nullable public String getMncString();
method @Nullable public String getMobileNetworkOperator();
method public int getPci();
method public int getTac();
@@ -44419,8 +44424,8 @@ package android.telephony {
method public int getCid();
method public int getCpid();
method public int getLac();
- method public String getMccString();
- method public String getMncString();
+ method @Nullable public String getMccString();
+ method @Nullable public String getMncString();
method @Nullable public String getMobileNetworkOperator();
method public int getUarfcn();
method public void writeToParcel(android.os.Parcel, int);
@@ -44431,9 +44436,9 @@ package android.telephony {
method public int getCid();
method public int getLac();
method @Deprecated public int getMcc();
- method public String getMccString();
+ method @Nullable public String getMccString();
method @Deprecated public int getMnc();
- method public String getMncString();
+ method @Nullable public String getMncString();
method @Nullable public String getMobileNetworkOperator();
method public int getPsc();
method public int getUarfcn();
@@ -44456,22 +44461,22 @@ package android.telephony {
}
public final class CellInfoCdma extends android.telephony.CellInfo implements android.os.Parcelable {
- method public android.telephony.CellIdentityCdma getCellIdentity();
- method public android.telephony.CellSignalStrengthCdma getCellSignalStrength();
+ method @NonNull public android.telephony.CellIdentityCdma getCellIdentity();
+ method @NonNull public android.telephony.CellSignalStrengthCdma getCellSignalStrength();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoCdma> CREATOR;
}
public final class CellInfoGsm extends android.telephony.CellInfo implements android.os.Parcelable {
- method public android.telephony.CellIdentityGsm getCellIdentity();
- method public android.telephony.CellSignalStrengthGsm getCellSignalStrength();
+ method @NonNull public android.telephony.CellIdentityGsm getCellIdentity();
+ method @NonNull public android.telephony.CellSignalStrengthGsm getCellSignalStrength();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoGsm> CREATOR;
}
public final class CellInfoLte extends android.telephony.CellInfo implements android.os.Parcelable {
- method public android.telephony.CellIdentityLte getCellIdentity();
- method public android.telephony.CellSignalStrengthLte getCellSignalStrength();
+ method @NonNull public android.telephony.CellIdentityLte getCellIdentity();
+ method @NonNull public android.telephony.CellSignalStrengthLte getCellSignalStrength();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellInfoLte> CREATOR;
}
@@ -44507,7 +44512,7 @@ package android.telephony {
method public abstract boolean equals(Object);
method public abstract int getAsuLevel();
method public abstract int getDbm();
- method public abstract int getLevel();
+ method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public abstract int getLevel();
method public abstract int hashCode();
field public static final int SIGNAL_STRENGTH_GOOD = 3; // 0x3
field public static final int SIGNAL_STRENGTH_GREAT = 4; // 0x4
@@ -44527,7 +44532,7 @@ package android.telephony {
method public int getEvdoEcio();
method public int getEvdoLevel();
method public int getEvdoSnr();
- method public int getLevel();
+ method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthCdma> CREATOR;
}
@@ -44537,7 +44542,7 @@ package android.telephony {
method public int getAsuLevel();
method public int getBitErrorRate();
method public int getDbm();
- method public int getLevel();
+ method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
method public int getTimingAdvance();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR;
@@ -44548,7 +44553,7 @@ package android.telephony {
method public int getAsuLevel();
method public int getCqi();
method public int getDbm();
- method public int getLevel();
+ method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
method public int getRsrp();
method public int getRsrq();
method public int getRssi();
@@ -44565,7 +44570,7 @@ package android.telephony {
method public int getCsiRsrq();
method public int getCsiSinr();
method public int getDbm();
- method public int getLevel();
+ method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
method public int getSsRsrp();
method public int getSsRsrq();
method public int getSsSinr();
@@ -44577,7 +44582,7 @@ package android.telephony {
method public int describeContents();
method public int getAsuLevel();
method public int getDbm();
- method public int getLevel();
+ method @IntRange(from=0, to=4) public int getLevel();
method public int getRscp();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthTdscdma> CREATOR;
@@ -44587,7 +44592,7 @@ package android.telephony {
method public int describeContents();
method public int getAsuLevel();
method public int getDbm();
- method public int getLevel();
+ method @IntRange(from=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to=android.telephony.CellSignalStrength.SIGNAL_STRENGTH_GREAT) public int getLevel();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthWcdma> CREATOR;
}
@@ -51671,7 +51676,7 @@ package android.view {
method public void addOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
method public void addOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
method public void addOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
- method public void addOnSystemGestureExclusionRectsChangedListener(java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
+ method public void addOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
method public void addOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
method public void addOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
method public void addOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
@@ -51686,7 +51691,7 @@ package android.view {
method public void removeOnGlobalLayoutListener(android.view.ViewTreeObserver.OnGlobalLayoutListener);
method public void removeOnPreDrawListener(android.view.ViewTreeObserver.OnPreDrawListener);
method public void removeOnScrollChangedListener(android.view.ViewTreeObserver.OnScrollChangedListener);
- method public void removeOnSystemGestureExclusionRectsChangedListener(java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
+ method public void removeOnSystemGestureExclusionRectsChangedListener(@NonNull java.util.function.Consumer<java.util.List<android.graphics.Rect>>);
method public void removeOnTouchModeChangeListener(android.view.ViewTreeObserver.OnTouchModeChangeListener);
method public void removeOnWindowAttachListener(android.view.ViewTreeObserver.OnWindowAttachListener);
method public void removeOnWindowFocusChangeListener(android.view.ViewTreeObserver.OnWindowFocusChangeListener);
diff --git a/api/removed.txt b/api/removed.txt
index fe3e866de682..70ff50ed40a6 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -514,6 +514,7 @@ package android.provider {
public final class MediaStore {
method @Deprecated @NonNull public static android.net.Uri createPending(@NonNull android.content.Context, @NonNull android.provider.MediaStore.PendingParams);
+ method @Deprecated @NonNull public static java.util.Set<java.lang.String> getAllVolumeNames(@NonNull android.content.Context);
method @Deprecated @NonNull public static android.provider.MediaStore.PendingSession openPending(@NonNull android.content.Context, @NonNull android.net.Uri);
method @Deprecated @NonNull public static android.net.Uri setIncludeTrashed(@NonNull android.net.Uri);
method @Deprecated public static void trash(@NonNull android.content.Context, @NonNull android.net.Uri);
diff --git a/api/system-current.txt b/api/system-current.txt
index 3ee6a49c1b44..f2423437c3fc 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -553,7 +553,7 @@ package android.app {
}
public class NotificationManager {
- method @NonNull public java.util.List<java.lang.String> getAllowedAssistantCapabilities();
+ method @NonNull public java.util.List<java.lang.String> getAllowedAssistantAdjustments();
method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
@@ -5980,7 +5980,7 @@ package android.provider {
field public static final String NON_INDEXABLES_KEYS_PATH = "settings/non_indexables_key";
field public static final String PROVIDER_INTERFACE = "android.content.action.SEARCH_INDEXABLES_PROVIDER";
field public static final String SLICE_URI_PAIRS = "slice_uri_pairs";
- field public static final String[] SLICE_URI_PAIRS_COLUMNS;
+ field @NonNull public static final String[] SLICE_URI_PAIRS_COLUMNS;
field public static final String SLICE_URI_PAIRS_PATH = "settings/slice_uri_pairs";
}
@@ -6028,7 +6028,7 @@ package android.provider {
method public android.database.Cursor query(android.net.Uri, String[], String, String[], String);
method public abstract android.database.Cursor queryNonIndexableKeys(String[]);
method public abstract android.database.Cursor queryRawData(String[]);
- method public android.database.Cursor querySliceUriPairs();
+ method @Nullable public android.database.Cursor querySliceUriPairs();
method public abstract android.database.Cursor queryXmlResources(String[]);
method public final int update(android.net.Uri, android.content.ContentValues, String, String[]);
}
@@ -6062,11 +6062,6 @@ package android.provider {
field public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https";
field public static final String CARRIER_APP_NAMES = "carrier_app_names";
field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
- field public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = "data_stall_consecutive_dns_timeout_threshold";
- field public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type";
- field public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; // 0x1
- field public static final String DATA_STALL_MIN_EVALUATE_INTERVAL = "data_stall_min_evaluate_interval";
- field public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD = "data_stall_valid_dns_time_threshold";
field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
field public static final String DEVICE_DEMO_MODE = "device_demo_mode";
field public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
@@ -6636,8 +6631,8 @@ package android.service.notification {
method public final void adjustNotification(@NonNull android.service.notification.Adjustment);
method public final void adjustNotifications(@NonNull java.util.List<android.service.notification.Adjustment>);
method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
+ method public void onAllowedAdjustmentsChanged();
method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
- method public void onCapabilitiesChanged();
method public void onNotificationDirectReplied(@NonNull String);
method @Nullable public abstract android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification);
method @Nullable public android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification, @NonNull android.app.NotificationChannel);
diff --git a/api/test-current.txt b/api/test-current.txt
index b35b90f70749..23675d6be25a 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -328,8 +328,14 @@ package android.app {
}
public class NotificationManager {
+ method public void allowAssistantAdjustment(String);
+ method public void disallowAssistantAdjustment(String);
+ method @NonNull public java.util.List<java.lang.String> getAllowedAssistantAdjustments();
+ method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
method public android.content.ComponentName getEffectsSuppressor();
+ method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
method public boolean matchesCallFilter(android.os.Bundle);
+ method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
}
public final class PictureInPictureParams implements android.os.Parcelable {
@@ -2160,11 +2166,6 @@ package android.provider {
field public static final String CAPTIVE_PORTAL_OTHER_FALLBACK_URLS = "captive_portal_other_fallback_urls";
field public static final String CAPTIVE_PORTAL_USER_AGENT = "captive_portal_user_agent";
field public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https";
- field public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = "data_stall_consecutive_dns_timeout_threshold";
- field public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type";
- field public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1; // 0x1
- field public static final String DATA_STALL_MIN_EVALUATE_INTERVAL = "data_stall_min_evaluate_interval";
- field public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD = "data_stall_valid_dns_time_threshold";
field public static final String DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD = "dynamic_power_savings_disable_threshold";
field public static final String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled";
field public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions";
@@ -2459,10 +2460,49 @@ package android.service.contentcapture {
package android.service.notification {
+ public final class Adjustment implements android.os.Parcelable {
+ ctor public Adjustment(String, String, android.os.Bundle, CharSequence, int);
+ ctor public Adjustment(@NonNull String, @NonNull String, @NonNull android.os.Bundle, @NonNull CharSequence, @NonNull android.os.UserHandle);
+ method public int describeContents();
+ method @NonNull public CharSequence getExplanation();
+ method @NonNull public String getKey();
+ method @NonNull public String getPackage();
+ method @NonNull public android.os.Bundle getSignals();
+ method public int getUser();
+ method @NonNull public android.os.UserHandle getUserHandle();
+ method public void writeToParcel(android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.Adjustment> CREATOR;
+ field public static final String KEY_CONTEXTUAL_ACTIONS = "key_contextual_actions";
+ field public static final String KEY_IMPORTANCE = "key_importance";
+ field public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria";
+ field public static final String KEY_TEXT_REPLIES = "key_text_replies";
+ field public static final String KEY_USER_SENTIMENT = "key_user_sentiment";
+ }
+
@Deprecated public abstract class ConditionProviderService extends android.app.Service {
method @Deprecated public boolean isBound();
}
+ public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService {
+ ctor public NotificationAssistantService();
+ method public final void adjustNotification(@NonNull android.service.notification.Adjustment);
+ method public final void adjustNotifications(@NonNull java.util.List<android.service.notification.Adjustment>);
+ method public void onActionInvoked(@NonNull String, @NonNull android.app.Notification.Action, int);
+ method public void onAllowedAdjustmentsChanged();
+ method @NonNull public final android.os.IBinder onBind(@Nullable android.content.Intent);
+ method public void onNotificationDirectReplied(@NonNull String);
+ method @Nullable public abstract android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification);
+ method @Nullable public android.service.notification.Adjustment onNotificationEnqueued(@NonNull android.service.notification.StatusBarNotification, @NonNull android.app.NotificationChannel);
+ method public void onNotificationExpansionChanged(@NonNull String, boolean, boolean);
+ method public abstract void onNotificationSnoozedUntilContext(@NonNull android.service.notification.StatusBarNotification, @NonNull String);
+ method public void onNotificationsSeen(@NonNull java.util.List<java.lang.String>);
+ method public void onSuggestedReplySent(@NonNull String, @NonNull CharSequence, int);
+ method public final void unsnoozeNotification(@NonNull String);
+ field public static final String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService";
+ field public static final int SOURCE_FROM_APP = 0; // 0x0
+ field public static final int SOURCE_FROM_ASSISTANT = 1; // 0x1
+ }
+
public abstract class NotificationListenerService extends android.app.Service {
method public void onNotificationRemoved(@NonNull android.service.notification.StatusBarNotification, @NonNull android.service.notification.NotificationListenerService.RankingMap, @NonNull android.service.notification.NotificationStats, int);
}
@@ -2658,6 +2698,7 @@ package android.telephony {
public class TelephonyManager {
method public int checkCarrierPrivilegesForPackage(String);
method public int getCarrierIdListVersion();
+ method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag();
method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion();
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void refreshUiccProfile();
method @Deprecated public void setCarrierTestOverride(String, String, String, String, String, String, String);
@@ -2840,31 +2881,6 @@ package android.util.proto {
method public void writeRawZigZag64(long);
}
- public final class ProtoInputStream extends android.util.proto.ProtoStream {
- ctor public ProtoInputStream(java.io.InputStream, int);
- ctor public ProtoInputStream(java.io.InputStream);
- ctor public ProtoInputStream(byte[]);
- method public int decodeZigZag32(int);
- method public long decodeZigZag64(long);
- method public String dumpDebugData();
- method public void end(long);
- method public int getFieldNumber();
- method public int getOffset();
- method public int getWireType();
- method public boolean isNextField(long) throws java.io.IOException;
- method public int nextField() throws java.io.IOException;
- method public boolean readBoolean(long) throws java.io.IOException;
- method public byte[] readBytes(long) throws java.io.IOException;
- method public double readDouble(long) throws java.io.IOException;
- method public float readFloat(long) throws java.io.IOException;
- method public int readInt(long) throws java.io.IOException;
- method public long readLong(long) throws java.io.IOException;
- method public String readString(long) throws java.io.IOException;
- method public void skip() throws java.io.IOException;
- method public long start(long) throws java.io.IOException;
- field public static final int NO_MORE_FIELDS = -1; // 0xffffffff
- }
-
public final class ProtoOutputStream extends android.util.proto.ProtoStream {
ctor public ProtoOutputStream();
ctor public ProtoOutputStream(int);
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 146cf0cd2da9..82d177aeede2 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -159,7 +159,7 @@ message Atom {
BiometricAcquired biometric_acquired = 87;
BiometricAuthenticated biometric_authenticated = 88;
BiometricErrorOccurred biometric_error_occurred = 89;
- Notification notification = 90;
+ // Atom number 90 is available for use.
BatteryHealthSnapshot battery_health_snapshot = 91;
SlowIo slow_io = 92;
BatteryCausedShutdown battery_caused_shutdown = 93;
@@ -3199,76 +3199,6 @@ message BiometricEnrolled {
optional bool success = 4;
}
-message Notification {
-
- // Type of notification event.
- enum Type {
- TYPE_UNKNOWN = 0;
- // Notification became visible to the user.
- TYPE_OPEN = 1;
- // Notification became hidden.
- TYPE_CLOSE = 2;
- // Notification switched to detail mode.
- TYPE_DETAIL = 3;
- // Notification was clicked.
- TYPE_ACTION = 4;
- // Notification was dismissed.
- TYPE_DISMISS = 5;
- // Notification switched to summary mode. The enum value of 14 is to
- // match that of metrics_constants.
- TYPE_COLLAPSE = 14;
- }
- optional Type type = 1;
-
- // Package name associated with the notification.
- optional string package_name = 2;
-
- // Tag associated with notification.
- optional string tag = 3;
-
- // Application-supplied ID associated with the notification.
- optional int32 id = 4;
-
- // Index of notification in the notification panel.
- optional int32 shade_index = 5;
-
- // The number of notifications in the notification panel.
- optional int32 shade_count = 6;
-
- // Importance for the notification.
- optional int32 importance = 7;
-
- // ID for the notification channel.
- optional string channel_id = 8;
-
- // Importance for the notification channel.
- optional int32 channel_importance = 9;
-
- // Application-supplied ID associated with the notifications group.
- optional string group_id = 10;
-
- // Whether notification was a group summary.
- optional bool group_summary = 11;
-
- // Reason for dismissal of a notification. This field is only meaningful for
- // TYPE_DISMISS events.
- optional int32 dismiss_reason = 12;
-
- // The first post time of notification, stable across updates.
- optional int64 creation_millis = 13;
-
- // The most recent interruption time, or the creation time if no updates.
- // Differs from update_millis because updates are filtered based on whether
- // they actually interrupted the user.
- optional int64 interruption_millis = 14;
-
- // The most recent update time, or the creation time if no updates.
- optional int64 update_millis = 15;
-
- // The most recent visibility event.
- optional int64 visible_millis = 16;
-}
-
/*
* Logs when a flag flip update occurrs. Used for mainline modules that update via flag flips.
*/
@@ -3321,13 +3251,12 @@ message BinaryPushStateChanged {
INSTALLER_ROLLBACK_BOOT_TRIGGERED_FAILURE = 14;
INSTALLER_ROLLBACK_SUCCESS = 15;
INSTALLER_ROLLBACK_FAILURE = 16;
- INSTALLER_ROLLBACK_CANCEL_STAGED_REMOVE_FROM_QUEUE = 17;
- INSTALLER_ROLLBACK_CANCEL_STAGED_DELETE_SESSION_INITIATED = 18;
- INSTALLER_ROLLBACK_CANCEL_STAGED_DELETE_SESSION_SUCCESS = 19;
- INSTALLER_ROLLBACK_CANCEL_STAGED_DELETE_SESSION_FAILURE = 20;
- INSTALL_STAGED_CANCEL_REQUESTED = 21;
- INSTALL_STAGED_CANCEL_SUCCESS = 22;
- INSTALL_STAGED_CANCEL_FAILURE = 23;
+ INSTALLER_ROLLBACK_STAGED_CANCEL_REQUESTED = 17;
+ INSTALLER_ROLLBACK_STAGED_CANCEL_SUCCESS = 18;
+ INSTALLER_ROLLBACK_STAGED_CANCEL_FAILURE = 19;
+ INSTALL_STAGED_CANCEL_REQUESTED = 20;
+ INSTALL_STAGED_CANCEL_SUCCESS = 21;
+ INSTALL_STAGED_CANCEL_FAILURE = 22;
}
optional State state = 6;
// Possible experiment ids for monitoring this push.
@@ -4989,6 +4918,8 @@ message AppCompacted {
UNKNOWN = 0;
SOME = 1;
FULL = 2;
+ PERSISTENT = 3;
+ BFGS = 4;
}
optional Action action = 3;
@@ -5816,13 +5747,12 @@ message TrainInfo {
INSTALLER_ROLLBACK_BOOT_TRIGGERED_FAILURE = 14;
INSTALLER_ROLLBACK_SUCCESS = 15;
INSTALLER_ROLLBACK_FAILURE = 16;
- INSTALLER_ROLLBACK_CANCEL_STAGED_REMOVE_FROM_QUEUE = 17;
- INSTALLER_ROLLBACK_CANCEL_STAGED_DELETE_SESSION_INITIATED = 18;
- INSTALLER_ROLLBACK_CANCEL_STAGED_DELETE_SESSION_SUCCESS = 19;
- INSTALLER_ROLLBACK_CANCEL_STAGED_DELETE_SESSION_FAILURE = 20;
- INSTALL_STAGED_CANCEL_REQUESTED = 21;
- INSTALL_STAGED_CANCEL_SUCCESS = 22;
- INSTALL_STAGED_CANCEL_FAILURE = 23;
+ INSTALLER_ROLLBACK_STAGED_CANCEL_REQUESTED = 17;
+ INSTALLER_ROLLBACK_STAGED_CANCEL_SUCCESS = 18;
+ INSTALLER_ROLLBACK_STAGED_CANCEL_FAILURE = 19;
+ INSTALL_STAGED_CANCEL_REQUESTED = 20;
+ INSTALL_STAGED_CANCEL_SUCCESS = 21;
+ INSTALL_STAGED_CANCEL_FAILURE = 22;
}
optional Status status = 4;
}
diff --git a/config/preloaded-classes b/config/preloaded-classes
index abdbab2a29eb..5910c284608d 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -756,7 +756,6 @@ android.content.ActivityNotFoundException
android.content.AsyncQueryHandler$WorkerArgs
android.content.AsyncQueryHandler$WorkerHandler
android.content.AsyncQueryHandler
-android.content.AsyncTaskLoader$LoadTask
android.content.AsyncTaskLoader
android.content.BroadcastReceiver$PendingResult$1
android.content.BroadcastReceiver$PendingResult
@@ -3186,7 +3185,6 @@ android.speech.tts.ITextToSpeechCallback
android.speech.tts.ITextToSpeechService$Stub$Proxy
android.speech.tts.ITextToSpeechService
android.speech.tts.TextToSpeech$Action
-android.speech.tts.TextToSpeech$Connection$SetupConnectionAsyncTask
android.speech.tts.TextToSpeech$Connection
android.speech.tts.TextToSpeech$OnInitListener
android.speech.tts.TextToSpeech
diff --git a/config/preloaded-classes-blacklist b/config/preloaded-classes-blacklist
index 59f605d8e490..cd5a1205d122 100644
--- a/config/preloaded-classes-blacklist
+++ b/config/preloaded-classes-blacklist
@@ -1,6 +1,8 @@
+android.content.AsyncTaskLoader$LoadTask
android.net.ConnectivityThread$Singleton
android.os.AsyncTask
android.os.FileObserver
+android.speech.tts.TextToSpeech$Connection$SetupConnectionAsyncTask
android.widget.Magnifier
sun.nio.fs.UnixChannelFactory
com.android.server.SystemConfig$PermissionEntry
diff --git a/core/java/android/accounts/Account.java b/core/java/android/accounts/Account.java
index 26377642f2f9..c822d20445ec 100644
--- a/core/java/android/accounts/Account.java
+++ b/core/java/android/accounts/Account.java
@@ -93,6 +93,12 @@ public class Account implements Parcelable {
public Account(Parcel in) {
this.name = in.readString();
this.type = in.readString();
+ if (TextUtils.isEmpty(name)) {
+ throw new android.os.BadParcelableException("the name must not be empty: " + name);
+ }
+ if (TextUtils.isEmpty(type)) {
+ throw new android.os.BadParcelableException("the type must not be empty: " + type);
+ }
this.accessId = in.readString();
if (accessId != null) {
synchronized (sAccessedAccounts) {
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 883bcb896841..9079ace4b8a3 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -132,6 +132,7 @@ import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.Toolbar;
+import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IVoiceInteractor;
@@ -820,8 +821,6 @@ public class Activity extends ContextThemeWrapper
/** {@code true} if the activity lifecycle is in a state which supports picture-in-picture.
* This only affects the client-side exception, the actual state check still happens in AMS. */
private boolean mCanEnterPictureInPicture = false;
- /** true if the activity is going through a transient pause */
- /*package*/ boolean mTemporaryPause = false;
/** true if the activity is being destroyed in order to recreate it with a new configuration */
/*package*/ boolean mChangingConfigurations = false;
@UnsupportedAppUsage
@@ -4906,6 +4905,17 @@ public class Activity extends ContextThemeWrapper
mTaskDescription.setNavigationBarColor(navigationBarColor);
}
+ final int targetSdk = getApplicationInfo().targetSdkVersion;
+ final boolean targetPreQ = targetSdk < Build.VERSION_CODES.Q;
+ if (!targetPreQ) {
+ mTaskDescription.setEnsureStatusBarContrastWhenTransparent(a.getBoolean(
+ R.styleable.ActivityTaskDescription_ensureStatusBarContrastWhenTransparent,
+ false));
+ mTaskDescription.setEnsureNavigationBarContrastWhenTransparent(a.getBoolean(
+ R.styleable.ActivityTaskDescription_ensureNavigationBarContrastWhenTransparent,
+ true));
+ }
+
a.recycle();
setTaskDescription(mTaskDescription);
}
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 395c867de9d7..b80f7813640c 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -986,6 +986,8 @@ public class ActivityManager {
private int mColorBackground;
private int mStatusBarColor;
private int mNavigationBarColor;
+ private boolean mEnsureStatusBarContrastWhenTransparent;
+ private boolean mEnsureNavigationBarContrastWhenTransparent;
/**
* Creates the TaskDescription to the specified values.
@@ -998,7 +1000,7 @@ public class ActivityManager {
*/
@Deprecated
public TaskDescription(String label, Bitmap icon, int colorPrimary) {
- this(label, icon, 0, null, colorPrimary, 0, 0, 0);
+ this(label, icon, 0, null, colorPrimary, 0, 0, 0, false, false);
if ((colorPrimary != 0) && (Color.alpha(colorPrimary) != 255)) {
throw new RuntimeException("A TaskDescription's primary color should be opaque");
}
@@ -1014,7 +1016,7 @@ public class ActivityManager {
* opaque.
*/
public TaskDescription(String label, @DrawableRes int iconRes, int colorPrimary) {
- this(label, null, iconRes, null, colorPrimary, 0, 0, 0);
+ this(label, null, iconRes, null, colorPrimary, 0, 0, 0, false, false);
if ((colorPrimary != 0) && (Color.alpha(colorPrimary) != 255)) {
throw new RuntimeException("A TaskDescription's primary color should be opaque");
}
@@ -1029,7 +1031,7 @@ public class ActivityManager {
*/
@Deprecated
public TaskDescription(String label, Bitmap icon) {
- this(label, icon, 0, null, 0, 0, 0, 0);
+ this(label, icon, 0, null, 0, 0, 0, 0, false, false);
}
/**
@@ -1040,7 +1042,7 @@ public class ActivityManager {
* activity.
*/
public TaskDescription(String label, @DrawableRes int iconRes) {
- this(label, null, iconRes, null, 0, 0, 0, 0);
+ this(label, null, iconRes, null, 0, 0, 0, 0, false, false);
}
/**
@@ -1049,19 +1051,21 @@ public class ActivityManager {
* @param label A label and description of the current state of this activity.
*/
public TaskDescription(String label) {
- this(label, null, 0, null, 0, 0, 0, 0);
+ this(label, null, 0, null, 0, 0, 0, 0, false, false);
}
/**
* Creates an empty TaskDescription.
*/
public TaskDescription() {
- this(null, null, 0, null, 0, 0, 0, 0);
+ this(null, null, 0, null, 0, 0, 0, 0, false, false);
}
/** @hide */
public TaskDescription(String label, Bitmap bitmap, int iconRes, String iconFilename,
- int colorPrimary, int colorBackground, int statusBarColor, int navigationBarColor) {
+ int colorPrimary, int colorBackground, int statusBarColor, int navigationBarColor,
+ boolean ensureStatusBarContrastWhenTransparent,
+ boolean ensureNavigationBarContrastWhenTransparent) {
mLabel = label;
mIcon = bitmap;
mIconRes = iconRes;
@@ -1070,6 +1074,9 @@ public class ActivityManager {
mColorBackground = colorBackground;
mStatusBarColor = statusBarColor;
mNavigationBarColor = navigationBarColor;
+ mEnsureStatusBarContrastWhenTransparent = ensureStatusBarContrastWhenTransparent;
+ mEnsureNavigationBarContrastWhenTransparent =
+ ensureNavigationBarContrastWhenTransparent;
}
/**
@@ -1092,6 +1099,9 @@ public class ActivityManager {
mColorBackground = other.mColorBackground;
mStatusBarColor = other.mStatusBarColor;
mNavigationBarColor = other.mNavigationBarColor;
+ mEnsureStatusBarContrastWhenTransparent = other.mEnsureStatusBarContrastWhenTransparent;
+ mEnsureNavigationBarContrastWhenTransparent =
+ other.mEnsureNavigationBarContrastWhenTransparent;
}
/**
@@ -1114,6 +1124,9 @@ public class ActivityManager {
if (other.mNavigationBarColor != 0) {
mNavigationBarColor = other.mNavigationBarColor;
}
+ mEnsureStatusBarContrastWhenTransparent = other.mEnsureStatusBarContrastWhenTransparent;
+ mEnsureNavigationBarContrastWhenTransparent =
+ other.mEnsureNavigationBarContrastWhenTransparent;
}
private TaskDescription(Parcel source) {
@@ -1272,6 +1285,37 @@ public class ActivityManager {
return mNavigationBarColor;
}
+ /**
+ * @hide
+ */
+ public boolean getEnsureStatusBarContrastWhenTransparent() {
+ return mEnsureStatusBarContrastWhenTransparent;
+ }
+
+ /**
+ * @hide
+ */
+ public void setEnsureStatusBarContrastWhenTransparent(
+ boolean ensureStatusBarContrastWhenTransparent) {
+ mEnsureStatusBarContrastWhenTransparent = ensureStatusBarContrastWhenTransparent;
+ }
+
+ /**
+ * @hide
+ */
+ public boolean getEnsureNavigationBarContrastWhenTransparent() {
+ return mEnsureNavigationBarContrastWhenTransparent;
+ }
+
+ /**
+ * @hide
+ */
+ public void setEnsureNavigationBarContrastWhenTransparent(
+ boolean ensureNavigationBarContrastWhenTransparent) {
+ mEnsureNavigationBarContrastWhenTransparent =
+ ensureNavigationBarContrastWhenTransparent;
+ }
+
/** @hide */
public void saveToXml(XmlSerializer out) throws IOException {
if (mLabel != null) {
@@ -1332,6 +1376,8 @@ public class ActivityManager {
dest.writeInt(mColorBackground);
dest.writeInt(mStatusBarColor);
dest.writeInt(mNavigationBarColor);
+ dest.writeBoolean(mEnsureStatusBarContrastWhenTransparent);
+ dest.writeBoolean(mEnsureNavigationBarContrastWhenTransparent);
if (mIconFilename == null) {
dest.writeInt(0);
} else {
@@ -1348,6 +1394,8 @@ public class ActivityManager {
mColorBackground = source.readInt();
mStatusBarColor = source.readInt();
mNavigationBarColor = source.readInt();
+ mEnsureStatusBarContrastWhenTransparent = source.readBoolean();
+ mEnsureNavigationBarContrastWhenTransparent = source.readBoolean();
mIconFilename = source.readInt() > 0 ? source.readString() : null;
}
@@ -1366,8 +1414,11 @@ public class ActivityManager {
return "TaskDescription Label: " + mLabel + " Icon: " + mIcon +
" IconRes: " + mIconRes + " IconFilename: " + mIconFilename +
" colorPrimary: " + mColorPrimary + " colorBackground: " + mColorBackground +
- " statusBarColor: " + mColorBackground +
- " navigationBarColor: " + mNavigationBarColor;
+ " statusBarColor: " + mStatusBarColor + (
+ mEnsureStatusBarContrastWhenTransparent ? " (contrast when transparent)"
+ : "") + " navigationBarColor: " + mNavigationBarColor + (
+ mEnsureNavigationBarContrastWhenTransparent
+ ? " (contrast when transparent)" : "");
}
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 38006dc5b943..b37d117238af 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -615,7 +615,6 @@ public final class ActivityThread extends ClientTransactionHandler {
sb.append(", finished=").append(activity.isFinishing());
sb.append(", destroyed=").append(activity.isDestroyed());
sb.append(", startedActivity=").append(activity.mStartedActivity);
- sb.append(", temporaryPause=").append(activity.mTemporaryPause);
sb.append(", changingConfigurations=").append(activity.mChangingConfigurations);
sb.append("}");
}
@@ -3319,35 +3318,15 @@ public final class ActivityThread extends ClientTransactionHandler {
}
}
- @UnsupportedAppUsage
- void performNewIntents(IBinder token, List<ReferrerIntent> intents, boolean andPause) {
+ @Override
+ public void handleNewIntent(IBinder token, List<ReferrerIntent> intents) {
final ActivityClientRecord r = mActivities.get(token);
if (r == null) {
return;
}
- final boolean resumed = !r.paused;
- if (resumed) {
- r.activity.mTemporaryPause = true;
- performPauseActivityIfNeeded(r, "performNewIntents");
- }
checkAndBlockForNetworkAccess();
deliverNewIntents(r, intents);
- if (resumed) {
- performResumeActivity(token, false, "performNewIntents");
- r.activity.mTemporaryPause = false;
- } else if (andPause) {
- // In this case the activity was in the paused state when we delivered the intent,
- // to guarantee onResume gets called after onNewIntent we temporarily resume the
- // activity and pause again as the caller wanted.
- performResumeActivity(token, false, "performNewIntents");
- performPauseActivityIfNeeded(r, "performNewIntents");
- }
- }
-
- @Override
- public void handleNewIntent(IBinder token, List<ReferrerIntent> intents, boolean andPause) {
- performNewIntents(token, intents, andPause);
}
public void handleRequestAssistContextExtras(RequestAssistContextExtras cmd) {
@@ -4662,7 +4641,6 @@ public final class ActivityThread extends ClientTransactionHandler {
try {
// Now we are idle.
r.activity.mCalled = false;
- r.activity.mTemporaryPause = true;
mInstrumentation.callActivityOnPause(r.activity);
if (!r.activity.mCalled) {
throw new SuperNotCalledException(
@@ -4684,7 +4662,6 @@ public final class ActivityThread extends ClientTransactionHandler {
deliverResults(r, results, reason);
if (resumed) {
r.activity.performResume(false, reason);
- r.activity.mTemporaryPause = false;
}
}
}
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java
index 70badfae4a20..9dc8b45a71dc 100644
--- a/core/java/android/app/ClientTransactionHandler.java
+++ b/core/java/android/app/ClientTransactionHandler.java
@@ -150,8 +150,7 @@ public abstract class ClientTransactionHandler {
Configuration overrideConfig);
/** Deliver new intent. */
- public abstract void handleNewIntent(IBinder token, List<ReferrerIntent> intents,
- boolean andPause);
+ public abstract void handleNewIntent(IBinder token, List<ReferrerIntent> intents);
/** Deliver picture-in-picture mode change notification. */
public abstract void handlePictureInPictureModeChanged(IBinder token, boolean isInPipMode,
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 7884872a7ef3..b3c2429004b8 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -70,9 +70,9 @@ interface INotificationManager
boolean areNotificationsEnabled(String pkg);
int getPackageImportance(String pkg);
- List<String> getAllowedAssistantCapabilities(String pkg);
- void allowAssistantCapability(String adjustmentType);
- void disallowAssistantCapability(String adjustmentType);
+ List<String> getAllowedAssistantAdjustments(String pkg);
+ void allowAssistantAdjustment(String adjustmentType);
+ void disallowAssistantAdjustment(String adjustmentType);
boolean shouldHideSilentStatusIcons(String callingPkg);
void setHideSilentStatusIcons(boolean hide);
diff --git a/core/java/android/app/LocalActivityManager.java b/core/java/android/app/LocalActivityManager.java
index a52fb1a07b84..94b1d7770307 100644
--- a/core/java/android/app/LocalActivityManager.java
+++ b/core/java/android/app/LocalActivityManager.java
@@ -339,7 +339,7 @@ public class LocalActivityManager {
ArrayList<ReferrerIntent> intents = new ArrayList<>(1);
intents.add(new ReferrerIntent(intent, mParent.getPackageName()));
if (localLOGV) Log.v(TAG, r.id + ": new intent");
- mActivityThread.performNewIntents(r, intents, false /* andPause */);
+ mActivityThread.handleNewIntent(r, intents);
r.intent = intent;
moveToState(r, mCurState);
if (mSingleMode) {
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 0ab1a85372f5..a90185cf1468 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -618,9 +618,11 @@ public class Notification implements Parcelable
public static final int FLAG_CAN_COLORIZE = 0x00000800;
/**
- * Bit to be bitswised-ored into the {@link #flags} field that should be
- * set if this notification can be shown as a bubble.
- * @hide
+ * Bit to be bitswised-ored into the {@link #flags} field that should be set if this
+ * notification is showing as a bubble. This will be set by the system if it is determined
+ * that your notification is allowed to be a bubble.
+ *
+ * @see {@link Notification.Builder#setBubbleMetadata(BubbleMetadata)}
*/
public static final int FLAG_BUBBLE = 0x00001000;
@@ -3578,9 +3580,9 @@ public class Notification implements Parcelable
* <p>This data will be ignored unless the notification is posted to a channel that
* allows {@link NotificationChannel#canBubble() bubbles}.</p>
*
- * <b>Notifications with a valid and allowed bubble metadata will display in collapsed state
- * outside of the notification shade on unlocked devices. When a user interacts with the
- * collapsed state, the bubble intent will be invoked and displayed.</b>
+ * <p>Notifications allowed to bubble that have valid bubble metadata will display in
+ * collapsed state outside of the notification shade on unlocked devices. When a user
+ * interacts with the collapsed state, the bubble intent will be invoked and displayed.</p>
*/
@NonNull
public Builder setBubbleMetadata(@Nullable BubbleMetadata data) {
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index 0bec21fcda90..dd39376f80ca 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -1169,6 +1169,7 @@ public class NotificationManager {
* @hide
*/
@SystemApi
+ @TestApi
public boolean isNotificationAssistantAccessGranted(@NonNull ComponentName assistant) {
INotificationManager service = getService();
try {
@@ -1204,10 +1205,37 @@ public class NotificationManager {
* @hide
*/
@SystemApi
- public @NonNull @Adjustment.Keys List<String> getAllowedAssistantCapabilities() {
+ @TestApi
+ public @NonNull @Adjustment.Keys List<String> getAllowedAssistantAdjustments() {
+ INotificationManager service = getService();
+ try {
+ return service.getAllowedAssistantAdjustments(mContext.getOpPackageName());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * @hide
+ */
+ @TestApi
+ public void allowAssistantAdjustment(String capability) {
INotificationManager service = getService();
try {
- return service.getAllowedAssistantCapabilities(mContext.getOpPackageName());
+ service.allowAssistantAdjustment(capability);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * @hide
+ */
+ @TestApi
+ public void disallowAssistantAdjustment(String capability) {
+ INotificationManager service = getService();
+ try {
+ service.disallowAssistantAdjustment(capability);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1310,6 +1338,7 @@ public class NotificationManager {
* @hide
*/
@SystemApi
+ @TestApi
public void setNotificationAssistantAccessGranted(@Nullable ComponentName assistant,
boolean granted) {
INotificationManager service = getService();
@@ -1332,6 +1361,7 @@ public class NotificationManager {
/** @hide */
@SystemApi
+ @TestApi
public @Nullable ComponentName getAllowedNotificationAssistant() {
INotificationManager service = getService();
try {
diff --git a/core/java/android/app/job/JobInfo.java b/core/java/android/app/job/JobInfo.java
index 907d1f727bd4..a8f89df8058c 100644
--- a/core/java/android/app/job/JobInfo.java
+++ b/core/java/android/app/job/JobInfo.java
@@ -1596,6 +1596,16 @@ public class JobInfo implements Parcelable {
}
return new JobInfo(this);
}
+
+ /**
+ * @hide
+ */
+ public String summarize() {
+ final String service = (mJobService != null)
+ ? mJobService.flattenToShortString()
+ : "null";
+ return "JobInfo.Builder{job:" + mJobId + "/" + service + "}";
+ }
}
/**
diff --git a/core/java/android/app/servertransaction/NewIntentItem.java b/core/java/android/app/servertransaction/NewIntentItem.java
index 4c7f56d4b076..2d1883836d02 100644
--- a/core/java/android/app/servertransaction/NewIntentItem.java
+++ b/core/java/android/app/servertransaction/NewIntentItem.java
@@ -16,6 +16,8 @@
package android.app.servertransaction;
+import static android.app.servertransaction.ActivityLifecycleItem.ON_RESUME;
+
import android.annotation.UnsupportedAppUsage;
import android.app.ClientTransactionHandler;
import android.os.IBinder;
@@ -36,19 +38,17 @@ public class NewIntentItem extends ClientTransactionItem {
@UnsupportedAppUsage
private List<ReferrerIntent> mIntents;
- private boolean mPause;
- // TODO(lifecycler): Switch new intent handling to this scheme.
- /*@Override
+ @Override
public int getPostExecutionState() {
return ON_RESUME;
- }*/
+ }
@Override
public void execute(ClientTransactionHandler client, IBinder token,
PendingTransactionActions pendingActions) {
Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityNewIntent");
- client.handleNewIntent(token, mIntents, mPause);
+ client.handleNewIntent(token, mIntents);
Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
}
@@ -58,13 +58,12 @@ public class NewIntentItem extends ClientTransactionItem {
private NewIntentItem() {}
/** Obtain an instance initialized with provided params. */
- public static NewIntentItem obtain(List<ReferrerIntent> intents, boolean pause) {
+ public static NewIntentItem obtain(List<ReferrerIntent> intents) {
NewIntentItem instance = ObjectPool.obtain(NewIntentItem.class);
if (instance == null) {
instance = new NewIntentItem();
}
instance.mIntents = intents;
- instance.mPause = pause;
return instance;
}
@@ -72,7 +71,6 @@ public class NewIntentItem extends ClientTransactionItem {
@Override
public void recycle() {
mIntents = null;
- mPause = false;
ObjectPool.recycle(this);
}
@@ -82,13 +80,11 @@ public class NewIntentItem extends ClientTransactionItem {
/** Write to Parcel. */
@Override
public void writeToParcel(Parcel dest, int flags) {
- dest.writeBoolean(mPause);
dest.writeTypedList(mIntents, flags);
}
/** Read from Parcel. */
private NewIntentItem(Parcel in) {
- mPause = in.readBoolean();
mIntents = in.createTypedArrayList(ReferrerIntent.CREATOR);
}
@@ -112,19 +108,18 @@ public class NewIntentItem extends ClientTransactionItem {
return false;
}
final NewIntentItem other = (NewIntentItem) o;
- return mPause == other.mPause && Objects.equals(mIntents, other.mIntents);
+ return Objects.equals(mIntents, other.mIntents);
}
@Override
public int hashCode() {
int result = 17;
- result = 31 * result + (mPause ? 1 : 0);
result = 31 * result + mIntents.hashCode();
return result;
}
@Override
public String toString() {
- return "NewIntentItem{pause=" + mPause + ",intents=" + mIntents + "}";
+ return "NewIntentItem{intents=" + mIntents + "}";
}
}
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 791c55196ecf..00f1e43c8493 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -3398,7 +3398,7 @@ public abstract class ContentResolver implements ContentInterface {
*
* @param mimeType Valid, concrete MIME type.
*/
- public final @NonNull TypeInfo getTypeInfo(@NonNull String mimeType) {
+ public final @NonNull MimeTypeInfo getTypeInfo(@NonNull String mimeType) {
Objects.requireNonNull(mimeType);
return MimeIconUtils.getTypeInfo(mimeType);
}
@@ -3407,13 +3407,13 @@ public abstract class ContentResolver implements ContentInterface {
* Detailed description of a specific MIME type, including an icon and label
* that describe the type.
*/
- public static final class TypeInfo {
+ public static final class MimeTypeInfo {
private final Icon mIcon;
private final CharSequence mLabel;
private final CharSequence mContentDescription;
/** {@hide} */
- public TypeInfo(@NonNull Icon icon, @NonNull CharSequence label,
+ public MimeTypeInfo(@NonNull Icon icon, @NonNull CharSequence label,
@NonNull CharSequence contentDescription) {
mIcon = Objects.requireNonNull(icon);
mLabel = Objects.requireNonNull(label);
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index d87171e39595..8628d32123bc 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -4731,6 +4731,18 @@ public class Intent implements Parcelable, Cloneable {
@SdkConstant(SdkConstantType.INTENT_CATEGORY)
public static final String CATEGORY_APP_MUSIC = "android.intent.category.APP_MUSIC";
+ /**
+ * Used with {@link #ACTION_MAIN} to launch the files application.
+ * The activity should be able to browse and manage files stored on the device.
+ * <p>NOTE: This should not be used as the primary key of an Intent,
+ * since it will not result in the app launching with the correct
+ * action and category. Instead, use this with
+ * {@link #makeMainSelectorActivity(String, String)} to generate a main
+ * Intent with this category in the selector.</p>
+ */
+ @SdkConstant(SdkConstantType.INTENT_CATEGORY)
+ public static final String CATEGORY_APP_FILES = "android.intent.category.APP_FILES";
+
// ---------------------------------------------------------------------
// ---------------------------------------------------------------------
// Standard extra data keys.
diff --git a/core/java/android/content/om/OverlayInfo.java b/core/java/android/content/om/OverlayInfo.java
index fc79a425e861..639335e53ae5 100644
--- a/core/java/android/content/om/OverlayInfo.java
+++ b/core/java/android/content/om/OverlayInfo.java
@@ -451,7 +451,7 @@ public final class OverlayInfo implements Parcelable {
public String toString() {
return "OverlayInfo { overlay=" + packageName + ", targetPackage=" + targetPackageName
+ ((targetOverlayableName == null) ? ""
- : ", targetOverlyabale=" + targetOverlayableName)
+ : ", targetOverlayable=" + targetOverlayableName)
+ ", state=" + state + " (" + stateToString(state) + "), userId=" + userId + " }";
}
}
diff --git a/core/java/android/content/pm/PackageManagerInternal.java b/core/java/android/content/pm/PackageManagerInternal.java
index 5f5473583907..e14d7e895f17 100644
--- a/core/java/android/content/pm/PackageManagerInternal.java
+++ b/core/java/android/content/pm/PackageManagerInternal.java
@@ -193,8 +193,10 @@ public abstract class PackageManagerInternal {
*
* @param packageName package name of the default home, or {@code null} to remove
* @param userId the user id
+ * @param callback the callback made after the default home as been updated
*/
- void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId);
+ void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
+ @NonNull Consumer<Boolean> callback);
}
/**
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 2b23e7a2a633..b2b4e0e2edfb 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -591,8 +591,6 @@ public class PackageParser {
*/
public interface Callback {
boolean hasFeature(String feature);
- String[] getOverlayPaths(String targetPackageName, String targetPath);
- String[] getOverlayApks(String targetPackageName);
}
/**
@@ -609,14 +607,6 @@ public class PackageParser {
@Override public boolean hasFeature(String feature) {
return mPm.hasSystemFeature(feature);
}
-
- @Override public String[] getOverlayPaths(String targetPackageName, String targetPath) {
- return null;
- }
-
- @Override public String[] getOverlayApks(String targetPackageName) {
- return null;
- }
}
/**
@@ -1168,19 +1158,7 @@ public class PackageParser {
}
final byte[] bytes = IoUtils.readFileAsByteArray(cacheFile.getAbsolutePath());
- Package p = fromCacheEntry(bytes);
- if (mCallback != null) {
- String[] overlayApks = mCallback.getOverlayApks(p.packageName);
- if (overlayApks != null && overlayApks.length > 0) {
- for (String overlayApk : overlayApks) {
- // If a static RRO is updated, return null.
- if (!isCacheUpToDate(new File(overlayApk), cacheFile)) {
- return null;
- }
- }
- }
- }
- return p;
+ return fromCacheEntry(bytes);
} catch (Throwable e) {
Slog.w(TAG, "Error reading package cache: ", e);
@@ -1354,7 +1332,7 @@ public class PackageParser {
final Resources res = new Resources(assets, mMetrics, null);
final String[] outError = new String[1];
- final Package pkg = parseBaseApk(apkPath, res, parser, flags, outError);
+ final Package pkg = parseBaseApk(res, parser, flags, outError);
if (pkg == null) {
throw new PackageParserException(mParseError,
apkPath + " (at " + parser.getPositionDescription() + "): " + outError[0]);
@@ -1602,8 +1580,8 @@ public class PackageParser {
final String apkPath = fd != null ? debugPathName : apkFile.getAbsolutePath();
XmlResourceParser parser = null;
+ ApkAssets apkAssets = null;
try {
- final ApkAssets apkAssets;
try {
apkAssets = fd != null
? ApkAssets.loadFromFd(fd, debugPathName, false, false)
@@ -1640,7 +1618,13 @@ public class PackageParser {
"Failed to parse " + apkPath, e);
} finally {
IoUtils.closeQuietly(parser);
- // TODO(b/72056911): Implement and call close() on ApkAssets.
+ if (apkAssets != null) {
+ try {
+ apkAssets.close();
+ } catch (Throwable ignored) {
+ }
+ }
+ // TODO(b/72056911): Implement AutoCloseable on ApkAssets.
}
}
@@ -1911,7 +1895,6 @@ public class PackageParser {
* need to consider whether they should be supported by split APKs and child
* packages.
*
- * @param apkPath The package apk file path
* @param res The resources from which to resolve values
* @param parser The manifest parser
* @param flags Flags how to parse
@@ -1921,8 +1904,7 @@ public class PackageParser {
* @throws XmlPullParserException
* @throws IOException
*/
- @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
- private Package parseBaseApk(String apkPath, Resources res, XmlResourceParser parser, int flags,
+ private Package parseBaseApk(Resources res, XmlResourceParser parser, int flags,
String[] outError) throws XmlPullParserException, IOException {
final String splitName;
final String pkgName;
@@ -1942,15 +1924,6 @@ public class PackageParser {
return null;
}
- if (mCallback != null) {
- String[] overlayPaths = mCallback.getOverlayPaths(pkgName, apkPath);
- if (overlayPaths != null && overlayPaths.length > 0) {
- for (String overlayPath : overlayPaths) {
- res.getAssets().addOverlayPath(overlayPath);
- }
- }
- }
-
final Package pkg = new Package(pkgName);
TypedArray sa = res.obtainAttributes(parser,
diff --git a/core/java/android/content/res/ApkAssets.java b/core/java/android/content/res/ApkAssets.java
index dc1d052da64f..69462ab99483 100644
--- a/core/java/android/content/res/ApkAssets.java
+++ b/core/java/android/content/res/ApkAssets.java
@@ -36,7 +36,9 @@ import java.io.IOException;
*/
public final class ApkAssets {
@GuardedBy("this") private final long mNativePtr;
- @GuardedBy("this") private StringBlock mStringBlock;
+ @GuardedBy("this") private final StringBlock mStringBlock;
+
+ @GuardedBy("this") private boolean mOpen = true;
/**
* Creates a new ApkAssets instance from the given path on disk.
@@ -180,7 +182,20 @@ public final class ApkAssets {
@Override
protected void finalize() throws Throwable {
- nativeDestroy(mNativePtr);
+ close();
+ }
+
+ /**
+ * Closes this class and the contained {@link #mStringBlock}.
+ */
+ public void close() throws Throwable {
+ synchronized (this) {
+ if (mOpen) {
+ mOpen = false;
+ mStringBlock.close();
+ nativeDestroy(mNativePtr);
+ }
+ }
}
private static native long nativeLoad(
diff --git a/core/java/android/content/res/StringBlock.java b/core/java/android/content/res/StringBlock.java
index b5ec0f9f3712..b7bc8229fa45 100644
--- a/core/java/android/content/res/StringBlock.java
+++ b/core/java/android/content/res/StringBlock.java
@@ -18,13 +18,34 @@ package android.content.res;
import android.annotation.UnsupportedAppUsage;
import android.graphics.Color;
-import android.text.*;
-import android.text.style.*;
-import android.util.Log;
-import android.util.SparseArray;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
+import android.text.Annotation;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.SpannedString;
+import android.text.TextPaint;
+import android.text.TextUtils;
+import android.text.style.AbsoluteSizeSpan;
+import android.text.style.BackgroundColorSpan;
+import android.text.style.BulletSpan;
+import android.text.style.CharacterStyle;
+import android.text.style.ForegroundColorSpan;
+import android.text.style.LineHeightSpan;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.StrikethroughSpan;
+import android.text.style.StyleSpan;
+import android.text.style.SubscriptSpan;
+import android.text.style.SuperscriptSpan;
+import android.text.style.TextAppearanceSpan;
+import android.text.style.TypefaceSpan;
+import android.text.style.URLSpan;
+import android.text.style.UnderlineSpan;
+import android.util.Log;
+import android.util.SparseArray;
+
+import com.android.internal.annotations.GuardedBy;
import java.util.Arrays;
@@ -40,8 +61,12 @@ final class StringBlock {
private final long mNative;
private final boolean mUseSparse;
private final boolean mOwnsNative;
+
private CharSequence[] mStrings;
private SparseArray<CharSequence> mSparseStrings;
+
+ @GuardedBy("this") private boolean mOpen = true;
+
StyleIDs mStyleIDs = null;
public StringBlock(byte[] data, boolean useSparse) {
@@ -141,12 +166,23 @@ final class StringBlock {
}
}
+ @Override
protected void finalize() throws Throwable {
try {
super.finalize();
} finally {
- if (mOwnsNative) {
- nativeDestroy(mNative);
+ close();
+ }
+ }
+
+ public void close() throws Throwable {
+ synchronized (this) {
+ if (mOpen) {
+ mOpen = false;
+
+ if (mOwnsNative) {
+ nativeDestroy(mNative);
+ }
}
}
}
diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java
index 014bc242e17a..3523e956656a 100644
--- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java
+++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java
@@ -52,7 +52,7 @@ public class SQLiteQueryBuilder {
private static final Pattern sLimitPattern =
Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");
private static final Pattern sAggregationPattern = Pattern.compile(
- "(?i)(AVG|COUNT|MAX|MIN|SUM|TOTAL)\\((.+)\\)");
+ "(?i)(AVG|COUNT|MAX|MIN|SUM|TOTAL|GROUP_CONCAT)\\((.+)\\)");
private Map<String, String> mProjectionMap = null;
private List<Pattern> mProjectionGreylist = null;
diff --git a/core/java/android/hardware/biometrics/BiometricManager.java b/core/java/android/hardware/biometrics/BiometricManager.java
index a696eeb6bcc7..6c497d47c645 100644
--- a/core/java/android/hardware/biometrics/BiometricManager.java
+++ b/core/java/android/hardware/biometrics/BiometricManager.java
@@ -207,5 +207,22 @@ public class BiometricManager {
Slog.w(TAG, "onConfirmDeviceCredentialError(): Service not connected");
}
}
+
+ /**
+ * TODO(b/123378871): Remove when moved.
+ * @hide
+ */
+ @RequiresPermission(USE_BIOMETRIC_INTERNAL)
+ public void registerCancellationCallback(IBiometricConfirmDeviceCredentialCallback callback) {
+ if (mService != null) {
+ try {
+ mService.registerCancellationCallback(callback);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ } else {
+ Slog.w(TAG, "registerCancellationCallback(): Service not connected");
+ }
+ }
}
diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java
index 08035972a0db..1142a07bc66c 100644
--- a/core/java/android/hardware/biometrics/BiometricPrompt.java
+++ b/core/java/android/hardware/biometrics/BiometricPrompt.java
@@ -82,6 +82,11 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
* @hide
*/
public static final String KEY_ALLOW_DEVICE_CREDENTIAL = "allow_device_credential";
+ /**
+ * @hide
+ */
+ public static final String KEY_FROM_CONFIRM_DEVICE_CREDENTIAL
+ = "from_confirm_device_credential";
/**
* Error/help message will show for this amount of time.
@@ -271,6 +276,17 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
}
/**
+ * TODO(123378871): Remove when moved.
+ * @return
+ * @hide
+ */
+ @RequiresPermission(USE_BIOMETRIC_INTERNAL)
+ @NonNull public Builder setFromConfirmDeviceCredential() {
+ mBundle.putBoolean(KEY_FROM_CONFIRM_DEVICE_CREDENTIAL, true);
+ return this;
+ }
+
+ /**
* Creates a {@link BiometricPrompt}.
* @return a {@link BiometricPrompt}
* @throws IllegalArgumentException if any of the required fields are not set.
@@ -494,7 +510,8 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
public void authenticateUser(@NonNull CancellationSignal cancel,
@NonNull @CallbackExecutor Executor executor,
@NonNull AuthenticationCallback callback,
- int userId) {
+ int userId,
+ IBiometricConfirmDeviceCredentialCallback confirmDeviceCredentialCallback) {
if (cancel == null) {
throw new IllegalArgumentException("Must supply a cancellation signal");
}
@@ -504,7 +521,8 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
if (callback == null) {
throw new IllegalArgumentException("Must supply a callback");
}
- authenticateInternal(null /* crypto */, cancel, executor, callback, userId);
+ authenticateInternal(null /* crypto */, cancel, executor, callback, userId,
+ confirmDeviceCredentialCallback);
}
/**
@@ -555,7 +573,8 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
if (mBundle.getBoolean(KEY_ALLOW_DEVICE_CREDENTIAL)) {
throw new IllegalArgumentException("Device credential not supported with crypto");
}
- authenticateInternal(crypto, cancel, executor, callback, mContext.getUserId());
+ authenticateInternal(crypto, cancel, executor, callback, mContext.getUserId(),
+ null /* confirmDeviceCredentialCallback */);
}
/**
@@ -597,7 +616,8 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
if (callback == null) {
throw new IllegalArgumentException("Must supply a callback");
}
- authenticateInternal(null /* crypto */, cancel, executor, callback, mContext.getUserId());
+ authenticateInternal(null /* crypto */, cancel, executor, callback, mContext.getUserId(),
+ null /* confirmDeviceCredentialCallback */);
}
private void cancelAuthentication() {
@@ -614,7 +634,8 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
@NonNull CancellationSignal cancel,
@NonNull @CallbackExecutor Executor executor,
@NonNull AuthenticationCallback callback,
- int userId) {
+ int userId,
+ IBiometricConfirmDeviceCredentialCallback confirmDeviceCredentialCallback) {
try {
if (cancel.isCanceled()) {
Log.w(TAG, "Authentication already canceled");
@@ -629,7 +650,7 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
final long sessionId = crypto != null ? crypto.getOpId() : 0;
if (BiometricManager.hasBiometrics(mContext)) {
mService.authenticate(mToken, sessionId, userId, mBiometricServiceReceiver,
- mContext.getOpPackageName(), mBundle);
+ mContext.getOpPackageName(), mBundle, confirmDeviceCredentialCallback);
} else {
mExecutor.execute(() -> {
callback.onAuthenticationError(BiometricPrompt.BIOMETRIC_ERROR_HW_NOT_PRESENT,
diff --git a/core/java/android/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback.aidl b/core/java/android/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback.aidl
new file mode 100644
index 000000000000..8b35852efd31
--- /dev/null
+++ b/core/java/android/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.biometrics;
+
+/**
+ * Communication channel between ConfirmDeviceCredential / ConfirmLock* and BiometricService.
+ * @hide
+ */
+interface IBiometricConfirmDeviceCredentialCallback {
+ // Invoked when authentication should be canceled.
+ oneway void cancel();
+} \ No newline at end of file
diff --git a/core/java/android/hardware/biometrics/IBiometricService.aidl b/core/java/android/hardware/biometrics/IBiometricService.aidl
index 4971911eb87c..90d4921c3c18 100644
--- a/core/java/android/hardware/biometrics/IBiometricService.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricService.aidl
@@ -17,6 +17,7 @@
package android.hardware.biometrics;
import android.os.Bundle;
+import android.hardware.biometrics.IBiometricConfirmDeviceCredentialCallback;
import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
import android.hardware.biometrics.IBiometricServiceReceiver;
@@ -30,8 +31,10 @@ import android.hardware.biometrics.IBiometricServiceReceiver;
interface IBiometricService {
// Requests authentication. The service choose the appropriate biometric to use, and show
// the corresponding BiometricDialog.
+ // TODO(b/123378871): Remove callback when moved.
void authenticate(IBinder token, long sessionId, int userId,
- IBiometricServiceReceiver receiver, String opPackageName, in Bundle bundle);
+ IBiometricServiceReceiver receiver, String opPackageName, in Bundle bundle,
+ IBiometricConfirmDeviceCredentialCallback callback);
// Cancel authentication for the given sessionId
void cancelAuthentication(IBinder token, String opPackageName);
@@ -59,4 +62,8 @@ interface IBiometricService {
void onConfirmDeviceCredentialSuccess();
// TODO(b/123378871): Remove when moved.
void onConfirmDeviceCredentialError(int error, String message);
+ // TODO(b/123378871): Remove when moved.
+ // When ConfirmLock* is invoked from BiometricPrompt, it needs to register a callback so that
+ // it can receive the cancellation signal.
+ void registerCancellationCallback(IBiometricConfirmDeviceCredentialCallback callback);
}
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java
index 8231985970aa..c9551378c190 100644
--- a/core/java/android/hardware/display/DisplayManagerInternal.java
+++ b/core/java/android/hardware/display/DisplayManagerInternal.java
@@ -25,6 +25,7 @@ import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.Surface;
+import android.view.SurfaceControl;
import android.view.SurfaceControl.Transaction;
/**
@@ -64,13 +65,12 @@ public abstract class DisplayManagerInternal {
public abstract boolean isProximitySensorAvailable();
/**
- * Take a screenshot of the specified display into the provided {@link Surface}.
+ * Take a screenshot of the specified display and return a buffer.
*
* @param displayId The display id to take the screenshot of.
- * @param outSurface The {@link Surface} to take the screenshot into.
- * @return True if the screenshot is taken.
+ * @return The buffer or null if we have failed.
*/
- public abstract boolean screenshot(int displayId, Surface outSurface);
+ public abstract SurfaceControl.ScreenshotGraphicBuffer screenshot(int displayId);
/**
* Returns information about the specified logical display.
diff --git a/core/java/android/net/NetworkStack.java b/core/java/android/net/NetworkStack.java
index dbb894f92f55..a46c410bd55e 100644
--- a/core/java/android/net/NetworkStack.java
+++ b/core/java/android/net/NetworkStack.java
@@ -15,9 +15,16 @@
*/
package android.net;
+import static android.Manifest.permission.NETWORK_STACK;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+
+import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.TestApi;
+import android.content.Context;
+import java.util.ArrayList;
+import java.util.Arrays;
/**
*
* Constants for client code communicating with the network stack service.
@@ -37,4 +44,52 @@ public class NetworkStack {
"android.permission.MAINLINE_NETWORK_STACK";
private NetworkStack() {}
+
+ /**
+ * If the NetworkStack, MAINLINE_NETWORK_STACK are not allowed for a particular process, throw a
+ * {@link SecurityException}.
+ *
+ * @param context {@link android.content.Context} for the process.
+ *
+ * @hide
+ */
+ public static void checkNetworkStackPermission(final @NonNull Context context) {
+ checkNetworkStackPermissionOr(context);
+ }
+
+ /**
+ * If the NetworkStack, MAINLINE_NETWORK_STACK or other specified permissions are not allowed
+ * for a particular process, throw a {@link SecurityException}.
+ *
+ * @param context {@link android.content.Context} for the process.
+ * @param otherPermissions The set of permissions that could be the candidate permissions , or
+ * empty string if none of other permissions needed.
+ * @hide
+ */
+ public static void checkNetworkStackPermissionOr(final @NonNull Context context,
+ final @NonNull String... otherPermissions) {
+ ArrayList<String> permissions = new ArrayList<String>(Arrays.asList(otherPermissions));
+ permissions.add(NETWORK_STACK);
+ permissions.add(PERMISSION_MAINLINE_NETWORK_STACK);
+ enforceAnyPermissionOf(context, permissions.toArray(new String[0]));
+ }
+
+ private static void enforceAnyPermissionOf(final @NonNull Context context,
+ final @NonNull String... permissions) {
+ if (!checkAnyPermissionOf(context, permissions)) {
+ throw new SecurityException("Requires one of the following permissions: "
+ + String.join(", ", permissions) + ".");
+ }
+ }
+
+ private static boolean checkAnyPermissionOf(final @NonNull Context context,
+ final @NonNull String... permissions) {
+ for (String permission : permissions) {
+ if (context.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 9e9e68dbf3fe..ed5c1b1e2277 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -1148,9 +1148,9 @@ public class Environment {
final Context context = AppGlobals.getInitialApplication();
final AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
- final boolean hasLegacy = appOps.noteOpNoThrow(AppOpsManager.OP_LEGACY_STORAGE,
+ final boolean hasLegacy = appOps.checkOpNoThrow(AppOpsManager.OP_LEGACY_STORAGE,
context.getApplicationInfo().uid,
- context.getPackageName()) == AppOpsManager.MODE_ALLOWED;
+ context.getOpPackageName()) == AppOpsManager.MODE_ALLOWED;
// STOPSHIP: only use app-op once permission model has fully landed
final boolean requestedLegacy = !AppGlobals.getInitialApplication().getApplicationInfo()
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index 53503f47ca74..e56b6e0a33b8 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -188,11 +188,16 @@ public class GraphicsEnvironment {
if (gpuDebugLayerApp != null && !gpuDebugLayerApp.isEmpty()) {
Log.i(TAG, "GPU debug layer app: " + gpuDebugLayerApp);
- final String paths = getDebugLayerAppPaths(pm, gpuDebugLayerApp);
- if (paths != null) {
- // Append the path so files placed in the app's base directory will
- // override the external path
- layerPaths += paths + ":";
+ // If a colon is present, treat this as multiple apps, so Vulkan and GLES
+ // layer apps can be provided at the same time.
+ String[] layerApps = gpuDebugLayerApp.split(":");
+ for (int i = 0; i < layerApps.length; i++) {
+ String paths = getDebugLayerAppPaths(pm, layerApps[i]);
+ if (paths != null) {
+ // Append the path so files placed in the app's base directory will
+ // override the external path
+ layerPaths += paths + ":";
+ }
}
}
diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java
index bd70f23c8b5d..ab19fd6e8ca1 100644
--- a/core/java/android/os/ZygoteProcess.java
+++ b/core/java/android/os/ZygoteProcess.java
@@ -646,9 +646,14 @@ public class ZygoteProcess {
ZygoteConfig.USAP_POOL_ENABLED, USAP_POOL_ENABLED_DEFAULT);
if (!propertyString.isEmpty()) {
- mUsapPoolEnabled = Zygote.getConfigurationPropertyBoolean(
+ if (SystemProperties.get("dalvik.vm.boot-image", "").endsWith("apex.art")) {
+ // TODO(b/119800099): Tweak usap configuration in jitzygote mode.
+ mUsapPoolEnabled = false;
+ } else {
+ mUsapPoolEnabled = Zygote.getConfigurationPropertyBoolean(
ZygoteConfig.USAP_POOL_ENABLED,
Boolean.parseBoolean(USAP_POOL_ENABLED_DEFAULT));
+ }
}
boolean valueChanged = origVal != mUsapPoolEnabled;
diff --git a/core/java/android/os/image/DynamicSystemClient.java b/core/java/android/os/image/DynamicSystemClient.java
index 8f68723e1b7d..f1f24fb4dd89 100644
--- a/core/java/android/os/image/DynamicSystemClient.java
+++ b/core/java/android/os/image/DynamicSystemClient.java
@@ -211,7 +211,7 @@ public class DynamicSystemClient {
* Intent Keys
*/
/**
- * Intent key: Size of system image, in bytes.
+ * Intent key: Size of the system image, in bytes.
* @hide
*/
public static final String KEY_SYSTEM_SIZE = "KEY_SYSTEM_SIZE";
@@ -365,7 +365,7 @@ public class DynamicSystemClient {
*
* This function doesn't require prior calling {@link #bind}.
*
- * @param systemUrl A network URL or a file URL to system image.
+ * @param systemUrl a network Uri, a file Uri or a content Uri pointing to a system image file.
* @param systemSize size of system image.
*/
@RequiresPermission(android.Manifest.permission.INSTALL_DYNAMIC_SYSTEM)
@@ -381,7 +381,7 @@ public class DynamicSystemClient {
*
* This function doesn't require prior calling {@link #bind}.
*
- * @param systemUrl A network URL or a file URL to system image.
+ * @param systemUrl a network Uri, a file Uri or a content Uri pointing to a system image file.
* @param systemSize size of system image.
* @param userdataSize bytes reserved for userdata.
*/
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index c57bf9141248..080ff7301ed2 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -1130,7 +1130,7 @@ public class StorageManager {
public @NonNull StorageVolume getStorageVolume(@NonNull Uri uri) {
final String volumeName = MediaStore.getVolumeName(uri);
switch (volumeName) {
- case MediaStore.VOLUME_EXTERNAL:
+ case MediaStore.VOLUME_EXTERNAL_PRIMARY:
return getPrimaryStorageVolume();
default:
for (StorageVolume vol : getStorageVolumes()) {
@@ -1652,6 +1652,26 @@ public class StorageManager {
*/
public static boolean checkPermissionAndAppOp(Context context, boolean enforce,
int pid, int uid, String packageName, String permission, int op) {
+ return checkPermissionAndAppOp(context, enforce, pid, uid, packageName, permission, op,
+ true);
+ }
+
+ /**
+ * Check that given app holds both permission and appop but do not noteOp.
+ * @hide
+ */
+ public static boolean checkPermissionAndCheckOp(Context context, boolean enforce,
+ int pid, int uid, String packageName, String permission, int op) {
+ return checkPermissionAndAppOp(context, enforce, pid, uid, packageName, permission, op,
+ false);
+ }
+
+ /**
+ * Check that given app holds both permission and appop.
+ * @hide
+ */
+ private static boolean checkPermissionAndAppOp(Context context, boolean enforce,
+ int pid, int uid, String packageName, String permission, int op, boolean note) {
if (context.checkPermission(permission, pid, uid) != PERMISSION_GRANTED) {
if (enforce) {
throw new SecurityException(
@@ -1662,7 +1682,21 @@ public class StorageManager {
}
AppOpsManager appOps = context.getSystemService(AppOpsManager.class);
- final int mode = appOps.noteOpNoThrow(op, uid, packageName);
+ final int mode;
+ if (note) {
+ mode = appOps.noteOpNoThrow(op, uid, packageName);
+ } else {
+ try {
+ appOps.checkPackage(uid, packageName);
+ } catch (SecurityException e) {
+ if (enforce) {
+ throw e;
+ } else {
+ return false;
+ }
+ }
+ mode = appOps.checkOpNoThrow(op, uid, packageName);
+ }
switch (mode) {
case AppOpsManager.MODE_ALLOWED:
return true;
diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java
index 225ecfa315aa..6280600823d7 100644
--- a/core/java/android/os/storage/StorageVolume.java
+++ b/core/java/android/os/storage/StorageVolume.java
@@ -265,8 +265,13 @@ public final class StorageVolume implements Parcelable {
}
/** {@hide} */
+ public static @Nullable String normalizeUuid(@Nullable String fsUuid) {
+ return fsUuid != null ? fsUuid.toLowerCase(Locale.US) : null;
+ }
+
+ /** {@hide} */
public @Nullable String getNormalizedUuid() {
- return mFsUuid != null ? mFsUuid.toLowerCase(Locale.US) : null;
+ return normalizeUuid(mFsUuid);
}
/**
diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java
index bda6ed19d3c1..da19d59367a0 100644
--- a/core/java/android/provider/MediaStore.java
+++ b/core/java/android/provider/MediaStore.java
@@ -102,20 +102,40 @@ public final class MediaStore {
public static final @NonNull Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);
/**
- * Volume name used for content on "internal" storage of device. This
- * volume contains media distributed with the device, such as built-in
- * ringtones and wallpapers.
+ * Synthetic volume name that provides a view of all content across the
+ * "internal" storage of the device.
+ * <p>
+ * This synthetic volume provides a merged view of all media distributed
+ * with the device, such as built-in ringtones and wallpapers.
+ * <p>
+ * Because this is a synthetic volume, you can't insert new content into
+ * this volume.
*/
public static final String VOLUME_INTERNAL = "internal";
/**
- * Volume name used for content on "external" storage of device. This only
- * includes media on the primary shared storage device; the contents of any
- * secondary storage devices can be obtained using
- * {@link #getAllVolumeNames(Context)}.
+ * Synthetic volume name that provides a view of all content across the
+ * "external" storage of the device.
+ * <p>
+ * This synthetic volume provides a merged view of all media across all
+ * currently attached external storage devices.
+ * <p>
+ * Because this is a synthetic volume, you can't insert new content into
+ * this volume. Instead, you can insert content into a specific storage
+ * volume obtained from {@link #getExternalVolumeNames(Context)}.
*/
public static final String VOLUME_EXTERNAL = "external";
+ /**
+ * Specific volume name that represents the primary external storage device
+ * at {@link Environment#getExternalStorageDirectory()}.
+ * <p>
+ * This volume may not always be available, such as when the user has
+ * ejected the device. You can find a list of all specific volume names
+ * using {@link #getExternalVolumeNames(Context)}.
+ */
+ public static final String VOLUME_EXTERNAL_PRIMARY = "external_primary";
+
/** {@hide} */
public static final String SCAN_FILE_CALL = "scan_file";
/** {@hide} */
@@ -1037,6 +1057,16 @@ public final class MediaStore {
public static final String OWNER_PACKAGE_NAME = "owner_package_name";
/**
+ * Volume name of the specific storage device where this media item is
+ * persisted. The value is typically one of the volume names returned
+ * from {@link MediaStore#getExternalVolumeNames(Context)}.
+ * <p>
+ * This is a read-only column that is automatically computed.
+ */
+ @Column(value = Cursor.FIELD_TYPE_STRING, readOnly = true)
+ public static final String VOLUME_NAME = "volume_name";
+
+ /**
* Relative path of this media item within the storage device where it
* is persisted. For example, an item stored at
* {@code /storage/0000-0000/DCIM/Vacation/IMG1024.JPG} would have a
@@ -1408,7 +1438,7 @@ public final class MediaStore {
final StorageVolume sv = sm.getStorageVolume(path);
if (sv != null) {
if (sv.isPrimary()) {
- return VOLUME_EXTERNAL;
+ return VOLUME_EXTERNAL_PRIMARY;
} else {
return checkArgumentVolumeName(sv.getNormalizedUuid());
}
@@ -1710,7 +1740,7 @@ public final class MediaStore {
String stringUrl = null; /* value to be returned */
try {
- url = cr.insert(EXTERNAL_CONTENT_URI, values);
+ url = cr.insert(getContentUri(VOLUME_EXTERNAL_PRIMARY), values);
if (source != null) {
try (OutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
@@ -2676,7 +2706,13 @@ public final class MediaStore {
public static final String ALBUM = "album";
/**
- * The artist whose songs appear on this album
+ * The ID of the artist whose songs appear on this album.
+ */
+ @Column(value = Cursor.FIELD_TYPE_INTEGER, readOnly = true)
+ public static final String ARTIST_ID = "artist_id";
+
+ /**
+ * The name of the artist whose songs appear on this album.
*/
@Column(value = Cursor.FIELD_TYPE_STRING, readOnly = true)
public static final String ARTIST = "artist";
@@ -3218,22 +3254,29 @@ public final class MediaStore {
}
}
+ /** @removed */
+ @Deprecated
+ public static @NonNull Set<String> getAllVolumeNames(@NonNull Context context) {
+ return getExternalVolumeNames(context);
+ }
+
/**
- * Return list of all volume names currently available. This includes a
- * unique name for each shared storage device that is currently mounted.
+ * Return list of all specific volume names that make up
+ * {@link #VOLUME_EXTERNAL}. This includes a unique volume name for each
+ * shared storage device that is currently attached, which typically
+ * includes {@link MediaStore#VOLUME_EXTERNAL_PRIMARY}.
* <p>
- * Each name can be passed to APIs like
- * {@link MediaStore.Images.Media#getContentUri(String)} to query media at
- * that location.
+ * Each specific volume name can be passed to APIs like
+ * {@link MediaStore.Images.Media#getContentUri(String)} to interact with
+ * media on that storage device.
*/
- public static @NonNull Set<String> getAllVolumeNames(@NonNull Context context) {
+ public static @NonNull Set<String> getExternalVolumeNames(@NonNull Context context) {
final StorageManager sm = context.getSystemService(StorageManager.class);
final Set<String> volumeNames = new ArraySet<>();
- volumeNames.add(VOLUME_INTERNAL);
for (VolumeInfo vi : sm.getVolumes()) {
if (vi.isVisibleForUser(UserHandle.myUserId()) && vi.isMountedReadable()) {
if (vi.isPrimary()) {
- volumeNames.add(VOLUME_EXTERNAL);
+ volumeNames.add(VOLUME_EXTERNAL_PRIMARY);
} else {
volumeNames.add(vi.getNormalizedFsUuid());
}
@@ -3264,6 +3307,8 @@ public final class MediaStore {
return volumeName;
} else if (VOLUME_EXTERNAL.equals(volumeName)) {
return volumeName;
+ } else if (VOLUME_EXTERNAL_PRIMARY.equals(volumeName)) {
+ return volumeName;
}
// When not one of the well-known values above, it must be a hex UUID
@@ -3279,8 +3324,9 @@ public final class MediaStore {
}
/**
- * Return path where the given volume is mounted. Not valid for
- * {@link #VOLUME_INTERNAL}.
+ * Return path where the given specific volume is mounted. Not valid for
+ * {@link #VOLUME_INTERNAL} or {@link #VOLUME_EXTERNAL}, since those are
+ * broad collections that cover many paths.
*
* @hide
*/
@@ -3291,8 +3337,12 @@ public final class MediaStore {
throw new IllegalArgumentException();
}
- if (VOLUME_EXTERNAL.equals(volumeName)) {
- return Environment.getExternalStorageDirectory();
+ switch (volumeName) {
+ case VOLUME_INTERNAL:
+ case VOLUME_EXTERNAL:
+ throw new FileNotFoundException(volumeName + " has no associated path");
+ case VOLUME_EXTERNAL_PRIMARY:
+ return Environment.getExternalStorageDirectory();
}
final StorageManager sm = AppGlobals.getInitialApplication()
@@ -3322,23 +3372,31 @@ public final class MediaStore {
throw new IllegalArgumentException();
}
+ final Context context = AppGlobals.getInitialApplication();
+ final UserManager um = context.getSystemService(UserManager.class);
+
final ArrayList<File> res = new ArrayList<>();
if (VOLUME_INTERNAL.equals(volumeName)) {
- addCanoncialFile(res, new File(Environment.getRootDirectory(), "media"));
- addCanoncialFile(res, new File(Environment.getOemDirectory(), "media"));
- addCanoncialFile(res, new File(Environment.getProductDirectory(), "media"));
+ addCanonicalFile(res, new File(Environment.getRootDirectory(), "media"));
+ addCanonicalFile(res, new File(Environment.getOemDirectory(), "media"));
+ addCanonicalFile(res, new File(Environment.getProductDirectory(), "media"));
+ } else if (VOLUME_EXTERNAL.equals(volumeName)) {
+ for (String exactVolume : getExternalVolumeNames(context)) {
+ addCanonicalFile(res, getVolumePath(exactVolume));
+ }
+ if (um.isDemoUser()) {
+ addCanonicalFile(res, Environment.getDataPreloadsMediaDirectory());
+ }
} else {
- addCanoncialFile(res, getVolumePath(volumeName));
- final UserManager um = AppGlobals.getInitialApplication()
- .getSystemService(UserManager.class);
- if (VOLUME_EXTERNAL.equals(volumeName) && um.isDemoUser()) {
- addCanoncialFile(res, Environment.getDataPreloadsMediaDirectory());
+ addCanonicalFile(res, getVolumePath(volumeName));
+ if (VOLUME_EXTERNAL_PRIMARY.equals(volumeName) && um.isDemoUser()) {
+ addCanonicalFile(res, Environment.getDataPreloadsMediaDirectory());
}
}
return res;
}
- private static void addCanoncialFile(List<File> list, File file) {
+ private static void addCanonicalFile(List<File> list, File file) {
try {
list.add(file.getCanonicalFile());
} catch (IOException e) {
@@ -3376,12 +3434,12 @@ public final class MediaStore {
* <p>
* No other assumptions should be made about the meaning of the version.
* <p>
- * This method returns the version for {@link MediaStore#VOLUME_EXTERNAL};
- * to obtain a version for a different volume, use
- * {@link #getVersion(Context, String)}.
+ * This method returns the version for
+ * {@link MediaStore#VOLUME_EXTERNAL_PRIMARY}; to obtain a version for a
+ * different volume, use {@link #getVersion(Context, String)}.
*/
public static @NonNull String getVersion(@NonNull Context context) {
- return getVersion(context, VOLUME_EXTERNAL);
+ return getVersion(context, VOLUME_EXTERNAL_PRIMARY);
}
/**
@@ -3395,7 +3453,7 @@ public final class MediaStore {
*
* @param volumeName specific volume to obtain an opaque version string for.
* Must be one of the values returned from
- * {@link #getAllVolumeNames(Context)}.
+ * {@link #getExternalVolumeNames(Context)}.
*/
public static @NonNull String getVersion(@NonNull Context context, @NonNull String volumeName) {
final ContentResolver resolver = context.getContentResolver();
diff --git a/core/java/android/provider/SearchIndexablesContract.java b/core/java/android/provider/SearchIndexablesContract.java
index 42c2d5ced806..5f8266d2b579 100644
--- a/core/java/android/provider/SearchIndexablesContract.java
+++ b/core/java/android/provider/SearchIndexablesContract.java
@@ -16,6 +16,7 @@
package android.provider;
+import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.ContentResolver;
@@ -210,6 +211,7 @@ public class SearchIndexablesContract {
/**
* Cursor schema for SliceUriPairs.
*/
+ @NonNull
public static final String[] SLICE_URI_PAIRS_COLUMNS = new String[]{
SliceUriPairColumns.KEY,
SliceUriPairColumns.SLICE_URI
diff --git a/core/java/android/provider/SearchIndexablesProvider.java b/core/java/android/provider/SearchIndexablesProvider.java
index d505f02468d0..da29e2e5e39f 100644
--- a/core/java/android/provider/SearchIndexablesProvider.java
+++ b/core/java/android/provider/SearchIndexablesProvider.java
@@ -16,6 +16,7 @@
package android.provider;
+import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.slice.Slice;
import android.content.ContentProvider;
@@ -184,6 +185,7 @@ public abstract class SearchIndexablesProvider extends ContentProvider {
* Returns a {@link Cursor} linking {@link Slice} {@link Uri Uris} to the
* corresponding Settings key.
*/
+ @Nullable
public Cursor querySliceUriPairs() {
// By default no-op;
return null;
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 3db6b2bcaa89..e3b2d898f9b6 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -955,6 +955,20 @@ public final class Settings {
"android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
/**
+ * Activity Action: Open the advanced power usage details page of an associated app.
+ * <p>
+ * Input: Intent's data URI set with an application name, using the
+ * "package" schema (like "package:com.my.app")
+ * <p>
+ * Output: Nothing.
+ *
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_VIEW_ADVANCED_POWER_USAGE_DETAIL =
+ "android.settings.VIEW_ADVANCED_POWER_USAGE_DETAIL";
+
+ /**
* Activity Action: Show screen for controlling background data
* restrictions for a particular application.
* <p>
@@ -11199,62 +11213,6 @@ public final class Settings {
public static final String CAPTIVE_PORTAL_USER_AGENT = "captive_portal_user_agent";
/**
- * The threshold value for the number of consecutive dns timeout events received to be a
- * signal of data stall. The number of consecutive timeouts needs to be {@code >=} this
- * threshold to be considered a data stall. Set the value to {@code <= 0} to disable. Note
- * that the value should be {@code > 0} if the DNS data stall detection is enabled.
- *
- * @hide
- */
- @SystemApi
- @TestApi
- public static final String DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD =
- "data_stall_consecutive_dns_timeout_threshold";
-
- /**
- * The minimal time interval in milliseconds for data stall reevaluation.
- *
- * @hide
- */
- @SystemApi
- @TestApi
- public static final String DATA_STALL_MIN_EVALUATE_INTERVAL =
- "data_stall_min_evaluate_interval";
-
- /**
- * DNS timeouts older than this timeout (in milliseconds) are not considered for detecting
- * a data stall.
- *
- * @hide
- */
- @SystemApi
- @TestApi
- public static final String DATA_STALL_VALID_DNS_TIME_THRESHOLD =
- "data_stall_valid_dns_time_threshold";
-
- /**
- * Which data stall detection signal to use. This is a bitmask constructed by bitwise-or-ing
- * (i.e. {@code |}) the DATA_STALL_EVALUATION_TYPE_* values.
- *
- * Type: int
- * Valid values:
- * {@link #DATA_STALL_EVALUATION_TYPE_DNS} : Use dns as a signal.
- * @hide
- */
- @SystemApi
- @TestApi
- public static final String DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type";
-
- /**
- * Use dns timeout counts to detect data stall.
- *
- * @hide
- */
- @SystemApi
- @TestApi
- public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1;
-
- /**
* Whether to try cellular data recovery when a bad network is reported.
*
* @hide
diff --git a/core/java/android/service/autofill/AutofillService.java b/core/java/android/service/autofill/AutofillService.java
index f39ef9afdb3c..5a918023fdc3 100644
--- a/core/java/android/service/autofill/AutofillService.java
+++ b/core/java/android/service/autofill/AutofillService.java
@@ -674,6 +674,8 @@ public abstract class AutofillService extends Service {
* Called when the Android system disconnects from the service.
*
* <p> At this point this service may no longer be an active {@link AutofillService}.
+ * It should not make calls on {@link AutofillManager} that requires the caller to be
+ * the current service.
*/
public void onDisconnected() {
}
@@ -695,6 +697,8 @@ public abstract class AutofillService extends Service {
* finishing the {@link FillCallback}.
*
* @return The history or {@code null} if there are no events.
+ *
+ * @throws RuntimeException if the event history could not be retrieved.
*/
@Nullable public final FillEventHistory getFillEventHistory() {
final AutofillManager afm = getSystemService(AutofillManager.class);
diff --git a/core/java/android/service/autofill/IFillCallback.aidl b/core/java/android/service/autofill/IFillCallback.aidl
index 1bad1d7f474a..32cf712b5fd4 100644
--- a/core/java/android/service/autofill/IFillCallback.aidl
+++ b/core/java/android/service/autofill/IFillCallback.aidl
@@ -25,7 +25,7 @@ import android.service.autofill.FillResponse;
*
* @hide
*/
-interface IFillCallback {
+oneway interface IFillCallback {
void onCancellable(in ICancellationSignal cancellation);
void onSuccess(in FillResponse response);
void onFailure(int requestId, CharSequence message);
diff --git a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
index 96b861b46dd4..b00eb8a0a2e1 100644
--- a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
+++ b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
@@ -41,6 +41,7 @@ import android.util.Slog;
import android.util.SparseArray;
import android.util.TimeUtils;
import android.view.autofill.AutofillId;
+import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;
import android.view.autofill.IAugmentedAutofillManagerClient;
import android.view.autofill.IAutofillWindowPresenter;
@@ -183,6 +184,8 @@ public abstract class AugmentedAutofillService extends Service {
* Called when the Android system disconnects from the service.
*
* <p> At this point this service may no longer be an active {@link AugmentedAutofillService}.
+ * It should not make calls on {@link AutofillManager} that requires the caller to be
+ * the current service.
*/
public void onDisconnected() {
}
diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java
index dc57a1591913..5be73b92fbc0 100644
--- a/core/java/android/service/contentcapture/ContentCaptureService.java
+++ b/core/java/android/service/contentcapture/ContentCaptureService.java
@@ -37,7 +37,6 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
-import android.service.autofill.AutofillService;
import android.util.Log;
import android.util.Slog;
import android.util.SparseIntArray;
@@ -350,7 +349,9 @@ public abstract class ContentCaptureService extends Service {
/**
* Called when the Android system disconnects from the service.
*
- * <p> At this point this service may no longer be an active {@link AutofillService}.
+ * <p> At this point this service may no longer be an active {@link ContentCaptureService}.
+ * It should not make calls on {@link ContentCaptureManager} that requires the caller to be
+ * the current service.
*/
public void onDisconnected() {
Slog.i(TAG, "unbinding from " + getClass().getName());
diff --git a/core/java/android/service/notification/Adjustment.java b/core/java/android/service/notification/Adjustment.java
index 8ba9a8357c65..e81ce7f85ac1 100644
--- a/core/java/android/service/notification/Adjustment.java
+++ b/core/java/android/service/notification/Adjustment.java
@@ -18,6 +18,7 @@ package android.service.notification;
import android.annotation.NonNull;
import android.annotation.StringDef;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.app.Notification;
import android.os.Bundle;
import android.os.Parcel;
@@ -40,6 +41,7 @@ import java.lang.annotation.RetentionPolicy;
* @hide
*/
@SystemApi
+@TestApi
public final class Adjustment implements Parcelable {
private final String mPackage;
private final String mKey;
@@ -130,6 +132,7 @@ public final class Adjustment implements Parcelable {
* @hide
*/
@SystemApi
+ @TestApi
public Adjustment(String pkg, String key, Bundle signals, CharSequence explanation, int user) {
mPackage = pkg;
mKey = key;
@@ -212,6 +215,7 @@ public final class Adjustment implements Parcelable {
/** @hide */
@SystemApi
+ @TestApi
public int getUser() {
return mUser;
}
diff --git a/core/java/android/service/notification/INotificationListener.aidl b/core/java/android/service/notification/INotificationListener.aidl
index 22104b5089cf..5977bafd7cf1 100644
--- a/core/java/android/service/notification/INotificationListener.aidl
+++ b/core/java/android/service/notification/INotificationListener.aidl
@@ -53,4 +53,5 @@ oneway interface INotificationListener
void onNotificationDirectReply(String key);
void onSuggestedReplySent(String key, in CharSequence reply, int source);
void onActionClicked(String key, in Notification.Action action, int source);
+ void onAllowedAdjustmentsChanged();
}
diff --git a/core/java/android/service/notification/NotificationAssistantService.java b/core/java/android/service/notification/NotificationAssistantService.java
index b81725d99d2b..cafeb87691bd 100644
--- a/core/java/android/service/notification/NotificationAssistantService.java
+++ b/core/java/android/service/notification/NotificationAssistantService.java
@@ -23,6 +23,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SdkConstant;
import android.annotation.SystemApi;
+import android.annotation.TestApi;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -65,6 +66,7 @@ import java.util.List;
* @hide
*/
@SystemApi
+@TestApi
public abstract class NotificationAssistantService extends NotificationListenerService {
private static final String TAG = "NotificationAssistants";
@@ -218,10 +220,10 @@ public abstract class NotificationAssistantService extends NotificationListenerS
/**
* Implement this to know when a user has changed which features of
* their notifications the assistant can modify.
- * <p> Query {@link NotificationManager#getAllowedAssistantCapabilities()} to see what
+ * <p> Query {@link NotificationManager#getAllowedAssistantAdjustments()} to see what
* {@link Adjustment adjustments} you are currently allowed to make.</p>
*/
- public void onCapabilitiesChanged() {
+ public void onAllowedAdjustmentsChanged() {
}
/**
@@ -357,6 +359,11 @@ public abstract class NotificationAssistantService extends NotificationListenerS
args.argi2 = source;
mHandler.obtainMessage(MyHandler.MSG_ON_ACTION_INVOKED, args).sendToTarget();
}
+
+ @Override
+ public void onAllowedAdjustmentsChanged() {
+ mHandler.obtainMessage(MyHandler.MSG_ON_ALLOWED_ADJUSTMENTS_CHANGED).sendToTarget();
+ }
}
private final class MyHandler extends Handler {
@@ -367,6 +374,7 @@ public abstract class NotificationAssistantService extends NotificationListenerS
public static final int MSG_ON_NOTIFICATION_DIRECT_REPLY_SENT = 5;
public static final int MSG_ON_SUGGESTED_REPLY_SENT = 6;
public static final int MSG_ON_ACTION_INVOKED = 7;
+ public static final int MSG_ON_ALLOWED_ADJUSTMENTS_CHANGED = 8;
public MyHandler(Looper looper) {
super(looper, null, false);
@@ -448,6 +456,10 @@ public abstract class NotificationAssistantService extends NotificationListenerS
onActionInvoked(key, action, source);
break;
}
+ case MSG_ON_ALLOWED_ADJUSTMENTS_CHANGED: {
+ onAllowedAdjustmentsChanged();
+ break;
+ }
}
}
}
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 333868a2f08a..3ec21e39e514 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -16,6 +16,7 @@
package android.service.notification;
+import android.annotation.CurrentTimeMillisLong;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SdkConstant;
@@ -1399,6 +1400,11 @@ public abstract class NotificationListenerService extends Service {
}
@Override
+ public void onAllowedAdjustmentsChanged() {
+ // no-op in the listener
+ }
+
+ @Override
public void onNotificationChannelModification(String pkgName, UserHandle user,
NotificationChannel channel,
@ChannelOrGroupModificationTypes int modificationType) {
@@ -1675,6 +1681,7 @@ public abstract class NotificationListenerService extends Service {
*
* @return the time of the last alerting behavior, in milliseconds.
*/
+ @CurrentTimeMillisLong
public long getLastAudiblyAlertedMillis() {
return mLastAudiblyAlertedMs;
}
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 04046fe066e7..feff9db1a63e 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -42,6 +42,8 @@ public class FeatureFlagUtils {
"settings_global_actions_force_grid_enabled";
public static final String GLOBAL_ACTIONS_PANEL_ENABLED =
"settings_global_actions_panel_enabled";
+ public static final String PIXEL_WALLPAPER_CATEGORY_SWITCH =
+ "settings_pixel_wallpaper_category_switch";
public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
private static final Map<String, String> DEFAULT_FLAGS;
@@ -60,6 +62,7 @@ public class FeatureFlagUtils {
DEFAULT_FLAGS.put(SCREENRECORD_LONG_PRESS, "false");
DEFAULT_FLAGS.put(FORCE_GLOBAL_ACTIONS_GRID_ENABLED, "false");
DEFAULT_FLAGS.put(GLOBAL_ACTIONS_PANEL_ENABLED, "true");
+ DEFAULT_FLAGS.put(PIXEL_WALLPAPER_CATEGORY_SWITCH, "false");
DEFAULT_FLAGS.put("settings_wifi_details_saved_screen", "true");
DEFAULT_FLAGS.put("settings_wifi_details_datausage_header", "false");
}
diff --git a/core/java/android/util/StatsLog.java b/core/java/android/util/StatsLog.java
index 30d3d7d069b5..dd22a26d61af 100644
--- a/core/java/android/util/StatsLog.java
+++ b/core/java/android/util/StatsLog.java
@@ -136,7 +136,13 @@ public final class StatsLog extends StatsLogInternal {
* @param trainName name of install train.
* @param trainVersionCode version code of the train.
* @param options optional flags about this install.
- * @param state current install state.
+ * The last 3 bits indicate options:
+ * 0x01: FLAG_REQUIRE_STAGING
+ * 0x02: FLAG_ROLLBACK_ENABLED
+ * 0x04: FLAG_REQUIRE_LOW_LATENCY_MONITOR
+ * @param state current install state. Defined as State enums in
+ * BinaryPushStateChanged atom in
+ * frameworks/base/cmds/statsd/src/atoms.proto
* @param experimentIds experiment ids.
* @return True if the log request was sent to statsd.
*/
diff --git a/core/java/android/util/proto/ProtoInputStream.java b/core/java/android/util/proto/ProtoInputStream.java
index cd2b6ce3dc67..c290dffc42c9 100644
--- a/core/java/android/util/proto/ProtoInputStream.java
+++ b/core/java/android/util/proto/ProtoInputStream.java
@@ -16,8 +16,6 @@
package android.util.proto;
-import android.annotation.TestApi;
-
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@@ -64,7 +62,6 @@ import java.util.ArrayList;
*
* @hide
*/
-@TestApi
public final class ProtoInputStream extends ProtoStream {
public static final int NO_MORE_FIELDS = -1;
diff --git a/core/java/android/util/proto/TEST_MAPPING b/core/java/android/util/proto/TEST_MAPPING
new file mode 100644
index 000000000000..cf9f0772ac2d
--- /dev/null
+++ b/core/java/android/util/proto/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "presubmit": [
+ {
+ "name": "ProtoInputStreamTests"
+ }
+ ]
+} \ No newline at end of file
diff --git a/core/java/android/view/IRecentsAnimationController.aidl b/core/java/android/view/IRecentsAnimationController.aidl
index 597b34bf8554..956161acd762 100644
--- a/core/java/android/view/IRecentsAnimationController.aidl
+++ b/core/java/android/view/IRecentsAnimationController.aidl
@@ -41,9 +41,11 @@ interface IRecentsAnimationController {
* with remote animation targets should be relinquished. If {@param moveHomeToTop} is true, then
* the home activity should be moved to the top. Otherwise, the home activity is hidden and the
* user is returned to the app.
+ * @param sendUserLeaveHint If set to true, {@link Activity#onUserLeaving} will be sent to the
+ * top resumed app, false otherwise.
*/
@UnsupportedAppUsage
- void finish(boolean moveHomeToTop);
+ void finish(boolean moveHomeToTop, boolean sendUserLeaveHint);
/**
* Called by the handler to indicate that the recents animation input consumer should be
diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java
index 1383463ef72f..a7801583f643 100644
--- a/core/java/android/view/InsetsSourceConsumer.java
+++ b/core/java/android/view/InsetsSourceConsumer.java
@@ -153,6 +153,7 @@ public class InsetsSourceConsumer {
return;
}
mVisible = visible;
+ applyHiddenToControl();
applyLocalVisibilityOverride();
mController.notifyVisibilityChanged();
}
diff --git a/core/java/android/view/LayoutInflater.java b/core/java/android/view/LayoutInflater.java
index f9b629c85fb0..1fc7f0e36095 100644
--- a/core/java/android/view/LayoutInflater.java
+++ b/core/java/android/view/LayoutInflater.java
@@ -416,23 +416,8 @@ public abstract class LayoutInflater {
}
private void initPrecompiledViews() {
- // Use the device config if enabled, otherwise default to the system property.
- String usePrecompiledLayout = null;
- try {
- usePrecompiledLayout = DeviceConfig.getProperty(
- DeviceConfig.NAMESPACE_RUNTIME,
- USE_PRECOMPILED_LAYOUT);
- } catch (Exception e) {
- // May be caused by permission errors reading the property (i.e. instant apps).
- }
+ // Precompiled layouts are not supported in this release.
boolean enabled = false;
- if (TextUtils.isEmpty(usePrecompiledLayout)) {
- enabled = SystemProperties.getBoolean(
- USE_PRECOMPILED_LAYOUT,
- false);
- } else {
- enabled = Boolean.parseBoolean(usePrecompiledLayout);
- }
initPrecompiledViews(enabled);
}
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index ec62e190d0b4..79363edb0955 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -439,10 +439,13 @@ public final class SurfaceControl implements Parcelable {
public static class ScreenshotGraphicBuffer {
private final GraphicBuffer mGraphicBuffer;
private final ColorSpace mColorSpace;
+ private final boolean mContainsSecureLayers;
- public ScreenshotGraphicBuffer(GraphicBuffer graphicBuffer, ColorSpace colorSpace) {
+ public ScreenshotGraphicBuffer(GraphicBuffer graphicBuffer, ColorSpace colorSpace,
+ boolean containsSecureLayers) {
mGraphicBuffer = graphicBuffer;
mColorSpace = colorSpace;
+ mContainsSecureLayers = containsSecureLayers;
}
/**
@@ -453,13 +456,16 @@ public final class SurfaceControl implements Parcelable {
* @param usage Hint indicating how the buffer will be used
* @param unwrappedNativeObject The native object of GraphicBuffer
* @param namedColorSpace Integer value of a named color space {@link ColorSpace.Named}
+ * @param containsSecureLayer Indicates whether this graphic buffer contains captured contents
+ * of secure layers, in which case the screenshot should not be persisted.
*/
private static ScreenshotGraphicBuffer createFromNative(int width, int height, int format,
- int usage, long unwrappedNativeObject, int namedColorSpace) {
+ int usage, long unwrappedNativeObject, int namedColorSpace,
+ boolean containsSecureLayers) {
GraphicBuffer graphicBuffer = GraphicBuffer.createFromExisting(width, height, format,
usage, unwrappedNativeObject);
ColorSpace colorSpace = ColorSpace.get(ColorSpace.Named.values()[namedColorSpace]);
- return new ScreenshotGraphicBuffer(graphicBuffer, colorSpace);
+ return new ScreenshotGraphicBuffer(graphicBuffer, colorSpace, containsSecureLayers);
}
public ColorSpace getColorSpace() {
@@ -469,6 +475,10 @@ public final class SurfaceControl implements Parcelable {
public GraphicBuffer getGraphicBuffer() {
return mGraphicBuffer;
}
+
+ public boolean containsSecureLayers() {
+ return mContainsSecureLayers;
+ }
}
/**
diff --git a/core/java/android/view/ViewTreeObserver.java b/core/java/android/view/ViewTreeObserver.java
index 2896bd049e7c..c50a3aa8ac7c 100644
--- a/core/java/android/view/ViewTreeObserver.java
+++ b/core/java/android/view/ViewTreeObserver.java
@@ -932,7 +932,8 @@ public final class ViewTreeObserver {
* @param listener listener to add
* @see View#setSystemGestureExclusionRects(List)
*/
- public void addOnSystemGestureExclusionRectsChangedListener(Consumer<List<Rect>> listener) {
+ public void addOnSystemGestureExclusionRectsChangedListener(
+ @NonNull Consumer<List<Rect>> listener) {
checkIsAlive();
if (mGestureExclusionListeners == null) {
mGestureExclusionListeners = new CopyOnWriteArray<>();
@@ -945,7 +946,8 @@ public final class ViewTreeObserver {
* @see #addOnSystemGestureExclusionRectsChangedListener(Consumer)
* @see View#setSystemGestureExclusionRects(List)
*/
- public void removeOnSystemGestureExclusionRectsChangedListener(Consumer<List<Rect>> listener) {
+ public void removeOnSystemGestureExclusionRectsChangedListener(
+ @NonNull Consumer<List<Rect>> listener) {
checkIsAlive();
if (mGestureExclusionListeners == null) {
return;
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 3544a8733c68..a9463e998bbb 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -2329,6 +2329,70 @@ public abstract class Window {
return 0;
}
+ /**
+ * Sets whether the system should ensure that the status bar has enough
+ * contrast when a fully transparent background is requested.
+ *
+ * <p>If set to this value, the system will determine whether a scrim is necessary
+ * to ensure that the status bar has enough contrast with the contents of
+ * this app, and set an appropriate effective bar background color accordingly.
+ *
+ * <p>When the status bar color has a non-zero alpha value, the value of this
+ * property has no effect.
+ *
+ * @see android.R.attr#ensureStatusBarContrastWhenTransparent
+ * @hide pending API
+ */
+ public void setEnsureStatusBarContrastWhenTransparent(boolean ensureContrast) {
+ }
+
+ /**
+ * Returns whether the system is ensuring that the status bar has enough contrast when a
+ * fully transparent background is requested.
+ *
+ * <p>When the status bar color has a non-zero alpha value, the value of this
+ * property has no effect.
+ *
+ * @see android.R.attr#ensureStatusBarContrastWhenTransparent
+ * @return true, if the system is ensuring contrast, false otherwise.
+ * @hide pending API
+ */
+ public boolean isEnsureStatusBarContrastWhenTransparent() {
+ return false;
+ }
+
+ /**
+ * Sets whether the system should ensure that the navigation bar has enough
+ * contrast when a fully transparent background is requested.
+ *
+ * <p>If set to this value, the system will determine whether a scrim is necessary
+ * to ensure that the navigation bar has enough contrast with the contents of
+ * this app, and set an appropriate effective bar background color accordingly.
+ *
+ * <p>When the navigation bar color has a non-zero alpha value, the value of this
+ * property has no effect.
+ *
+ * @see android.R.attr#ensureNavigationBarContrastWhenTransparent
+ * @hide pending API
+ */
+ public void setEnsureNavigationBarContrastWhenTransparent(boolean ensureContrast) {
+ }
+
+ /**
+ * Returns whether the system is ensuring that the navigation bar has enough contrast when a
+ * fully transparent background is requested.
+ *
+ * <p>When the navigation bar color has a non-zero alpha value, the value of this
+ * property has no effect.
+ *
+ * @return true, if the system is ensuring contrast, false otherwise.
+ * @see android.R.attr#ensureNavigationBarContrastWhenTransparent
+ * @hide pending API
+ */
+ public boolean isEnsureNavigationBarContrastWhenTransparent() {
+ return false;
+ }
+
/** @hide */
public void setTheme(int resId) {
}
diff --git a/core/java/android/view/contentcapture/ContentCaptureCondition.java b/core/java/android/view/contentcapture/ContentCaptureCondition.java
index cf171d738524..6f9d4d30909f 100644
--- a/core/java/android/view/contentcapture/ContentCaptureCondition.java
+++ b/core/java/android/view/contentcapture/ContentCaptureCondition.java
@@ -54,7 +54,9 @@ public final class ContentCaptureCondition implements Parcelable {
*
* @param locusId id of the condition, as defined by
* {@link ContentCaptureContext#getLocusId()}.
- * @param flags either {@link ContentCaptureCondition#FLAG_IS_REGEX} or {@code 0}.
+ * @param flags either {@link ContentCaptureCondition#FLAG_IS_REGEX} (to use a regular
+ * expression match) or {@code 0} (in which case the {@code LocusId} must be an exact match of
+ * the {@code LocusId} used in the {@link ContentCaptureContext}).
*/
public ContentCaptureCondition(@NonNull LocusId locusId, @Flags int flags) {
this.mLocusId = Preconditions.checkNotNull(locusId);
diff --git a/core/java/android/view/textclassifier/ConversationAction.java b/core/java/android/view/textclassifier/ConversationAction.java
index f2d878a8bf54..b8cb7bed8712 100644
--- a/core/java/android/view/textclassifier/ConversationAction.java
+++ b/core/java/android/view/textclassifier/ConversationAction.java
@@ -200,13 +200,11 @@ public final class ConversationAction implements Parcelable {
/**
* Returns the extended data related to this conversation action.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
/** Builder class to construct {@link ConversationAction}. */
diff --git a/core/java/android/view/textclassifier/ConversationActions.java b/core/java/android/view/textclassifier/ConversationActions.java
index dc7521296e9f..eddc672dc87f 100644
--- a/core/java/android/view/textclassifier/ConversationActions.java
+++ b/core/java/android/view/textclassifier/ConversationActions.java
@@ -214,13 +214,11 @@ public final class ConversationActions implements Parcelable {
/**
* Returns the extended data related to this conversation action.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
/** Builder class to construct a {@link Message} */
diff --git a/core/java/android/view/textclassifier/TextClassification.java b/core/java/android/view/textclassifier/TextClassification.java
index 9ede8fbd176e..4c4cb55cd3a0 100644
--- a/core/java/android/view/textclassifier/TextClassification.java
+++ b/core/java/android/view/textclassifier/TextClassification.java
@@ -265,13 +265,11 @@ public final class TextClassification implements Parcelable {
/**
* Returns the extended data.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
@Override
@@ -635,13 +633,11 @@ public final class TextClassification implements Parcelable {
/**
* Returns the extended data.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
/**
diff --git a/core/java/android/view/textclassifier/TextLinks.java b/core/java/android/view/textclassifier/TextLinks.java
index cde27a08fc79..c815f63b1708 100644
--- a/core/java/android/view/textclassifier/TextLinks.java
+++ b/core/java/android/view/textclassifier/TextLinks.java
@@ -125,13 +125,11 @@ public final class TextLinks implements Parcelable {
/**
* Returns the extended data.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
/**
@@ -413,13 +411,11 @@ public final class TextLinks implements Parcelable {
/**
* Returns the extended data.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
/**
diff --git a/core/java/android/view/textclassifier/TextSelection.java b/core/java/android/view/textclassifier/TextSelection.java
index 52989397e473..e378e65aa29e 100644
--- a/core/java/android/view/textclassifier/TextSelection.java
+++ b/core/java/android/view/textclassifier/TextSelection.java
@@ -112,13 +112,11 @@ public final class TextSelection implements Parcelable {
/**
* Returns the extended data.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
@Override
@@ -296,13 +294,11 @@ public final class TextSelection implements Parcelable {
/**
* Returns the extended data.
*
- * <p><b>NOTE: </b>Each call to this method returns a new bundle copy so clients should
- * prefer to hold a reference to the returned bundle rather than frequently calling this
- * method.
+ * <p><b>NOTE: </b>Do not modify this bundle.
*/
@NonNull
public Bundle getExtras() {
- return mExtras.deepCopy();
+ return mExtras;
}
/**
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 94be25f00e4c..eeca73234c30 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -43,6 +43,7 @@ import android.content.IntentSender;
import android.content.IntentSender.SendIntentException;
import android.content.ServiceConnection;
import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
import android.content.pm.LabeledIntent;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
@@ -117,12 +118,18 @@ import com.google.android.collect.Lists;
import java.io.IOException;
import java.lang.annotation.Retention;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
+/**
+ * The Chooser Activity handles intent resolution specifically for sharing intents -
+ * for example, those generated by @see android.content.Intent#createChooser(Intent, CharSequence).
+ *
+ */
public class ChooserActivity extends ResolverActivity {
private static final String TAG = "ChooserActivity";
@@ -200,6 +207,8 @@ public class ChooserActivity extends ResolverActivity {
/** {@link ChooserActivity#getBaseScore} */
private static final float SHORTCUT_TARGET_SCORE_BOOST = 10.f;
private static final String TARGET_DETAILS_FRAGMENT_TAG = "targetDetailsFragment";
+ // TODO: Update to handle landscape instead of using static value
+ private static final int MAX_RANKED_TARGETS = 4;
private final List<ChooserTargetServiceConnection> mServiceConnections = new ArrayList<>();
@@ -216,6 +225,7 @@ public class ChooserActivity extends ResolverActivity {
private boolean mListViewDataChanged = false;
+
@Retention(SOURCE)
@IntDef({CONTENT_PREVIEW_FILE, CONTENT_PREVIEW_IMAGE, CONTENT_PREVIEW_TEXT})
private @interface ContentPreviewType {
@@ -228,6 +238,9 @@ public class ChooserActivity extends ResolverActivity {
private static final int CONTENT_PREVIEW_TEXT = 3;
protected MetricsLogger mMetricsLogger;
+ // Sorted list of DisplayResolveInfos for the alphabetical app section.
+ private List<ResolverActivity.DisplayResolveInfo> mSortedList = new ArrayList<>();
+
private final Handler mChooserHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -935,8 +948,11 @@ public class ChooserActivity extends ResolverActivity {
// Note that this is only safe because the Intent handled by the ChooserActivity is
// guaranteed to contain no extras unknown to the local ClassLoader. That is why this
// method can not be replaced in the ResolverActivity whole hog.
- return getIntent().getBooleanExtra(Intent.EXTRA_AUTO_LAUNCH_SINGLE_CHOICE,
- super.shouldAutoLaunchSingleChoice(target));
+ if (!super.shouldAutoLaunchSingleChoice(target)) {
+ return false;
+ }
+
+ return getIntent().getBooleanExtra(Intent.EXTRA_AUTO_LAUNCH_SINGLE_CHOICE, true);
}
@Override
@@ -961,10 +977,6 @@ public class ChooserActivity extends ResolverActivity {
@Override
protected boolean onTargetSelected(TargetInfo target, boolean alwaysCheck) {
- if (target instanceof NotSelectableTargetInfo) {
- return false;
- }
-
if (mRefinementIntentSender != null) {
final Intent fillIn = new Intent();
final List<Intent> sourceIntents = target.getAllSourceIntents();
@@ -997,6 +1009,11 @@ public class ChooserActivity extends ResolverActivity {
@Override
public void startSelected(int which, boolean always, boolean filtered) {
+ TargetInfo targetInfo = mChooserListAdapter.targetInfoForPosition(which, filtered);
+ if (targetInfo != null && targetInfo instanceof NotSelectableTargetInfo) {
+ return;
+ }
+
final long selectionCost = System.currentTimeMillis() - mChooserShownTime;
super.startSelected(which, always, filtered);
@@ -1405,6 +1422,30 @@ public class ChooserActivity extends ResolverActivity {
}
}
+ private void updateAlphabeticalList() {
+ if (getDisplayList().size() > MAX_RANKED_TARGETS) {
+ mSortedList.clear();
+ mSortedList.addAll(getDisplayList());
+ Collections.sort(mSortedList, new AzInfoComparator(ChooserActivity.this));
+ }
+ }
+
+ /**
+ * Sort intents alphabetically based on display label.
+ */
+ class AzInfoComparator implements Comparator<ResolverActivity.DisplayResolveInfo> {
+ Collator mCollator;
+ AzInfoComparator(Context context) {
+ mCollator = Collator.getInstance(context.getResources().getConfiguration().locale);
+ }
+
+ @Override
+ public int compare(ResolverActivity.DisplayResolveInfo lhsp,
+ ResolverActivity.DisplayResolveInfo rhsp) {
+ return mCollator.compare(lhsp.getDisplayLabel(), rhsp.getDisplayLabel());
+ }
+ }
+
protected MetricsLogger getMetricsLogger() {
if (mMetricsLogger == null) {
mMetricsLogger = new MetricsLogger();
@@ -1451,7 +1492,8 @@ public class ChooserActivity extends ResolverActivity {
mPm,
getTargetIntent(),
getReferrerPackageName(),
- mLaunchedFromUid);
+ mLaunchedFromUid
+ );
}
@VisibleForTesting
@@ -1527,6 +1569,10 @@ public class ChooserActivity extends ResolverActivity {
public ChooserTarget getChooserTarget() {
return null;
}
+
+ public boolean isSuspended() {
+ return false;
+ }
}
final class PlaceHolderTargetInfo extends NotSelectableTargetInfo {
@@ -1552,6 +1598,7 @@ public class ChooserActivity extends ResolverActivity {
private final Intent mFillInIntent;
private final int mFillInFlags;
private final float mModifiedScore;
+ private boolean mIsSuspended;
SelectableTargetInfo(DisplayResolveInfo sourceInfo, ChooserTarget chooserTarget,
float modifiedScore) {
@@ -1580,6 +1627,8 @@ public class ChooserActivity extends ResolverActivity {
mFillInIntent = null;
mFillInFlags = 0;
+ ApplicationInfo ai = sourceInfo.getResolveInfo().activityInfo.applicationInfo;
+ mIsSuspended = (ai.flags & ApplicationInfo.FLAG_SUSPENDED) != 0;
}
private SelectableTargetInfo(SelectableTargetInfo other, Intent fillInIntent, int flags) {
@@ -1594,6 +1643,10 @@ public class ChooserActivity extends ResolverActivity {
mModifiedScore = other.mModifiedScore;
}
+ public boolean isSuspended() {
+ return mIsSuspended;
+ }
+
/**
* Since ShortcutInfos are returned by ShortcutManager, we can cache the shortcuts and skip
* the call to LauncherApps#getShortcuts(ShortcutQuery).
@@ -1974,6 +2027,7 @@ public class ChooserActivity extends ResolverActivity {
queryTargetServices(this);
}
+ updateAlphabeticalList();
}
@Override
@@ -1983,13 +2037,17 @@ public class ChooserActivity extends ResolverActivity {
@Override
public int getCount() {
- return super.getCount() + getSelectableServiceTargetCount() + getCallerTargetCount();
+ return getStandardTargetCount() + getAlphaTargetCount()
+ + getSelectableServiceTargetCount() + getCallerTargetCount();
}
@Override
public int getUnfilteredCount() {
- return super.getUnfilteredCount() + getSelectableServiceTargetCount()
- + getCallerTargetCount();
+ int appTargets = super.getUnfilteredCount();
+ if (appTargets > MAX_RANKED_TARGETS) {
+ appTargets = appTargets + MAX_RANKED_TARGETS;
+ }
+ return appTargets + getSelectableServiceTargetCount() + getCallerTargetCount();
}
public int getCallerTargetCount() {
@@ -2018,7 +2076,13 @@ public class ChooserActivity extends ResolverActivity {
}
public int getStandardTargetCount() {
- return super.getCount();
+ int standardCount = super.getCount();
+ return standardCount > MAX_RANKED_TARGETS ? MAX_RANKED_TARGETS : standardCount;
+ }
+
+ int getAlphaTargetCount() {
+ int standardCount = super.getCount();
+ return standardCount > MAX_RANKED_TARGETS ? standardCount : 0;
}
public int getPositionTargetType(int position) {
@@ -2036,7 +2100,7 @@ public class ChooserActivity extends ResolverActivity {
}
offset += callerTargetCount;
- final int standardTargetCount = super.getCount();
+ final int standardTargetCount = getStandardTargetCount();
if (position - offset < standardTargetCount) {
return TARGET_STANDARD;
}
@@ -2049,10 +2113,17 @@ public class ChooserActivity extends ResolverActivity {
return targetInfoForPosition(position, true);
}
+
+ /**
+ * Find target info for a given position.
+ * Since ChooserActivity displays several sections of content, determine which
+ * section provides this item.
+ */
@Override
public TargetInfo targetInfoForPosition(int position, boolean filtered) {
int offset = 0;
+ // Direct share targets
final int serviceTargetCount = filtered ? getServiceTargetCount() :
getSelectableServiceTargetCount();
if (position < serviceTargetCount) {
@@ -2060,16 +2131,32 @@ public class ChooserActivity extends ResolverActivity {
}
offset += serviceTargetCount;
+ // Targets provided by calling app
final int callerTargetCount = getCallerTargetCount();
if (position - offset < callerTargetCount) {
return mCallerTargets.get(position - offset);
}
offset += callerTargetCount;
- return filtered ? super.getItem(position - offset)
- : getDisplayResolveInfo(position - offset);
+ // Ranked app targets
+ if (position - offset < MAX_RANKED_TARGETS) {
+ return filtered ? super.getItem(position - offset)
+ : getDisplayResolveInfo(position - offset);
+ }
+ offset += MAX_RANKED_TARGETS;
+
+ // Alphabetical complete app target list.
+ Log.e(TAG, mSortedList.toString());
+ if (position - offset < mSortedList.size()) {
+ return mSortedList.get(position - offset);
+ }
+
+ return null;
+
}
+
+
/**
* Evaluate targets for inclusion in the direct share area. May not be included
* if score is too low.
@@ -2100,6 +2187,9 @@ public class ChooserActivity extends ResolverActivity {
final float baseScore = getBaseScore(origTarget, isShortcutResult);
Collections.sort(targets, mBaseTargetComparator);
+
+
+
float lastScore = 0;
boolean shouldNotify = false;
for (int i = 0, N = Math.min(targets.size(), MAX_TARGETS_PER_SERVICE); i < N; i++) {
@@ -2204,6 +2294,7 @@ public class ChooserActivity extends ResolverActivity {
}
}
+
private boolean isSendAction(Intent targetIntent) {
if (targetIntent == null) {
return false;
@@ -2299,6 +2390,9 @@ public class ChooserActivity extends ResolverActivity {
+ Math.ceil(
(float) mChooserListAdapter.getStandardTargetCount()
/ getMaxTargetsPerRow())
+ + Math.ceil(
+ (float) mChooserListAdapter.getAlphaTargetCount()
+ / getMaxTargetsPerRow())
);
}
@@ -2498,10 +2592,8 @@ public class ChooserActivity extends ResolverActivity {
if (startType != lastStartType || rowPosition == getContentPreviewRowCount()) {
row.setBackground(mChooserRowLayer);
- setVertPadding(row, 0, 0);
} else {
row.setBackground(null);
- setVertPadding(row, 0, 0);
}
int columnCount = holder.getColumnCount();
@@ -2548,10 +2640,6 @@ public class ChooserActivity extends ResolverActivity {
}
}
- private void setVertPadding(ViewGroup row, int top, int bottom) {
- row.setPadding(row.getPaddingLeft(), top, row.getPaddingRight(), bottom);
- }
-
int getFirstRowPosition(int row) {
row -= getContentPreviewRowCount();
@@ -2961,6 +3049,7 @@ public class ChooserActivity extends ResolverActivity {
private int mRadius = 0;
private Path mPath = new Path();
private Paint mOverlayPaint = new Paint(0);
+ private Paint mRoundRectPaint = new Paint(0);
private Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private String mExtraImageCount = null;
@@ -2984,6 +3073,11 @@ public class ChooserActivity extends ResolverActivity {
mOverlayPaint.setColor(0x99000000);
mOverlayPaint.setStyle(Paint.Style.FILL);
+ mRoundRectPaint.setColor(context.getResources().getColor(R.color.chooser_row_divider));
+ mRoundRectPaint.setStyle(Paint.Style.STROKE);
+ mRoundRectPaint.setStrokeWidth(context.getResources()
+ .getDimensionPixelSize(R.dimen.chooser_preview_image_border));
+
mTextPaint.setColor(Color.WHITE);
mTextPaint.setTextSize(context.getResources()
.getDimensionPixelSize(R.dimen.chooser_preview_image_font_size));
@@ -2993,8 +3087,8 @@ public class ChooserActivity extends ResolverActivity {
private void updatePath(int width, int height) {
mPath.reset();
- int imageWidth = width - getPaddingRight();
- int imageHeight = height - getPaddingBottom();
+ int imageWidth = width - getPaddingRight() - getPaddingLeft();
+ int imageHeight = height - getPaddingBottom() - getPaddingTop();
mPath.addRoundRect(getPaddingLeft(), getPaddingTop(), imageWidth, imageHeight, mRadius,
mRadius, Path.Direction.CW);
}
@@ -3026,7 +3120,6 @@ public class ChooserActivity extends ResolverActivity {
updatePath(width, height);
}
-
@Override
protected void onDraw(Canvas canvas) {
if (mRadius != 0) {
@@ -3035,8 +3128,12 @@ public class ChooserActivity extends ResolverActivity {
super.onDraw(canvas);
+ int x = getPaddingLeft();
+ int y = getPaddingRight();
+ int width = getWidth() - getPaddingRight() - getPaddingLeft();
+ int height = getHeight() - getPaddingBottom() - getPaddingTop();
if (mExtraImageCount != null) {
- canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), mOverlayPaint);
+ canvas.drawRect(x, y, width, height, mOverlayPaint);
int xPos = canvas.getWidth() / 2;
int yPos = (int) ((canvas.getHeight() / 2.0f)
@@ -3044,6 +3141,8 @@ public class ChooserActivity extends ResolverActivity {
canvas.drawText(mExtraImageCount, xPos, yPos, mTextPaint);
}
+
+ canvas.drawRoundRect(x, y, width, height, mRadius, mRadius, mRoundRectPaint);
}
}
}
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index f671a753493e..ad1e767f011a 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -44,6 +44,8 @@ import android.content.pm.UserInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@@ -132,6 +134,8 @@ public class ResolverActivity extends Activity {
private boolean mRegistered;
+ private ColorMatrixColorFilter mSuspendedMatrixColorFilter;
+
/** See {@link #setRetainInOnStop}. */
private boolean mRetainInOnStop;
@@ -350,6 +354,8 @@ public class ResolverActivity extends Activity {
bindProfileView();
}
+ initSuspendedColorMatrix();
+
if (isVoiceInteraction()) {
onSetupVoiceInteraction();
}
@@ -367,6 +373,25 @@ public class ResolverActivity extends Activity {
mAdapter.handlePackagesChanged();
}
+ private void initSuspendedColorMatrix() {
+ int grayValue = 127;
+ float scale = 0.5f; // half bright
+
+ ColorMatrix tempBrightnessMatrix = new ColorMatrix();
+ float[] mat = tempBrightnessMatrix.getArray();
+ mat[0] = scale;
+ mat[6] = scale;
+ mat[12] = scale;
+ mat[4] = grayValue;
+ mat[9] = grayValue;
+ mat[14] = grayValue;
+
+ ColorMatrix matrix = new ColorMatrix();
+ matrix.setSaturation(0.0f);
+ matrix.preConcat(tempBrightnessMatrix);
+ mSuspendedMatrixColorFilter = new ColorMatrixColorFilter(matrix);
+ }
+
/**
* Perform any initialization needed for voice interaction.
*/
@@ -1019,7 +1044,14 @@ public class ResolverActivity extends Activity {
if (target != null) {
safelyStartActivity(target);
+
+ // Rely on the ActivityManager to pop up a dialog regarding app suspension
+ // and return false
+ if (target.isSuspended()) {
+ return false;
+ }
}
+
return true;
}
@@ -1106,7 +1138,7 @@ public class ResolverActivity extends Activity {
}
public boolean shouldAutoLaunchSingleChoice(TargetInfo target) {
- return true;
+ return !target.isSuspended();
}
public void showTargetDetails(ResolveInfo ri) {
@@ -1326,6 +1358,7 @@ public class ResolverActivity extends Activity {
private final CharSequence mExtendedInfo;
private final Intent mResolvedIntent;
private final List<Intent> mSourceIntents = new ArrayList<>();
+ private boolean mIsSuspended;
public DisplayResolveInfo(Intent originalIntent, ResolveInfo pri, CharSequence pLabel,
CharSequence pInfo, Intent pOrigIntent) {
@@ -1341,6 +1374,8 @@ public class ResolverActivity extends Activity {
final ActivityInfo ai = mResolveInfo.activityInfo;
intent.setComponent(new ComponentName(ai.applicationInfo.packageName, ai.name));
+ mIsSuspended = (ai.applicationInfo.flags & ApplicationInfo.FLAG_SUSPENDED) != 0;
+
mResolvedIntent = intent;
}
@@ -1410,7 +1445,6 @@ public class ResolverActivity extends Activity {
@Override
public boolean startAsCaller(ResolverActivity activity, Bundle options, int userId) {
-
if (mEnableChooserDelegate) {
return activity.startAsCallerImpl(mResolvedIntent, options, false, userId);
} else {
@@ -1424,6 +1458,14 @@ public class ResolverActivity extends Activity {
activity.startActivityAsUser(mResolvedIntent, options, user);
return false;
}
+
+ public boolean isSuspended() {
+ return mIsSuspended;
+ }
+ }
+
+ List<DisplayResolveInfo> getDisplayList() {
+ return mAdapter.mDisplayList;
}
/**
@@ -1515,6 +1557,11 @@ public class ResolverActivity extends Activity {
* @return the list of supported source intents deduped against this single target
*/
List<Intent> getAllSourceIntents();
+
+ /**
+ * @return true if this target can be selected by the user
+ */
+ boolean isSuspended();
}
public class ResolveListAdapter extends BaseAdapter {
@@ -1523,12 +1570,12 @@ public class ResolverActivity extends Activity {
private final List<ResolveInfo> mBaseResolveList;
protected ResolveInfo mLastChosen;
private DisplayResolveInfo mOtherProfile;
- private boolean mHasExtendedInfo;
private ResolverListController mResolverListController;
private int mPlaceholderCount;
protected final LayoutInflater mInflater;
+ // This one is the list that the Adapter will actually present.
List<DisplayResolveInfo> mDisplayList;
List<ResolvedComponentInfo> mUnfilteredResolveList;
@@ -1709,6 +1756,7 @@ public class ResolverActivity extends Activity {
}
}
+
private void processSortedList(List<ResolvedComponentInfo> sortedComponents) {
int N;
if (sortedComponents != null && (N = sortedComponents.size()) != 0) {
@@ -1746,6 +1794,7 @@ public class ResolverActivity extends Activity {
}
}
+
for (ResolvedComponentInfo rci : sortedComponents) {
final ResolveInfo ri = rci.getResolveInfoAt(0);
if (ri != null) {
@@ -1755,9 +1804,12 @@ public class ResolverActivity extends Activity {
}
}
+
postListReadyRunnable();
}
+
+
/**
* Some necessary methods for creating the list are initiated in onCreate and will also
* determine the layout known. We therefore can't update the UI inline and post to the
@@ -1891,19 +1943,6 @@ public class ResolverActivity extends Activity {
return position;
}
- public boolean hasExtendedInfo() {
- return mHasExtendedInfo;
- }
-
- public boolean hasResolvedTarget(ResolveInfo info) {
- for (int i = 0, N = mDisplayList.size(); i < N; i++) {
- if (resolveInfoMatch(info, mDisplayList.get(i).getResolveInfo())) {
- return true;
- }
- }
- return false;
- }
-
public int getDisplayResolveInfoCount() {
return mDisplayList.size();
}
@@ -1960,6 +1999,12 @@ public class ResolverActivity extends Activity {
holder.text2.setText(subLabel);
}
+ if (info.isSuspended()) {
+ holder.icon.setColorFilter(mSuspendedMatrixColorFilter);
+ } else {
+ holder.icon.setColorFilter(null);
+ }
+
if (info instanceof DisplayResolveInfo
&& !((DisplayResolveInfo) info).hasDisplayIcon()) {
new LoadIconTask((DisplayResolveInfo) info, holder.icon).execute();
@@ -1969,6 +2014,7 @@ public class ResolverActivity extends Activity {
}
}
+
@VisibleForTesting
public static final class ResolvedComponentInfo {
public final ComponentName name;
diff --git a/core/java/com/android/internal/app/ResolverListController.java b/core/java/com/android/internal/app/ResolverListController.java
index 156baf03f563..a3cfa8786d59 100644
--- a/core/java/com/android/internal/app/ResolverListController.java
+++ b/core/java/com/android/internal/app/ResolverListController.java
@@ -25,7 +25,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.RemoteException;
@@ -153,11 +152,6 @@ public class ResolverListController {
}
// Filter out any activities that the launched uid does not have permission for.
- //
- // Also filter out those that are suspended because they couldn't be started. We don't do this
- // when we have an explicit list of resolved activities, because that only happens when
- // we are being subclassed, so we can safely launch whatever they gave us.
- //
// To preserve the inputList, optionally will return the original list if any modification has
// been made.
@VisibleForTesting
@@ -171,9 +165,8 @@ public class ResolverListController {
int granted = ActivityManager.checkComponentPermission(
ai.permission, mLaunchedFromUid,
ai.applicationInfo.uid, ai.exported);
- boolean suspended = (ai.applicationInfo.flags
- & ApplicationInfo.FLAG_SUSPENDED) != 0;
- if (granted != PackageManager.PERMISSION_GRANTED || suspended
+
+ if (granted != PackageManager.PERMISSION_GRANTED
|| isComponentFiltered(ai.getComponentName())) {
// Access not allowed! We're about to filter an item,
// so modify the unfiltered version if it hasn't already been modified.
@@ -253,6 +246,7 @@ public class ResolverListController {
isComputed = true;
}
Collections.sort(inputList, mResolverComparator);
+
long afterRank = System.currentTimeMillis();
if (DEBUG) {
Log.d(TAG, "Time Cost: " + Long.toString(afterRank - beforeRank));
@@ -262,6 +256,7 @@ public class ResolverListController {
}
}
+
private static boolean isSameResolvedComponent(ResolveInfo a,
ResolverActivity.ResolvedComponentInfo b) {
final ActivityInfo ai = a.activityInfo;
diff --git a/core/java/com/android/internal/app/SuspendedAppActivity.java b/core/java/com/android/internal/app/SuspendedAppActivity.java
index 70935d4ac076..712774a12cdf 100644
--- a/core/java/com/android/internal/app/SuspendedAppActivity.java
+++ b/core/java/com/android/internal/app/SuspendedAppActivity.java
@@ -79,7 +79,7 @@ public class SuspendedAppActivity extends AlertActivity
: ID_NULL;
if (iconId != ID_NULL && mSuspendingAppResources != null) {
try {
- return mSuspendingAppResources.getDrawable(iconId, null);
+ return mSuspendingAppResources.getDrawable(iconId, getTheme());
} catch (Resources.NotFoundException nfe) {
Slog.e(TAG, "Could not resolve drawable resource id " + iconId);
}
diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java
index b26efc0dbd10..2f9136a2577e 100644
--- a/core/java/com/android/internal/app/procstats/ProcessState.java
+++ b/core/java/com/android/internal/app/procstats/ProcessState.java
@@ -78,8 +78,8 @@ public final class ProcessState {
STATE_PERSISTENT, // ActivityManager.PROCESS_STATE_PERSISTENT_UI
STATE_TOP, // ActivityManager.PROCESS_STATE_TOP
STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE_LOCATION
- STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE
STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_BOUND_TOP
+ STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE
STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE
STATE_IMPORTANT_FOREGROUND, // ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND
STATE_IMPORTANT_BACKGROUND, // ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND
diff --git a/core/java/com/android/internal/infra/AbstractRemoteService.java b/core/java/com/android/internal/infra/AbstractRemoteService.java
index 1155854efd55..ef5178aca40a 100644
--- a/core/java/com/android/internal/infra/AbstractRemoteService.java
+++ b/core/java/com/android/internal/infra/AbstractRemoteService.java
@@ -449,13 +449,13 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I
return;
}
mBinding = false;
- mService = getServiceInterface(service);
try {
service.linkToDeath(AbstractRemoteService.this, 0);
} catch (RemoteException re) {
handleBinderDied();
return;
}
+ mService = getServiceInterface(service);
handleOnConnectedStateChangedInternal(true);
mServiceDied = false;
}
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index 66a63290cdbd..d945e139dd0f 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -38,6 +38,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION;
+
import static com.android.internal.policy.PhoneWindow.FEATURE_OPTIONS_PANEL;
import android.animation.Animator;
@@ -125,6 +126,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
// The height of a window which has not in DIP.
private final static int DECOR_SHADOW_UNFOCUSED_HEIGHT_IN_DIP = 5;
+ private static final int SCRIM_LIGHT = 0x99ffffff; // 60% white
+
public static final ColorViewAttributes STATUS_BAR_COLOR_VIEW_ATTRIBUTES =
new ColorViewAttributes(SYSTEM_UI_FLAG_FULLSCREEN, FLAG_TRANSLUCENT_STATUS,
Gravity.TOP, Gravity.LEFT, Gravity.RIGHT,
@@ -1214,7 +1217,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
&& mLastOriginalBackgroundDrawable == mOriginalBackgroundDrawable) {
return;
}
- if (mBackgroundInsets.equals(Insets.NONE)) {
+ if (mOriginalBackgroundDrawable == null || mBackgroundInsets.equals(Insets.NONE)) {
setBackground(mOriginalBackgroundDrawable);
} else {
setBackground(new InsetDrawable(mOriginalBackgroundDrawable,
@@ -1237,19 +1240,31 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
private int calculateStatusBarColor() {
return calculateBarColor(mWindow.getAttributes().flags, FLAG_TRANSLUCENT_STATUS,
- mSemiTransparentBarColor, mWindow.mStatusBarColor);
+ mSemiTransparentBarColor, mWindow.mStatusBarColor,
+ getWindowSystemUiVisibility(), SYSTEM_UI_FLAG_LIGHT_STATUS_BAR,
+ mWindow.mEnsureStatusBarContrastWhenTransparent);
}
private int calculateNavigationBarColor() {
return calculateBarColor(mWindow.getAttributes().flags, FLAG_TRANSLUCENT_NAVIGATION,
- mSemiTransparentBarColor, mWindow.mNavigationBarColor);
+ mSemiTransparentBarColor, mWindow.mNavigationBarColor,
+ getWindowSystemUiVisibility(), SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR,
+ mWindow.mEnsureNavigationBarContrastWhenTransparent
+ && getContext().getResources().getBoolean(R.bool.config_navBarNeedsScrim));
}
public static int calculateBarColor(int flags, int translucentFlag, int semiTransparentBarColor,
- int barColor) {
- return (flags & translucentFlag) != 0 ? semiTransparentBarColor
- : (flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0 ? barColor
- : Color.BLACK;
+ int barColor, int sysuiVis, int lightSysuiFlag, boolean scrimTransparent) {
+ if ((flags & translucentFlag) != 0) {
+ return semiTransparentBarColor;
+ } else if ((flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0) {
+ return Color.BLACK;
+ } else if (scrimTransparent && barColor == Color.TRANSPARENT) {
+ boolean light = (sysuiVis & lightSysuiFlag) != 0;
+ return light ? SCRIM_LIGHT : semiTransparentBarColor;
+ } else {
+ return barColor;
+ }
}
private int getCurrentColor(ColorViewState state) {
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 04559e4e55c6..16d6c52d82ea 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -50,6 +50,7 @@ import android.media.AudioManager;
import android.media.session.MediaController;
import android.media.session.MediaSessionManager;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcel;
@@ -247,6 +248,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
private boolean mForcedStatusBarColor = false;
private boolean mForcedNavigationBarColor = false;
+ boolean mEnsureStatusBarContrastWhenTransparent;
+ boolean mEnsureNavigationBarContrastWhenTransparent;
+
@UnsupportedAppUsage
private CharSequence mTitle = null;
@@ -2439,6 +2443,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
final boolean targetPreHoneycomb = targetSdk < android.os.Build.VERSION_CODES.HONEYCOMB;
final boolean targetPreIcs = targetSdk < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
final boolean targetPreL = targetSdk < android.os.Build.VERSION_CODES.LOLLIPOP;
+ final boolean targetPreQ = targetSdk < Build.VERSION_CODES.Q;
final boolean targetHcNeedsOptions = context.getResources().getBoolean(
R.bool.target_honeycomb_needs_options_menu);
final boolean noActionBar = !hasFeature(FEATURE_ACTION_BAR) || hasFeature(FEATURE_NO_TITLE);
@@ -2457,6 +2462,12 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
mNavigationBarDividerColor = a.getColor(R.styleable.Window_navigationBarDividerColor,
0x00000000);
}
+ if (!targetPreQ) {
+ mEnsureStatusBarContrastWhenTransparent = a.getBoolean(
+ R.styleable.Window_ensureStatusBarContrastWhenTransparent, false);
+ mEnsureNavigationBarContrastWhenTransparent = a.getBoolean(
+ R.styleable.Window_ensureNavigationBarContrastWhenTransparent, true);
+ }
WindowManager.LayoutParams params = getAttributes();
@@ -3845,6 +3856,32 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
return mNavigationBarDividerColor;
}
+ @Override
+ public void setEnsureStatusBarContrastWhenTransparent(boolean ensureContrast) {
+ mEnsureStatusBarContrastWhenTransparent = ensureContrast;
+ if (mDecor != null) {
+ mDecor.updateColorViews(null, false /* animate */);
+ }
+ }
+
+ @Override
+ public boolean isEnsureStatusBarContrastWhenTransparent() {
+ return mEnsureStatusBarContrastWhenTransparent;
+ }
+
+ @Override
+ public void setEnsureNavigationBarContrastWhenTransparent(boolean ensureContrast) {
+ mEnsureNavigationBarContrastWhenTransparent = ensureContrast;
+ if (mDecor != null) {
+ mDecor.updateColorViews(null, false /* animate */);
+ }
+ }
+
+ @Override
+ public boolean isEnsureNavigationBarContrastWhenTransparent() {
+ return mEnsureNavigationBarContrastWhenTransparent;
+ }
+
public void setIsStartingWindow(boolean isStartingWindow) {
mIsStartingWindow = isStartingWindow;
}
diff --git a/core/java/com/android/internal/util/MimeIconUtils.java b/core/java/com/android/internal/util/MimeIconUtils.java
index 0b5fa6d4538a..8523b4ea9b43 100644
--- a/core/java/com/android/internal/util/MimeIconUtils.java
+++ b/core/java/com/android/internal/util/MimeIconUtils.java
@@ -18,7 +18,7 @@ package com.android.internal.util;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.content.ContentResolver.TypeInfo;
+import android.content.ContentResolver.MimeTypeInfo;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.text.TextUtils;
@@ -34,9 +34,9 @@ import java.util.Objects;
public class MimeIconUtils {
@GuardedBy("sCache")
- private static final ArrayMap<String, TypeInfo> sCache = new ArrayMap<>();
+ private static final ArrayMap<String, MimeTypeInfo> sCache = new ArrayMap<>();
- private static TypeInfo buildTypeInfo(String mimeType, int iconId,
+ private static MimeTypeInfo buildTypeInfo(String mimeType, int iconId,
int labelId, int extLabelId) {
final Resources res = Resources.getSystem();
@@ -49,10 +49,10 @@ public class MimeIconUtils {
label = res.getString(labelId);
}
- return new TypeInfo(Icon.createWithResource(res, iconId), label, label);
+ return new MimeTypeInfo(Icon.createWithResource(res, iconId), label, label);
}
- private static @Nullable TypeInfo buildTypeInfo(@NonNull String mimeType) {
+ private static @Nullable MimeTypeInfo buildTypeInfo(@NonNull String mimeType) {
switch (mimeType) {
case "inode/directory":
case "vnd.android.document/directory":
@@ -222,7 +222,7 @@ public class MimeIconUtils {
}
}
- private static @Nullable TypeInfo buildGenericTypeInfo(@NonNull String mimeType) {
+ private static @Nullable MimeTypeInfo buildGenericTypeInfo(@NonNull String mimeType) {
// Look for partial matches
if (mimeType.startsWith("audio/")) {
return buildTypeInfo(mimeType, R.drawable.ic_doc_audio,
@@ -252,12 +252,12 @@ public class MimeIconUtils {
R.string.mime_type_generic, R.string.mime_type_generic_ext);
}
- public static @NonNull TypeInfo getTypeInfo(@NonNull String mimeType) {
+ public static @NonNull MimeTypeInfo getTypeInfo(@NonNull String mimeType) {
// Normalize MIME type
mimeType = mimeType.toLowerCase(Locale.US);
synchronized (sCache) {
- TypeInfo res = sCache.get(mimeType);
+ MimeTypeInfo res = sCache.get(mimeType);
if (res == null) {
res = buildTypeInfo(mimeType);
sCache.put(mimeType, res);
diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp
index 29051f14c72f..1c247cbb7743 100644
--- a/core/jni/android_hardware_camera2_DngCreator.cpp
+++ b/core/jni/android_hardware_camera2_DngCreator.cpp
@@ -19,6 +19,7 @@
#include <inttypes.h>
#include <string.h>
#include <algorithm>
+#include <array>
#include <memory>
#include <vector>
#include <cmath>
@@ -976,6 +977,153 @@ static status_t generateNoiseProfile(const double* perChannelNoiseProfile, uint8
return OK;
}
+static void undistort(/*inout*/double& x, /*inout*/double& y,
+ const std::array<float, 6>& distortion,
+ const float cx, const float cy, const float f) {
+ double xp = (x - cx) / f;
+ double yp = (y - cy) / f;
+
+ double x2 = xp * xp;
+ double y2 = yp * yp;
+ double r2 = x2 + y2;
+ double xy2 = 2.0 * xp * yp;
+
+ const float k0 = distortion[0];
+ const float k1 = distortion[1];
+ const float k2 = distortion[2];
+ const float k3 = distortion[3];
+ const float p1 = distortion[4];
+ const float p2 = distortion[5];
+
+ double kr = k0 + ((k3 * r2 + k2) * r2 + k1) * r2;
+ double xpp = xp * kr + p1 * xy2 + p2 * (r2 + 2.0 * x2);
+ double ypp = yp * kr + p1 * (r2 + 2.0 * y2) + p2 * xy2;
+
+ x = xpp * f + cx;
+ y = ypp * f + cy;
+ return;
+}
+
+static inline bool unDistortWithinPreCorrArray(
+ double x, double y,
+ const std::array<float, 6>& distortion,
+ const float cx, const float cy, const float f,
+ int preCorrW, int preCorrH) {
+ undistort(x, y, distortion, cx, cy, f);
+ if (x < 0.0 || y < 0.0 || x > preCorrW - 1 || y > preCorrH - 1) {
+ return false;
+ }
+ return true;
+}
+
+static inline bool boxWithinPrecorrectionArray(
+ int left, int top, int right, int bottom,
+ const std::array<float, 6>& distortion,
+ const float& cx, const float& cy, const float& f,
+ const int& preCorrW, const int& preCorrH){
+ // Top row
+ if (!unDistortWithinPreCorrArray(left, top, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ if (!unDistortWithinPreCorrArray(cx, top, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ if (!unDistortWithinPreCorrArray(right, top, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ // Middle row
+ if (!unDistortWithinPreCorrArray(left, cy, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ if (!unDistortWithinPreCorrArray(right, cy, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ // Bottom row
+ if (!unDistortWithinPreCorrArray(left, bottom, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ if (!unDistortWithinPreCorrArray(cx, bottom, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+
+ if (!unDistortWithinPreCorrArray(right, bottom, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ return false;
+ }
+ return true;
+}
+
+static inline bool scaledBoxWithinPrecorrectionArray(
+ double scale/*must be <= 1.0*/,
+ const std::array<float, 6>& distortion,
+ const float cx, const float cy, const float f,
+ const int preCorrW, const int preCorrH){
+
+ double left = cx * (1.0 - scale);
+ double right = (preCorrW - 1) * scale + cx * (1.0 - scale);
+ double top = cy * (1.0 - scale);
+ double bottom = (preCorrH - 1) * scale + cy * (1.0 - scale);
+
+ return boxWithinPrecorrectionArray(left, top, right, bottom,
+ distortion, cx, cy, f, preCorrW, preCorrH);
+}
+
+static status_t findPostCorrectionScale(
+ double stepSize, double minScale,
+ const std::array<float, 6>& distortion,
+ const float cx, const float cy, const float f,
+ const int preCorrW, const int preCorrH,
+ /*out*/ double* outScale) {
+ if (outScale == nullptr) {
+ ALOGE("%s: outScale must not be null", __FUNCTION__);
+ return BAD_VALUE;
+ }
+
+ for (double scale = 1.0; scale > minScale; scale -= stepSize) {
+ if (scaledBoxWithinPrecorrectionArray(
+ scale, distortion, cx, cy, f, preCorrW, preCorrH)) {
+ *outScale = scale;
+ return OK;
+ }
+ }
+ ALOGE("%s: cannot find cropping scale for lens distortion: stepSize %f, minScale %f",
+ __FUNCTION__, stepSize, minScale);
+ return BAD_VALUE;
+}
+
+// Apply a scale factor to distortion coefficients so that the image is zoomed out and all pixels
+// are sampled within the precorrection array
+static void normalizeLensDistortion(
+ /*inout*/std::array<float, 6>& distortion,
+ float cx, float cy, float f, int preCorrW, int preCorrH) {
+ ALOGV("%s: distortion [%f, %f, %f, %f, %f, %f], (cx,cy) (%f, %f), f %f, (W,H) (%d, %d)",
+ __FUNCTION__, distortion[0], distortion[1], distortion[2],
+ distortion[3], distortion[4], distortion[5],
+ cx, cy, f, preCorrW, preCorrH);
+
+ // Only update distortion coeffients if we can find a good bounding box
+ double scale = 1.0;
+ if (OK == findPostCorrectionScale(0.002, 0.5,
+ distortion, cx, cy, f, preCorrW, preCorrH,
+ /*out*/&scale)) {
+ ALOGV("%s: scaling distortion coefficients by %f", __FUNCTION__, scale);
+ // The formula:
+ // xc = xi * (k0 + k1*r^2 + k2*r^4 + k3*r^6) + k4 * (2*xi*yi) + k5 * (r^2 + 2*xi^2)
+ // To create effective zoom we want to replace xi by xi *m, yi by yi*m and r^2 by r^2*m^2
+ // Factor the extra m power terms into k0~k6
+ std::array<float, 6> scalePowers = {1, 3, 5, 7, 2, 2};
+ for (size_t i = 0; i < 6; i++) {
+ distortion[i] *= pow(scale, scalePowers[i]);
+ }
+ }
+ return;
+}
+
// ----------------------------------------------------------------------------
extern "C" {
@@ -1086,9 +1234,9 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image
uint32_t pixHeight = static_cast<uint32_t>(pixelArrayEntry.data.i32[1]);
if (!((imageWidth == preWidth && imageHeight == preHeight) ||
- (imageWidth == pixWidth && imageHeight == pixHeight))) {
+ (imageWidth == pixWidth && imageHeight == pixHeight))) {
jniThrowException(env, "java/lang/AssertionError",
- "Height and width of imate buffer did not match height and width of"
+ "Height and width of image buffer did not match height and width of"
"either the preCorrectionActiveArraySize or the pixelArraySize.");
return nullptr;
}
@@ -1793,7 +1941,7 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image
status_t err = OK;
// Set up rectilinear distortion correction
- float distortion[6] {1.f, 0.f, 0.f, 0.f, 0.f, 0.f};
+ std::array<float, 6> distortion = {1.f, 0.f, 0.f, 0.f, 0.f, 0.f};
bool gotDistortion = false;
camera_metadata_entry entry4 =
@@ -1810,6 +1958,19 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image
results.find(ANDROID_LENS_DISTORTION);
if (entry3.count == 5) {
gotDistortion = true;
+
+
+ // Scale the distortion coefficients to create a zoom in warpped image so that all
+ // pixels are drawn within input image.
+ for (size_t i = 0; i < entry3.count; i++) {
+ distortion[i+1] = entry3.data.f[i];
+ }
+
+ // TODO b/118690688: deal with the case where RAW size != preCorrSize
+ if (preWidth == imageWidth && preHeight == imageHeight) {
+ normalizeLensDistortion(distortion, cx, cy, f, preWidth, preHeight);
+ }
+
float m_x = std::fmaxf(preWidth-1 - cx, cx);
float m_y = std::fmaxf(preHeight-1 - cy, cy);
float m_sq = m_x*m_x + m_y*m_y;
@@ -1831,7 +1992,7 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image
m / f
};
for (size_t i = 0; i < entry3.count; i++) {
- distortion[i+1] = convCoeff[i] * entry3.data.f[i];
+ distortion[i+1] *= convCoeff[i];
}
} else {
entry3 = results.find(ANDROID_LENS_RADIAL_DISTORTION);
@@ -1859,8 +2020,8 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image
}
}
if (gotDistortion) {
- err = builder.addWarpRectilinearForMetadata(distortion, preWidth, preHeight, cx,
- cy);
+ err = builder.addWarpRectilinearForMetadata(
+ distortion.data(), preWidth, preHeight, cx, cy);
if (err != OK) {
ALOGE("%s: Could not add distortion correction.", __FUNCTION__);
jniThrowRuntimeException(env, "failed to add distortion correction.");
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index c254266961cf..3135c62c9c61 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -250,10 +250,11 @@ static jobject nativeScreenshot(JNIEnv* env, jclass clazz,
Rect sourceCrop = rectFromObj(env, sourceCropObj);
sp<GraphicBuffer> buffer;
+ bool capturedSecureLayers = false;
status_t res = ScreenshotClient::capture(displayToken, dataspace,
ui::PixelFormat::RGBA_8888,
sourceCrop, width, height,
- useIdentityTransform, rotation, captureSecureLayers, &buffer);
+ useIdentityTransform, rotation, captureSecureLayers, &buffer, capturedSecureLayers);
if (res != NO_ERROR) {
return NULL;
}
@@ -266,7 +267,8 @@ static jobject nativeScreenshot(JNIEnv* env, jclass clazz,
buffer->getPixelFormat(),
(jint)buffer->getUsage(),
(jlong)buffer.get(),
- namedColorSpace);
+ namedColorSpace,
+ capturedSecureLayers);
}
static jobject nativeCaptureLayers(JNIEnv* env, jclass clazz, jobject layerHandleToken,
@@ -315,7 +317,8 @@ static jobject nativeCaptureLayers(JNIEnv* env, jclass clazz, jobject layerHandl
buffer->getPixelFormat(),
(jint)buffer->getUsage(),
(jlong)buffer.get(),
- namedColorSpace);
+ namedColorSpace,
+ false /* capturedSecureLayers */);
}
static void nativeApplyTransaction(JNIEnv* env, jclass clazz, jlong transactionObj, jboolean sync) {
@@ -1455,7 +1458,7 @@ int register_android_view_SurfaceControl(JNIEnv* env)
MakeGlobalRefOrDie(env, screenshotGraphicsBufferClazz);
gScreenshotGraphicBufferClassInfo.builder = GetStaticMethodIDOrDie(env,
screenshotGraphicsBufferClazz,
- "createFromNative", "(IIIIJI)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;");
+ "createFromNative", "(IIIIJIZ)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;");
jclass displayedContentSampleClazz = FindClassOrDie(env,
"android/hardware/display/DisplayedContentSample");
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index 099635246f05..77ebd0290d33 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -462,7 +462,6 @@ FileDescriptorTable* FileDescriptorTable::Create(const std::vector<int>& fds_to_
}
if (std::find(fds_to_ignore.begin(), fds_to_ignore.end(), fd) != fds_to_ignore.end()) {
- LOG(INFO) << "Ignoring open file descriptor " << fd;
continue;
}
@@ -496,7 +495,6 @@ void FileDescriptorTable::Restat(const std::vector<int>& fds_to_ignore, fail_fn_
}
if (std::find(fds_to_ignore.begin(), fds_to_ignore.end(), fd) != fds_to_ignore.end()) {
- LOG(INFO) << "Ignoring open file descriptor " << fd;
continue;
}
diff --git a/core/res/res/drawable/ic_bluetooth_share_icon.xml b/core/res/res/drawable/ic_bluetooth_share_icon.xml
index 2446402be93f..2152af55d5b6 100644
--- a/core/res/res/drawable/ic_bluetooth_share_icon.xml
+++ b/core/res/res/drawable/ic_bluetooth_share_icon.xml
@@ -19,9 +19,9 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="@android:color/accent_device_default">
+ android:tint="@android:color/accent_device_default_light">
<path
android:fillColor="@android:color/white"
android:pathData="M17.71,7.71L12,2h-1v7.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L11,14.41V22h1l5.71-5.71L13.41,12L17.71,7.71z M13,5.83 l1.88,1.88L13,9.59V5.83z M14.88,16.29L13,18.17v-3.76L14.88,16.29z" />
-</vector> \ No newline at end of file
+</vector>
diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml
index 6bbd2587d78d..37e452d72c9a 100644
--- a/core/res/res/values-night/colors.xml
+++ b/core/res/res/values-night/colors.xml
@@ -28,4 +28,6 @@
<!-- The background color of a notification card. -->
<color name="notification_material_background_color">@color/black</color>
-</resources> \ No newline at end of file
+
+ <color name="chooser_row_divider">@color/list_divider_color_dark</color>
+</resources>
diff --git a/core/res/res/values-night/themes_device_defaults.xml b/core/res/res/values-night/themes_device_defaults.xml
index 86405100d092..98f209d3f401 100644
--- a/core/res/res/values-night/themes_device_defaults.xml
+++ b/core/res/res/values-night/themes_device_defaults.xml
@@ -55,6 +55,7 @@ easier.
<item name="navigationBarColor">@android:color/black</item>
<item name="windowLightNavigationBar">false</item>
+ <item name="colorPrimary">@color/primary_dark_device_default_settings</item>
<item name="colorPrimaryDark">@color/primary_dark_device_default_settings</item>
<item name="colorBackground">@color/primary_dark_device_default_settings</item>
@@ -70,4 +71,8 @@ easier.
<style name="ThemeOverlay.DeviceDefault.Accent.DayNight"
parent="@style/ThemeOverlay.DeviceDefault.Accent" />
-</resources> \ No newline at end of file
+ <style name="Theme.DeviceDefault.Resolver" parent="Theme.DeviceDefault.ResolverCommon">
+ <item name="windowLightNavigationBar">false</item>
+ </style>
+
+</resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 9d48fe384f3f..a5104242c71c 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2091,6 +2091,40 @@
Corresponds to {@link android.view.Window#setNavigationBarDividerColor(int)}. -->
<attr name="navigationBarDividerColor" format="color" />
+ <!-- Sets whether the system should ensure that the status bar has enough
+ contrast when a fully transparent background is requested.
+
+ <p>If set to this value, the system will determine whether a scrim is necessary
+ to ensure that the status bar has enough contrast with the contents of
+ this app, and set an appropriate effective bar background color accordingly.
+
+ <p>When the status bar color has a non-zero alpha value, the value of this
+ attribute has no effect.
+
+ <p>If the app does not target at least {@link android.os.Build.VERSION_CODES#Q Q},
+ this attribute is ignored.
+
+ @see android.view.Window#setEnsureStatusBarContrastWhenTransparent
+ @hide pendingAPI -->
+ <attr name="ensureStatusBarContrastWhenTransparent" format="boolean" />
+
+ <!-- Sets whether the system should ensure that the navigation bar has enough
+ contrast when a fully transparent background is requested.
+
+ <p>If set to this value, the system will determine whether a scrim is necessary
+ to ensure that the navigation bar has enough contrast with the contents of
+ this app, and set an appropriate effective bar background color accordingly.
+
+ <p>When the navigation bar color has a non-zero alpha value, the value of this
+ attribute has no effect.
+
+ <p>If the app does not target at least {@link android.os.Build.VERSION_CODES#Q Q},
+ this attribute is ignored.
+
+ @see android.view.Window#setEnsureNavigationBarContrastWhenTransparent
+ @hide pendingApi -->
+ <attr name="ensureNavigationBarContrastWhenTransparent" format="boolean" />
+
<!-- The duration, in milliseconds, of the window background fade duration
when transitioning into or away from an Activity when called with an
Activity Transition. Corresponds to
@@ -8980,6 +9014,10 @@
<!-- @hide From Theme.navigationBarColor, used for the TaskDescription navigation bar
color. -->
<attr name="navigationBarColor"/>
+ <!-- @hide From Window.ensureStatusBarContrastWhenTransparent -->
+ <attr name="ensureStatusBarContrastWhenTransparent"/>
+ <!-- @hide From Window.ensureNavigationBarContrastWhenTransparent -->
+ <attr name="ensureNavigationBarContrastWhenTransparent"/>
</declare-styleable>
<declare-styleable name="Shortcut">
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index e9b1bd3af0dc..ef26cd74cde0 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -215,6 +215,5 @@
<!-- Magnifier -->
<color name="default_magnifier_color_overlay">#00FFFFFF</color>
- <color name="chooser_row_divider">#1f000000</color>
-
+ <color name="chooser_row_divider">@color/list_divider_color_light</color>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index e8cc96cbd848..8fcdc7b1d748 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1031,6 +1031,9 @@
<!-- Boolean indicating whether display white balance is supported. -->
<bool name="config_displayWhiteBalanceAvailable">false</bool>
+ <!-- Boolean indicating whether display white balance should be enabled by default. -->
+ <bool name="config_displayWhiteBalanceEnabledDefault">false</bool>
+
<!-- Minimum color temperature, in Kelvin, supported by display white balance. -->
<integer name="config_displayWhiteBalanceColorTemperatureMin">4000</integer>
@@ -3251,6 +3254,10 @@
<!-- Controls the size of the back gesture inset. -->
<dimen name="config_backGestureInset">0dp</dimen>
+ <!-- Controls whether the navbar needs a scrim with
+ {@link Window#setEnsureNavigationBarContrastWhenTransparent}. -->
+ <bool name="config_navBarNeedsScrim">true</bool>
+
<!-- Default insets [LEFT/RIGHTxTOP/BOTTOM] from the screen edge for picture-in-picture windows.
These values are in DPs and will be converted to pixel sizes internally. -->
<string translatable="false" name="config_defaultPictureInPictureScreenEdgeInsets">16x16</string>
@@ -3345,6 +3352,9 @@
<!-- True if the device supports system decorations on secondary displays. -->
<bool name="config_supportsSystemDecorsOnSecondaryDisplays">true</bool>
+ <!-- True if the device supports insecure lock screen. -->
+ <bool name="config_supportsInsecureLockScreen">true</bool>
+
<!-- True if the device requires AppWidgetService even if it does not have
the PackageManager.FEATURE_APP_WIDGETS feature -->
<bool name="config_enableAppWidgetService">false</bool>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index c646fefad9d6..02cbc2e578cf 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -724,6 +724,7 @@
<dimen name="chooser_edge_margin_thin">16dp</dimen>
<dimen name="chooser_edge_margin_normal">24dp</dimen>
<dimen name="chooser_preview_image_font_size">20sp</dimen>
+ <dimen name="chooser_preview_image_border">1dp</dimen>
<dimen name="chooser_preview_width">-1px</dimen>
<dimen name="resolver_icon_size">42dp</dimen>
<dimen name="resolver_badge_size">18dp</dimen>
diff --git a/core/res/res/values/dimens_car.xml b/core/res/res/values/dimens_car.xml
index a43f7529c283..f22a91ff75c1 100644
--- a/core/res/res/values/dimens_car.xml
+++ b/core/res/res/values/dimens_car.xml
@@ -66,9 +66,10 @@
<dimen name="car_padding_0">4dp</dimen>
<dimen name="car_padding_1">8dp</dimen>
<dimen name="car_padding_2">16dp</dimen>
- <dimen name="car_padding_3">28dp</dimen>
+ <dimen name="car_padding_3">24dp</dimen>
<dimen name="car_padding_4">32dp</dimen>
<dimen name="car_padding_5">64dp</dimen>
+ <dimen name="car_padding_6">96dp</dimen>
<!-- Radius -->
<dimen name="car_radius_1">4dp</dimen>
@@ -121,6 +122,9 @@
<!-- Dialog button end margin -->
<dimen name="button_end_margin">@*android:dimen/car_padding_4</dimen>
+ <!-- Dialog top padding when there is no title -->
+ <dimen name="dialog_no_title_padding_top">@*android:dimen/car_padding_4</dimen>
+
<!-- Dialog start margin for text view -->
<dimen name="text_view_start_margin">@*android:dimen/car_keyline_1</dimen>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 6f3adfd11a48..f8a2ac9f3e18 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -525,7 +525,7 @@
<!-- label for screenshot item in power menu -->
<string name="global_action_screenshot">Screenshot</string>
- <!-- Take bug report menu title [CHAR LIMIT=20] -->
+ <!-- Take bug report menu title [CHAR LIMIT=30] -->
<string name="bugreport_title">Bug report</string>
<!-- Message in bugreport dialog describing what it does [CHAR LIMIT=NONE] -->
<!-- TODO: remove if not used anymore -->
@@ -1551,25 +1551,25 @@
<string-array name="face_acquired_vendor">
</string-array>
- <!-- Error message shown when the face hardware can't be accessed. [CHAR LIMIT=50] -->
+ <!-- Error message shown when the face hardware can't be accessed. [CHAR LIMIT=69] -->
<string name="face_error_hw_not_available">Can\u2019t verify face. Hardware not available.</string>
<!-- Error message shown when the face hardware timer has expired and the user needs to restart the operation. [CHAR LIMIT=50] -->
<string name="face_error_timeout">Face timeout reached. Try again.</string>
- <!-- Error message shown when the face hardware has run out of room for storing faces. [CHAR LIMIT=60] -->
+ <!-- Error message shown when the face hardware has run out of room for storing faces. [CHAR LIMIT=69] -->
<string name="face_error_no_space">Can\u2019t store new face data. Delete an old one first.</string>
<!-- Generic error message shown when the face operation (e.g. enrollment or authentication) is canceled. Generally not shown to the user. [CHAR LIMIT=50] -->
<string name="face_error_canceled">Face operation canceled</string>
- <!-- Generic error message shown when the face authentication operation is canceled due to user input. Generally not shown to the user [CHAR LIMIT=50] -->
+ <!-- Generic error message shown when the face authentication operation is canceled due to user input. Generally not shown to the user [CHAR LIMIT=54] -->
<string name="face_error_user_canceled">Face authentication canceled by user</string>
<!-- Generic error message shown when the face operation fails because too many attempts have been made. [CHAR LIMIT=50] -->
<string name="face_error_lockout">Too many attempts. Try again later.</string>
- <!-- Generic error message shown when the face operation fails because strong authentication is required. [CHAR LIMIT=60] -->
+ <!-- Generic error message shown when the face operation fails because strong authentication is required. [CHAR LIMIT=71] -->
<string name="face_error_lockout_permanent">Too many attempts. Face authentication disabled.</string>
<!-- Generic error message shown when the face hardware can't recognize the face. [CHAR LIMIT=50] -->
<string name="face_error_unable_to_process">Can\u2019t verify face. Try again.</string>
<!-- Generic error message shown when the user has no enrolled face. [CHAR LIMIT=52] -->
<string name="face_error_not_enrolled">You haven\u2019t set up face authentication</string>
- <!-- Generic error message shown when the app requests face authentication on a device without a sensor. [CHAR LIMIT=60] -->
+ <!-- Generic error message shown when the app requests face authentication on a device without a sensor. [CHAR LIMIT=61] -->
<string name="face_error_hw_not_present">Face authentication is not supported on this device</string>
<!-- Template to be used to name enrolled faces by default. [CHAR LIMIT=10] -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 664059afd6bc..8cdce6bd6533 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -391,6 +391,7 @@
<java-symbol type="bool" name="config_supportsMultiDisplay" />
<java-symbol type="bool" name="config_noHomeScreen" />
<java-symbol type="bool" name="config_supportsSystemDecorsOnSecondaryDisplays" />
+ <java-symbol type="bool" name="config_supportsInsecureLockScreen" />
<java-symbol type="bool" name="config_guestUserEphemeral" />
<java-symbol type="bool" name="config_localDisplaysMirrorContent" />
<java-symbol type="bool" name="config_localDisplaysPrivate" />
@@ -2776,6 +2777,7 @@
<java-symbol type="dimen" name="chooser_edge_margin_normal" />
<java-symbol type="dimen" name="chooser_preview_image_font_size"/>
<java-symbol type="dimen" name="chooser_preview_width" />
+ <java-symbol type="dimen" name="chooser_preview_image_border"/>
<java-symbol type="dimen" name="chooser_max_collapsed_height" />
<java-symbol type="layout" name="chooser_grid" />
<java-symbol type="layout" name="chooser_grid_preview_text" />
@@ -2789,6 +2791,7 @@
<java-symbol type="drawable" name="scroll_indicator_material" />
<java-symbol type="layout" name="chooser_row" />
+ <java-symbol type="color" name="chooser_row_divider" />
<java-symbol type="layout" name="chooser_row_direct_share" />
<java-symbol type="bool" name="config_supportDoubleTapWake" />
<java-symbol type="drawable" name="ic_perm_device_info" />
@@ -2845,6 +2848,7 @@
<java-symbol type="integer" name="config_navBarInteractionMode" />
<java-symbol type="bool" name="config_navBarCanMove" />
<java-symbol type="bool" name="config_navBarTapThrough" />
+ <java-symbol type="bool" name="config_navBarNeedsScrim" />
<java-symbol type="dimen" name="config_backGestureInset" />
<java-symbol type="color" name="system_bar_background_semi_transparent" />
@@ -3147,7 +3151,6 @@
<java-symbol type="bool" name="config_setColorTransformAccelerated" />
<java-symbol type="bool" name="config_setColorTransformAcceleratedPerLayer" />
- <java-symbol type="bool" name="config_displayWhiteBalanceAvailable" />
<java-symbol type="bool" name="config_nightDisplayAvailable" />
<java-symbol type="bool" name="config_allowDisablingAssistDisclosure" />
<java-symbol type="integer" name="config_defaultNightDisplayAutoMode" />
@@ -3159,8 +3162,8 @@
<java-symbol type="array" name="config_nightDisplayColorTemperatureCoefficients" />
<java-symbol type="array" name="config_nightDisplayColorTemperatureCoefficientsNative" />
<java-symbol type="array" name="config_availableColorModes" />
-
<java-symbol type="bool" name="config_displayWhiteBalanceAvailable" />
+ <java-symbol type="bool" name="config_displayWhiteBalanceEnabledDefault" />
<java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureMin" />
<java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureMax" />
<java-symbol type="integer" name="config_displayWhiteBalanceColorTemperatureDefault" />
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index 9f20ee6e19a0..78a8db420a67 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -1658,7 +1658,7 @@ easier.
<style name="Theme.DeviceDefault.DayNight" parent="Theme.DeviceDefault.Light" />
<!-- Theme used for the intent picker activity. -->
- <style name="Theme.DeviceDefault.Resolver" parent="Theme.DeviceDefault.DayNight">
+ <style name="Theme.DeviceDefault.ResolverCommon" parent="Theme.DeviceDefault.DayNight">
<item name="windowEnterTransition">@empty</item>
<item name="windowExitTransition">@empty</item>
<item name="windowIsTranslucent">true</item>
@@ -1670,6 +1670,12 @@ easier.
<item name="colorControlActivated">?attr/colorControlHighlight</item>
<item name="listPreferredItemPaddingStart">?attr/dialogPreferredPadding</item>
<item name="listPreferredItemPaddingEnd">?attr/dialogPreferredPadding</item>
+ <item name="navigationBarColor">?attr/colorBackgroundFloating</item>
+ <item name="navigationBarDividerColor">@color/chooser_row_divider</item>
+ </style>
+
+ <style name="Theme.DeviceDefault.Resolver" parent="Theme.DeviceDefault.ResolverCommon">
+ <item name="windowLightNavigationBar">true</item>
</style>
<!-- @hide DeviceDefault themes for the autofill FillUi -->
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
index 447f28e06d7e..5c8bced25108 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
@@ -212,15 +212,15 @@ public class ObjectPoolTests {
@Test
public void testRecycleNewIntentItem() {
- NewIntentItem emptyItem = NewIntentItem.obtain(null, false);
- NewIntentItem item = NewIntentItem.obtain(referrerIntentList(), true);
+ NewIntentItem emptyItem = NewIntentItem.obtain(null);
+ NewIntentItem item = NewIntentItem.obtain(referrerIntentList());
assertNotSame(item, emptyItem);
assertFalse(item.equals(emptyItem));
item.recycle();
assertEquals(item, emptyItem);
- NewIntentItem item2 = NewIntentItem.obtain(referrerIntentList(), true);
+ NewIntentItem item2 = NewIntentItem.obtain(referrerIntentList());
assertSame(item, item2);
assertFalse(item2.equals(emptyItem));
}
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index d117b4096ca0..bffeb2a6c90e 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -128,7 +128,7 @@ public class TransactionParcelTests {
@Test
public void testNewIntent() {
// Write to parcel
- NewIntentItem item = NewIntentItem.obtain(referrerIntentList(), true /* pause */);
+ NewIntentItem item = NewIntentItem.obtain(referrerIntentList());
writeAndPrepareForReading(item);
// Read from parcel and assert
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index 8cc6e37db48a..655070722c9a 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -203,11 +203,7 @@ public class SettingsBackupTest {
Settings.Global.DATA_ROAMING,
Settings.Global.DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS,
Settings.Global.DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS,
- Settings.Global.DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD,
- Settings.Global.DATA_STALL_EVALUATION_TYPE,
- Settings.Global.DATA_STALL_MIN_EVALUATE_INTERVAL,
Settings.Global.DATA_STALL_RECOVERY_ON_BAD_NETWORK,
- Settings.Global.DATA_STALL_VALID_DNS_TIME_THRESHOLD,
Settings.Global.DEBUG_APP,
Settings.Global.DEBUG_VIEW_ATTRIBUTES,
Settings.Global.DEBUG_VIEW_ATTRIBUTES_APPLICATION_PACKAGE,
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index ed198e60902b..e4a93e740c4c 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -309,6 +309,7 @@ applications that come with the platform
<permission name="android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS"/>
<permission name="android.permission.SET_WALLPAPER" />
<permission name="android.permission.SET_WALLPAPER_COMPONENT" />
+ <permission name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE" />
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
diff --git a/libs/hwui/renderthread/VulkanSurface.cpp b/libs/hwui/renderthread/VulkanSurface.cpp
index 36f540c47973..be78b694f53a 100644
--- a/libs/hwui/renderthread/VulkanSurface.cpp
+++ b/libs/hwui/renderthread/VulkanSurface.cpp
@@ -266,47 +266,46 @@ VulkanSurface* VulkanSurface::Create(ANativeWindow* window, ColorMode colorMode,
vkPixelFormat = VK_FORMAT_R16G16B16A16_SFLOAT;
}
- if (nullptr != vkManager.mGetPhysicalDeviceImageFormatProperties2) {
- VkPhysicalDeviceExternalImageFormatInfo externalImageFormatInfo;
- externalImageFormatInfo.sType =
- VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
- externalImageFormatInfo.pNext = nullptr;
- externalImageFormatInfo.handleType =
- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;
-
- VkPhysicalDeviceImageFormatInfo2 imageFormatInfo;
- imageFormatInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
- imageFormatInfo.pNext = &externalImageFormatInfo;
- imageFormatInfo.format = vkPixelFormat;
- imageFormatInfo.type = VK_IMAGE_TYPE_2D;
- imageFormatInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
- imageFormatInfo.usage = usageFlags;
- imageFormatInfo.flags = 0;
-
- VkAndroidHardwareBufferUsageANDROID hwbUsage;
- hwbUsage.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
- hwbUsage.pNext = nullptr;
-
- VkImageFormatProperties2 imgFormProps;
- imgFormProps.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
- imgFormProps.pNext = &hwbUsage;
-
- res = vkManager.mGetPhysicalDeviceImageFormatProperties2(vkManager.mPhysicalDevice,
- &imageFormatInfo, &imgFormProps);
- if (VK_SUCCESS != res) {
- ALOGE("Failed to query GetPhysicalDeviceImageFormatProperties2");
- return nullptr;
- }
+ LOG_ALWAYS_FATAL_IF(nullptr == vkManager.mGetPhysicalDeviceImageFormatProperties2,
+ "vkGetPhysicalDeviceImageFormatProperties2 is missing");
+ VkPhysicalDeviceExternalImageFormatInfo externalImageFormatInfo;
+ externalImageFormatInfo.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
+ externalImageFormatInfo.pNext = nullptr;
+ externalImageFormatInfo.handleType =
+ VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID;
+
+ VkPhysicalDeviceImageFormatInfo2 imageFormatInfo;
+ imageFormatInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
+ imageFormatInfo.pNext = &externalImageFormatInfo;
+ imageFormatInfo.format = vkPixelFormat;
+ imageFormatInfo.type = VK_IMAGE_TYPE_2D;
+ imageFormatInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
+ imageFormatInfo.usage = usageFlags;
+ imageFormatInfo.flags = 0;
+
+ VkAndroidHardwareBufferUsageANDROID hwbUsage;
+ hwbUsage.sType = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID;
+ hwbUsage.pNext = nullptr;
+
+ VkImageFormatProperties2 imgFormProps;
+ imgFormProps.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
+ imgFormProps.pNext = &hwbUsage;
+
+ res = vkManager.mGetPhysicalDeviceImageFormatProperties2(vkManager.mPhysicalDevice,
+ &imageFormatInfo, &imgFormProps);
+ if (VK_SUCCESS != res) {
+ ALOGE("Failed to query GetPhysicalDeviceImageFormatProperties2");
+ return nullptr;
+ }
- windowInfo.windowUsageFlags = hwbUsage.androidHardwareBufferUsage;
- if (vkManager.isQualcomm()) {
- windowInfo.windowUsageFlags =
- windowInfo.windowUsageFlags | AHARDWAREBUFFER_USAGE_VENDOR_0;
- }
+ uint64_t consumerUsage;
+ native_window_get_consumer_usage(window, &consumerUsage);
+ windowInfo.windowUsageFlags = consumerUsage | hwbUsage.androidHardwareBufferUsage;
- } else {
- ALOGE("VulkanSurface::Create() vkmGetPhysicalDeviceImageFormatProperties2 is missing");
- return nullptr;
+ if (vkManager.isQualcomm()) {
+ windowInfo.windowUsageFlags =
+ windowInfo.windowUsageFlags | AHARDWAREBUFFER_USAGE_VENDOR_0;
}
/*
diff --git a/libs/hwui/tests/unit/CommonPoolTests.cpp b/libs/hwui/tests/unit/CommonPoolTests.cpp
index c564ed632786..70a5f5acbb6e 100644
--- a/libs/hwui/tests/unit/CommonPoolTests.cpp
+++ b/libs/hwui/tests/unit/CommonPoolTests.cpp
@@ -135,4 +135,48 @@ TEST(CommonPool, fullQueue) {
for (auto& f : futures) {
f.get();
}
+}
+
+class ObjectTracker {
+ static std::atomic_int sGlobalCount;
+
+public:
+ ObjectTracker() {
+ sGlobalCount++;
+ }
+ ObjectTracker(const ObjectTracker&) {
+ sGlobalCount++;
+ }
+ ObjectTracker(ObjectTracker&&) {
+ sGlobalCount++;
+ }
+ ~ObjectTracker() {
+ sGlobalCount--;
+ }
+
+ static int count() { return sGlobalCount.load(); }
+};
+
+std::atomic_int ObjectTracker::sGlobalCount{0};
+
+TEST(CommonPool, asyncLifecycleCheck) {
+ ASSERT_EQ(0, ObjectTracker::count());
+ {
+ ObjectTracker obj;
+ ASSERT_EQ(1, ObjectTracker::count());
+ EXPECT_LT(1, CommonPool::async([obj] { return ObjectTracker::count(); }).get());
+ }
+ CommonPool::waitForIdle();
+ ASSERT_EQ(0, ObjectTracker::count());
+}
+
+TEST(CommonPool, syncLifecycleCheck) {
+ ASSERT_EQ(0, ObjectTracker::count());
+ {
+ ObjectTracker obj;
+ ASSERT_EQ(1, ObjectTracker::count());
+ EXPECT_LT(1, CommonPool::runSync([obj] { return ObjectTracker::count(); }));
+ }
+ CommonPool::waitForIdle();
+ ASSERT_EQ(0, ObjectTracker::count());
} \ No newline at end of file
diff --git a/libs/hwui/thread/CommonPool.cpp b/libs/hwui/thread/CommonPool.cpp
index 7f94a152cf8d..d011bdfe945e 100644
--- a/libs/hwui/thread/CommonPool.cpp
+++ b/libs/hwui/thread/CommonPool.cpp
@@ -49,9 +49,13 @@ CommonPool::CommonPool() {
}
}
-void CommonPool::post(Task&& task) {
+CommonPool& CommonPool::instance() {
static CommonPool pool;
- pool.enqueue(std::move(task));
+ return pool;
+}
+
+void CommonPool::post(Task&& task) {
+ instance().enqueue(std::move(task));
}
void CommonPool::enqueue(Task&& task) {
@@ -86,5 +90,18 @@ void CommonPool::workerLoop() {
}
}
+void CommonPool::waitForIdle() {
+ instance().doWaitForIdle();
+}
+
+void CommonPool::doWaitForIdle() {
+ std::unique_lock lock(mLock);
+ while (mWaitingThreads != THREAD_COUNT) {
+ lock.unlock();
+ usleep(100);
+ lock.lock();
+ }
+}
+
} // namespace uirenderer
} // namespace android \ No newline at end of file
diff --git a/libs/hwui/thread/CommonPool.h b/libs/hwui/thread/CommonPool.h
index aef2990d6343..7603eeef4692 100644
--- a/libs/hwui/thread/CommonPool.h
+++ b/libs/hwui/thread/CommonPool.h
@@ -57,11 +57,13 @@ public:
mHead = newHead;
}
- constexpr T&& pop() {
+ constexpr T pop() {
LOG_ALWAYS_FATAL_IF(mTail == mHead, "empty");
int index = mTail;
mTail = (mTail + 1) % SIZE;
- return std::move(mBuffer[index]);
+ T ret = std::move(mBuffer[index]);
+ mBuffer[index] = nullptr;
+ return ret;
}
private:
@@ -95,11 +97,17 @@ public:
return task.get_future().get();
};
+ // For testing purposes only, blocks until all worker threads are parked.
+ static void waitForIdle();
+
private:
+ static CommonPool& instance();
+
CommonPool();
~CommonPool() {}
void enqueue(Task&&);
+ void doWaitForIdle();
void workerLoop();
diff --git a/libs/hwui/utils/Color.cpp b/libs/hwui/utils/Color.cpp
index d14116f7b555..39740bd46f9f 100644
--- a/libs/hwui/utils/Color.cpp
+++ b/libs/hwui/utils/Color.cpp
@@ -60,6 +60,9 @@ SkColorType PixelFormatToColorType(android::PixelFormat format) {
}
sk_sp<SkColorSpace> DataSpaceToColorSpace(android_dataspace dataspace) {
+ if (dataspace == HAL_DATASPACE_UNKNOWN) {
+ return SkColorSpace::MakeSRGB();
+ }
skcms_Matrix3x3 gamut;
switch (dataspace & HAL_DATASPACE_STANDARD_MASK) {
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 877172af1993..9c36d76cf370 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -599,6 +599,14 @@ public class Location implements Parcelable {
* ElapsedRealtimeNanos timestamp, with the reported measurements in
* nanoseconds (68% confidence).
*
+ * This means that we have 68% confidence that the true timestamp of the
+ * event is within ElapsedReatimeNanos +/- uncertainty.
+ *
+ * Example :
+ * - getElapsedRealtimeNanos() returns 10000000
+ * - getElapsedRealtimeUncertaintyNanos() returns 1000000 (equivalent to 1millisecond)
+ * This means that the event most likely happened between 9000000 and 11000000.
+ *
* @return uncertainty of elapsed real-time of fix, in nanoseconds.
*/
public double getElapsedRealtimeUncertaintyNanos() {
diff --git a/media/Android.bp b/media/Android.bp
index 34801813ee87..8746046c220d 100644
--- a/media/Android.bp
+++ b/media/Android.bp
@@ -24,6 +24,10 @@ java_library {
"mediaplayer2-protos",
],
+ permitted_packages: [
+ "android.media",
+ ],
+
installable: true,
// Make sure that the implementaion only relies on SDK or system APIs.
diff --git a/media/OWNERS b/media/OWNERS
index 72c89529974b..a33a990f5ba4 100644
--- a/media/OWNERS
+++ b/media/OWNERS
@@ -1,3 +1,4 @@
+andrewlewis@google.com
chz@google.com
dwkang@google.com
elaurent@google.com
diff --git a/media/apex/java/android/media/MediaPlayer2.java b/media/apex/java/android/media/MediaPlayer2.java
index 87035da3d513..db33e8239175 100644
--- a/media/apex/java/android/media/MediaPlayer2.java
+++ b/media/apex/java/android/media/MediaPlayer2.java
@@ -31,6 +31,7 @@ import android.media.MediaDrm.KeyRequest;
import android.media.MediaPlayer2.DrmInfo;
import android.media.MediaPlayer2Proto.PlayerMessage;
import android.media.MediaPlayer2Proto.Value;
+import android.media.protobuf.InvalidProtocolBufferException;
import android.net.Uri;
import android.os.Handler;
import android.os.HandlerThread;
@@ -46,7 +47,6 @@ import android.view.Surface;
import android.view.SurfaceHolder;
import com.android.internal.annotations.GuardedBy;
-import com.android.media.protobuf.InvalidProtocolBufferException;
import java.io.ByteArrayOutputStream;
import java.io.File;
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 325e227e6f93..790e189e9109 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -25,7 +25,6 @@ import android.annotation.Nullable;
import android.annotation.TestApi;
import android.annotation.UnsupportedAppUsage;
import android.os.Binder;
-import android.os.Build;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
@@ -1662,7 +1661,7 @@ public class AudioTrack extends PlayerBase
* a better solution.
* @hide
*/
- @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 112561552)
+ @UnsupportedAppUsage(trackingBug = 130237544)
public int getLatency() {
return native_get_latency();
}
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index 3838a99969f0..b5c4cca12ff7 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -24,6 +24,7 @@ import android.os.IBinder;
import android.os.StrictMode;
import android.util.Log;
+import com.android.internal.annotations.GuardedBy;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -37,7 +38,6 @@ import java.net.URL;
import java.net.UnknownServiceException;
import java.util.HashMap;
import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
/** @hide */
public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
@@ -47,23 +47,42 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
// connection timeout - 30 sec
private static final int CONNECT_TIMEOUT_MS = 30 * 1000;
+ @GuardedBy("this")
+ @UnsupportedAppUsage
+ private long mCurrentOffset = -1;
+
+ @GuardedBy("this")
+ @UnsupportedAppUsage
+ private URL mURL = null;
+
+ @GuardedBy("this")
+ @UnsupportedAppUsage
+ private Map<String, String> mHeaders = null;
+
+ // volatile so that disconnect() can be called without acquiring a lock.
+ // All other access is @GuardedBy("this").
+ @UnsupportedAppUsage
+ private volatile HttpURLConnection mConnection = null;
+
+ @GuardedBy("this")
+ @UnsupportedAppUsage
+ private long mTotalSize = -1;
+
+ @GuardedBy("this")
+ private InputStream mInputStream = null;
+
+ @GuardedBy("this")
+ @UnsupportedAppUsage
+ private boolean mAllowCrossDomainRedirect = true;
+
+ @GuardedBy("this")
+ @UnsupportedAppUsage
+ private boolean mAllowCrossProtocolRedirect = true;
+
// from com.squareup.okhttp.internal.http
private final static int HTTP_TEMP_REDIRECT = 307;
private final static int MAX_REDIRECTS = 20;
- class ConnectionState {
- public HttpURLConnection mConnection = null;
- public InputStream mInputStream = null;
- public long mCurrentOffset = -1;
- public Map<String, String> mHeaders = null;
- public URL mURL = null;
- public long mTotalSize = -1;
- public boolean mAllowCrossDomainRedirect = true;
- public boolean mAllowCrossProtocolRedirect = true;
- }
- private final AtomicReference<ConnectionState> mConnectionStateHolder =
- new AtomicReference<ConnectionState>();
-
@UnsupportedAppUsage
public MediaHTTPConnection() {
CookieHandler cookieHandler = CookieHandler.getDefault();
@@ -76,34 +95,24 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
@Override
@UnsupportedAppUsage
- public IBinder connect(String uri, String headers) {
+ public synchronized IBinder connect(String uri, String headers) {
if (VERBOSE) {
Log.d(TAG, "connect: uri=" + uri + ", headers=" + headers);
}
- ConnectionState connectionState = mConnectionStateHolder.get();
- synchronized (this) {
- if (connectionState == null) {
- connectionState = new ConnectionState();
- mConnectionStateHolder.set(connectionState);
- }
- }
-
try {
disconnect();
- connectionState.mAllowCrossDomainRedirect = true;
- connectionState.mURL = new URL(uri);
- connectionState.mHeaders = convertHeaderStringToMap(headers, connectionState);
+ mAllowCrossDomainRedirect = true;
+ mURL = new URL(uri);
+ mHeaders = convertHeaderStringToMap(headers);
} catch (MalformedURLException e) {
return null;
- } finally {
- mConnectionStateHolder.set(connectionState);
}
return native_getIMemory();
}
- private boolean parseBoolean(String val) {
+ private static boolean parseBoolean(String val) {
try {
return Long.parseLong(val) != 0;
} catch (NumberFormatException e) {
@@ -113,21 +122,18 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
}
/* returns true iff header is internal */
- private boolean filterOutInternalHeaders(
- String key, String val, ConnectionState connectionState) {
+ private synchronized boolean filterOutInternalHeaders(String key, String val) {
if ("android-allow-cross-domain-redirect".equalsIgnoreCase(key)) {
- connectionState.mAllowCrossDomainRedirect = parseBoolean(val);
+ mAllowCrossDomainRedirect = parseBoolean(val);
// cross-protocol redirects are also controlled by this flag
- connectionState.mAllowCrossProtocolRedirect =
- connectionState.mAllowCrossDomainRedirect;
+ mAllowCrossProtocolRedirect = mAllowCrossDomainRedirect;
} else {
return false;
}
return true;
}
- private Map<String, String> convertHeaderStringToMap(String headers,
- ConnectionState connectionState) {
+ private synchronized Map<String, String> convertHeaderStringToMap(String headers) {
HashMap<String, String> map = new HashMap<String, String>();
String[] pairs = headers.split("\r\n");
@@ -137,7 +143,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
String key = pair.substring(0, colonPos);
String val = pair.substring(colonPos + 1);
- if (!filterOutInternalHeaders(key, val, connectionState)) {
+ if (!filterOutInternalHeaders(key, val)) {
map.put(key, val);
}
}
@@ -149,28 +155,36 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
@Override
@UnsupportedAppUsage
public void disconnect() {
- ConnectionState connectionState = mConnectionStateHolder.getAndSet(null);
- if (connectionState != null) {
- teardownConnection(connectionState);
- connectionState.mHeaders = null;
- connectionState.mURL = null;
+ HttpURLConnection connectionToDisconnect = mConnection;
+ // Call disconnect() before blocking for the lock in order to ensure that any
+ // other thread that is blocked in readAt() will return quickly.
+ if (connectionToDisconnect != null) {
+ connectionToDisconnect.disconnect();
+ }
+ synchronized (this) {
+ // It's unlikely but possible that while we were waiting to acquire the lock, another
+ // thread concurrently started a new connection; if so, we're disconnecting that one
+ // here, too.
+ teardownConnection();
+ mHeaders = null;
+ mURL = null;
}
}
- private void teardownConnection(ConnectionState connectionState) {
- if (connectionState.mConnection != null) {
- if (connectionState.mInputStream != null) {
+ private synchronized void teardownConnection() {
+ if (mConnection != null) {
+ if (mInputStream != null) {
try {
- connectionState.mInputStream.close();
+ mInputStream.close();
} catch (IOException e) {
}
- connectionState.mInputStream = null;
+ mInputStream = null;
}
- connectionState.mConnection.disconnect();
- connectionState.mConnection = null;
+ mConnection.disconnect();
+ mConnection = null;
- connectionState.mCurrentOffset = -1;
+ mCurrentOffset = -1;
}
}
@@ -197,44 +211,42 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
return false;
}
- private void seekTo(long offset, ConnectionState connectionState) throws IOException {
- teardownConnection(connectionState);
+ private synchronized void seekTo(long offset) throws IOException {
+ teardownConnection();
try {
int response;
int redirectCount = 0;
- URL url = connectionState.mURL;
+ URL url = mURL;
// do not use any proxy for localhost (127.0.0.1)
boolean noProxy = isLocalHost(url);
while (true) {
if (noProxy) {
- connectionState.mConnection =
- (HttpURLConnection) url.openConnection(Proxy.NO_PROXY);
+ mConnection = (HttpURLConnection)url.openConnection(Proxy.NO_PROXY);
} else {
- connectionState.mConnection = (HttpURLConnection) url.openConnection();
+ mConnection = (HttpURLConnection)url.openConnection();
}
- connectionState.mConnection.setConnectTimeout(CONNECT_TIMEOUT_MS);
+ mConnection.setConnectTimeout(CONNECT_TIMEOUT_MS);
// handle redirects ourselves if we do not allow cross-domain redirect
- connectionState.mConnection.setInstanceFollowRedirects(
- connectionState.mAllowCrossDomainRedirect);
+ mConnection.setInstanceFollowRedirects(mAllowCrossDomainRedirect);
- if (connectionState.mHeaders != null) {
- for (Map.Entry<String, String> entry : connectionState.mHeaders.entrySet()) {
- connectionState.mConnection.setRequestProperty(
+ if (mHeaders != null) {
+ for (Map.Entry<String, String> entry : mHeaders.entrySet()) {
+ mConnection.setRequestProperty(
entry.getKey(), entry.getValue());
}
}
if (offset > 0) {
- connectionState.mConnection.setRequestProperty(
+ mConnection.setRequestProperty(
"Range", "bytes=" + offset + "-");
}
- response = connectionState.mConnection.getResponseCode();
+ response = mConnection.getResponseCode();
if (response != HttpURLConnection.HTTP_MULT_CHOICE &&
response != HttpURLConnection.HTTP_MOVED_PERM &&
response != HttpURLConnection.HTTP_MOVED_TEMP &&
@@ -248,7 +260,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
throw new NoRouteToHostException("Too many redirects: " + redirectCount);
}
- String method = connectionState.mConnection.getRequestMethod();
+ String method = mConnection.getRequestMethod();
if (response == HTTP_TEMP_REDIRECT &&
!method.equals("GET") && !method.equals("HEAD")) {
// "If the 307 status code is received in response to a
@@ -256,35 +268,34 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
// automatically redirect the request"
throw new NoRouteToHostException("Invalid redirect");
}
- String location = connectionState.mConnection.getHeaderField("Location");
+ String location = mConnection.getHeaderField("Location");
if (location == null) {
throw new NoRouteToHostException("Invalid redirect");
}
- url = new URL(connectionState.mURL /* TRICKY: don't use url! */, location);
+ url = new URL(mURL /* TRICKY: don't use url! */, location);
if (!url.getProtocol().equals("https") &&
!url.getProtocol().equals("http")) {
throw new NoRouteToHostException("Unsupported protocol redirect");
}
- boolean sameProtocol =
- connectionState.mURL.getProtocol().equals(url.getProtocol());
- if (!connectionState.mAllowCrossProtocolRedirect && !sameProtocol) {
+ boolean sameProtocol = mURL.getProtocol().equals(url.getProtocol());
+ if (!mAllowCrossProtocolRedirect && !sameProtocol) {
throw new NoRouteToHostException("Cross-protocol redirects are disallowed");
}
- boolean sameHost = connectionState.mURL.getHost().equals(url.getHost());
- if (!connectionState.mAllowCrossDomainRedirect && !sameHost) {
+ boolean sameHost = mURL.getHost().equals(url.getHost());
+ if (!mAllowCrossDomainRedirect && !sameHost) {
throw new NoRouteToHostException("Cross-domain redirects are disallowed");
}
if (response != HTTP_TEMP_REDIRECT) {
// update effective URL, unless it is a Temporary Redirect
- connectionState.mURL = url;
+ mURL = url;
}
}
- if (connectionState.mAllowCrossDomainRedirect) {
+ if (mAllowCrossDomainRedirect) {
// remember the current, potentially redirected URL if redirects
// were handled by HttpURLConnection
- connectionState.mURL = connectionState.mConnection.getURL();
+ mURL = mConnection.getURL();
}
if (response == HttpURLConnection.HTTP_PARTIAL) {
@@ -292,9 +303,10 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
// because what we want is not just the length of the range
// returned but the size of the full content if available.
- String contentRange = connectionState.mConnection.getHeaderField("Content-Range");
+ String contentRange =
+ mConnection.getHeaderField("Content-Range");
- connectionState.mTotalSize = -1;
+ mTotalSize = -1;
if (contentRange != null) {
// format is "bytes xxx-yyy/zzz
// where "zzz" is the total number of bytes of the
@@ -306,7 +318,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
contentRange.substring(lastSlashPos + 1);
try {
- connectionState.mTotalSize = Long.parseLong(total);
+ mTotalSize = Long.parseLong(total);
} catch (NumberFormatException e) {
}
}
@@ -314,7 +326,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
} else if (response != HttpURLConnection.HTTP_OK) {
throw new IOException();
} else {
- connectionState.mTotalSize = connectionState.mConnection.getContentLength();
+ mTotalSize = mConnection.getContentLength();
}
if (offset > 0 && response != HttpURLConnection.HTTP_PARTIAL) {
@@ -323,14 +335,14 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
throw new ProtocolException();
}
- connectionState.mInputStream =
- new BufferedInputStream(connectionState.mConnection.getInputStream());
+ mInputStream =
+ new BufferedInputStream(mConnection.getInputStream());
- connectionState.mCurrentOffset = offset;
+ mCurrentOffset = offset;
} catch (IOException e) {
- connectionState.mTotalSize = -1;
- teardownConnection(connectionState);
- connectionState.mCurrentOffset = -1;
+ mTotalSize = -1;
+ teardownConnection();
+ mCurrentOffset = -1;
throw e;
}
@@ -338,28 +350,22 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
@Override
@UnsupportedAppUsage
- public int readAt(long offset, int size) {
- ConnectionState connectionState = mConnectionStateHolder.get();
- if (connectionState != null) {
- return native_readAt(offset, size, connectionState);
- }
- return -1;
+ public synchronized int readAt(long offset, int size) {
+ return native_readAt(offset, size);
}
- private int readAt(long offset, byte[] data, int size, ConnectionState connectionState) {
+ private synchronized int readAt(long offset, byte[] data, int size) {
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
- synchronized(this) {
- if (offset != connectionState.mCurrentOffset) {
- seekTo(offset, connectionState);
- }
+ if (offset != mCurrentOffset) {
+ seekTo(offset);
}
- int n = connectionState.mInputStream.read(data, 0, size);
+ int n = mInputStream.read(data, 0, size);
if (n == -1) {
// InputStream signals EOS using a -1 result, our semantics
@@ -367,7 +373,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
n = 0;
}
- connectionState.mCurrentOffset += n;
+ mCurrentOffset += n;
if (VERBOSE) {
Log.d(TAG, "readAt " + offset + " / " + size + " => " + n);
@@ -399,47 +405,35 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
@Override
public synchronized long getSize() {
- ConnectionState connectionState = mConnectionStateHolder.get();
- if (connectionState != null) {
- if (connectionState.mConnection == null) {
- try {
- seekTo(0, connectionState);
- } catch (IOException e) {
- return -1;
- }
+ if (mConnection == null) {
+ try {
+ seekTo(0);
+ } catch (IOException e) {
+ return -1;
}
- return connectionState.mTotalSize;
}
- return -1;
+ return mTotalSize;
}
@Override
@UnsupportedAppUsage
public synchronized String getMIMEType() {
- ConnectionState connectionState = mConnectionStateHolder.get();
- if (connectionState != null) {
- if (connectionState.mConnection == null) {
- try {
- seekTo(0, connectionState);
- } catch (IOException e) {
- return "application/octet-stream";
- }
+ if (mConnection == null) {
+ try {
+ seekTo(0);
+ } catch (IOException e) {
+ return "application/octet-stream";
}
- return connectionState.mConnection.getContentType();
}
- return null;
+ return mConnection.getContentType();
}
@Override
@UnsupportedAppUsage
- public String getUri() {
- ConnectionState connectionState = mConnectionStateHolder.get();
- if (connectionState != null) {
- return connectionState.mURL.toString();
- }
- return null;
+ public synchronized String getUri() {
+ return mURL.toString();
}
@Override
@@ -452,7 +446,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
private native final void native_finalize();
private native final IBinder native_getIMemory();
- private native int native_readAt(long offset, int size, ConnectionState connectionState);
+ private native final int native_readAt(long offset, int size);
static {
System.loadLibrary("media_jni");
diff --git a/media/jni/android_media_MediaHTTPConnection.cpp b/media/jni/android_media_MediaHTTPConnection.cpp
index d28c15c98d16..365e045689f0 100644
--- a/media/jni/android_media_MediaHTTPConnection.cpp
+++ b/media/jni/android_media_MediaHTTPConnection.cpp
@@ -109,8 +109,7 @@ static void android_media_MediaHTTPConnection_native_init(JNIEnv *env) {
gFields.context = env->GetFieldID(clazz.get(), "mNativeContext", "J");
CHECK(gFields.context != NULL);
- gFields.readAtMethodID = env->GetMethodID(
- clazz.get(), "readAt", "(J[BILandroid/media/MediaHTTPConnection$ConnectionState;)I");
+ gFields.readAtMethodID = env->GetMethodID(clazz.get(), "readAt", "(J[BI)I");
}
static void android_media_MediaHTTPConnection_native_setup(
@@ -133,7 +132,7 @@ static jobject android_media_MediaHTTPConnection_native_getIMemory(
}
static jint android_media_MediaHTTPConnection_native_readAt(
- JNIEnv *env, jobject thiz, jlong offset, jint size, jobject connectionState) {
+ JNIEnv *env, jobject thiz, jlong offset, jint size) {
sp<JMediaHTTPConnection> conn = getObject(env, thiz);
if (size > JMediaHTTPConnection::kBufferSize) {
size = JMediaHTTPConnection::kBufferSize;
@@ -142,7 +141,7 @@ static jint android_media_MediaHTTPConnection_native_readAt(
jbyteArray byteArrayObj = conn->getByteArrayObj();
jint n = env->CallIntMethod(
- thiz, gFields.readAtMethodID, offset, byteArrayObj, size, connectionState);
+ thiz, gFields.readAtMethodID, offset, byteArrayObj, size);
if (n > 0) {
env->GetByteArrayRegion(
@@ -159,7 +158,7 @@ static const JNINativeMethod gMethods[] = {
{ "native_getIMemory", "()Landroid/os/IBinder;",
(void *)android_media_MediaHTTPConnection_native_getIMemory },
- { "native_readAt", "(JILandroid/media/MediaHTTPConnection$ConnectionState;)I",
+ { "native_readAt", "(JI)I",
(void *)android_media_MediaHTTPConnection_native_readAt },
{ "native_init", "()V",
diff --git a/media/proto/jarjar-rules.txt b/media/proto/jarjar-rules.txt
index bfb0b2782486..e73f86dddac1 100644
--- a/media/proto/jarjar-rules.txt
+++ b/media/proto/jarjar-rules.txt
@@ -1,2 +1,2 @@
-rule com.google.protobuf.** com.android.media.protobuf.@1
+rule com.google.protobuf.** android.media.protobuf.@1
diff --git a/native/android/system_fonts.cpp b/native/android/system_fonts.cpp
index 302cbd11da4b..9791da63359b 100644
--- a/native/android/system_fonts.cpp
+++ b/native/android/system_fonts.cpp
@@ -250,7 +250,8 @@ AFont* _Nonnull AFontMatcher_match(
minikin::U16StringPiece(text, textLength),
matcher->mFontStyle,
matcher->mLocaleListId,
- static_cast<minikin::FamilyVariant>(matcher->mFamilyVariant));
+ static_cast<minikin::FamilyVariant>(matcher->mFamilyVariant),
+ 1 /* maxRun */);
const minikin::Font* font = runs[0].fakedFont.font;
std::unique_ptr<AFont> result = std::make_unique<AFont>();
diff --git a/packages/CaptivePortalLogin/AndroidManifest.xml b/packages/CaptivePortalLogin/AndroidManifest.xml
index a5286364dc26..355bdd8dfc98 100644
--- a/packages/CaptivePortalLogin/AndroidManifest.xml
+++ b/packages/CaptivePortalLogin/AndroidManifest.xml
@@ -18,7 +18,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.captiveportallogin"
- android:versionCode="200000000"
+ android:versionCode="210000000"
android:versionName="Q-initial">
<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="28" />
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButton.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButton.java
index 0a20eaa0b888..a371a1d8db01 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButton.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButton.java
@@ -21,6 +21,7 @@ import android.content.Intent;
import android.content.res.TypedArray;
import android.os.UserHandle;
import android.util.AttributeSet;
+import android.view.Display;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -203,4 +204,16 @@ public class CarFacetButton extends LinearLayout {
mMoreIcon.setVisibility(showMoreIcon ? VISIBLE : GONE);
}
}
+
+ /**
+ * @return The id of the display the button is on or Display.INVALID_DISPLAY if it's not yet on
+ * a display.
+ */
+ public int getDisplayId() {
+ Display display = getDisplay();
+ if (display == null) {
+ return Display.INVALID_DISPLAY;
+ }
+ return display.getDisplayId();
+ }
}
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java
index 7811a1caeb88..d20038db9151 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarFacetButtonController.java
@@ -22,10 +22,13 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import android.view.Display;
+import android.util.Log;
import android.view.View;
+import android.view.ViewGroup;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -40,15 +43,16 @@ import javax.inject.Singleton;
@Singleton
public class CarFacetButtonController {
- protected HashMap<String, CarFacetButton> mButtonsByCategory = new HashMap<>();
- protected HashMap<String, CarFacetButton> mButtonsByPackage = new HashMap<>();
- protected HashMap<String, CarFacetButton> mButtonsByComponentName = new HashMap<>();
- protected CarFacetButton mSelectedFacetButton;
+ protected ButtonMap mButtonsByCategory = new ButtonMap();
+ protected ButtonMap mButtonsByPackage = new ButtonMap();
+ protected ButtonMap mButtonsByComponentName = new ButtonMap();
+ protected HashSet<CarFacetButton> mSelectedFacetButtons;
protected Context mContext;
@Inject
public CarFacetButtonController(Context context) {
mContext = context;
+ mSelectedFacetButtons = new HashSet<>();
}
/**
@@ -59,27 +63,40 @@ public class CarFacetButtonController {
public void addFacetButton(CarFacetButton facetButton) {
String[] categories = facetButton.getCategories();
for (int i = 0; i < categories.length; i++) {
- mButtonsByCategory.put(categories[i], facetButton);
+ mButtonsByCategory.add(categories[i], facetButton);
}
String[] facetPackages = facetButton.getFacetPackages();
for (int i = 0; i < facetPackages.length; i++) {
- mButtonsByPackage.put(facetPackages[i], facetButton);
+ mButtonsByPackage.add(facetPackages[i], facetButton);
}
String[] componentNames = facetButton.getComponentName();
for (int i = 0; i < componentNames.length; i++) {
- mButtonsByComponentName.put(componentNames[i], facetButton);
+ mButtonsByComponentName.add(componentNames[i], facetButton);
}
- // Using the following as a default button for display id info it's not
- // attached to a screen at this point so it can't be extracted here.
- mSelectedFacetButton = facetButton;
}
public void removeAll() {
mButtonsByCategory.clear();
mButtonsByPackage.clear();
mButtonsByComponentName.clear();
- mSelectedFacetButton = null;
+ mSelectedFacetButtons.clear();
+ }
+
+ /**
+ * Iterate through a view looking for CarFacetButtons and adding them to the controller if found
+ *
+ * @param v the View that may contain CarFacetButtons
+ */
+ public void addAllFacetButtons(View v) {
+ if (v instanceof CarFacetButton) {
+ addFacetButton((CarFacetButton) v);
+ } else if (v instanceof ViewGroup) {
+ ViewGroup viewGroup = (ViewGroup) v;
+ for (int i = 0; i < viewGroup.getChildCount(); i++) {
+ addAllFacetButtons(viewGroup.getChildAt(i));
+ }
+ }
}
/**
@@ -94,12 +111,10 @@ public class CarFacetButtonController {
* @param stackInfoList of the currently running application
*/
public void taskChanged(List<ActivityManager.StackInfo> stackInfoList) {
- int displayId = getDisplayId();
ActivityManager.StackInfo validStackInfo = null;
- for (ActivityManager.StackInfo stackInfo : stackInfoList) {
- // If the display id is unknown or it matches the stack, it's valid for use
- if ((displayId == -1 || displayId == stackInfo.displayId)
- && stackInfo.topActivity != null) {
+ for (ActivityManager.StackInfo stackInfo :stackInfoList) {
+ // Find the first stack info with a topActivity
+ if (stackInfo.topActivity != null) {
validStackInfo = stackInfo;
break;
}
@@ -110,12 +125,20 @@ public class CarFacetButtonController {
return;
}
- if (mSelectedFacetButton != null) {
- mSelectedFacetButton.setSelected(false);
+ if (mSelectedFacetButtons != null) {
+ Iterator<CarFacetButton> iterator = mSelectedFacetButtons.iterator();
+ while(iterator.hasNext()) {
+ CarFacetButton carFacetButton = iterator.next();
+ if (carFacetButton.getDisplayId() == validStackInfo.displayId) {
+ carFacetButton.setSelected(false);
+ iterator.remove();
+ }
+ }
}
String packageName = validStackInfo.topActivity.getPackageName();
- CarFacetButton facetButton = findFacetButtongByComponentName(validStackInfo.topActivity);
+ HashSet<CarFacetButton> facetButton =
+ findFacetButtonByComponentName(validStackInfo.topActivity);
if (facetButton == null) {
facetButton = mButtonsByPackage.get(packageName);
}
@@ -127,26 +150,21 @@ public class CarFacetButtonController {
}
}
- if (facetButton != null && facetButton.getVisibility() == View.VISIBLE) {
- facetButton.setSelected(true);
- mSelectedFacetButton = facetButton;
- }
-
- }
-
- private int getDisplayId() {
- if (mSelectedFacetButton != null) {
- Display display = mSelectedFacetButton.getDisplay();
- if (display != null) {
- return display.getDisplayId();
+ if (facetButton != null) {
+ for (CarFacetButton carFacetButton : facetButton) {
+ if (carFacetButton.getDisplayId() == validStackInfo.displayId) {
+ carFacetButton.setSelected(true);
+ mSelectedFacetButtons.add(carFacetButton);
+ }
}
}
- return -1;
+
}
- private CarFacetButton findFacetButtongByComponentName(ComponentName componentName) {
- CarFacetButton button = mButtonsByComponentName.get(componentName.flattenToShortString());
- return (button != null) ? button :
+ private HashSet<CarFacetButton> findFacetButtonByComponentName(ComponentName componentName) {
+ HashSet<CarFacetButton> buttons =
+ mButtonsByComponentName.get(componentName.flattenToShortString());
+ return (buttons != null) ? buttons :
mButtonsByComponentName.get(componentName.flattenToString());
}
@@ -168,4 +186,18 @@ public class CarFacetButtonController {
}
return null;
}
+
+ // simple multi-map
+ private static class ButtonMap extends HashMap<String, HashSet<CarFacetButton>> {
+
+ public boolean add(String key, CarFacetButton value) {
+ if (containsKey(key)) {
+ return get(key).add(value);
+ }
+ HashSet<CarFacetButton> set = new HashSet<>();
+ set.add(value);
+ put(key, set);
+ return true;
+ }
+ }
}
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index 9bcc1ab90e47..44e8874f8386 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -187,11 +187,13 @@ public class CarStatusBar extends StatusBar implements
if (mIsKeyguard) {
updateNavBarForKeyguardContent();
}
+ // CarFacetButtonController was reset therefore we need to re-add the status bar elements
+ // to the controller.
+ mCarFacetButtonController.addAllFacetButtons(mStatusBarWindow);
}
private void addTemperatureViewToController(View v) {
if (v instanceof TemperatureView) {
- Log.d(TAG, "addTemperatureViewToController: found ");
mHvacController.addHvacTextView((TemperatureView) v);
} else if (v instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) v;
diff --git a/packages/DynamicSystemInstallationService/res/values/strings.xml b/packages/DynamicSystemInstallationService/res/values/strings.xml
index a72e4e2c1b74..2a66db124d10 100644
--- a/packages/DynamicSystemInstallationService/res/values/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values/strings.xml
@@ -13,11 +13,11 @@
<string name="keyguard_description">Please enter your password and continue to AndroidOnTap installation</string>
<!-- Displayed on notification: AndroidOnTap installation is completed [CHAR LIMIT=128] -->
- <string name="notification_install_completed">New system is ready, you can reboot into it or discard it.</string>
+ <string name="notification_install_completed">System update is ready. To finish installing, restart your device.</string>
<!-- Displayed on notification: AndroidOnTap installation is in progress [CHAR LIMIT=128] -->
- <string name="notification_install_inprogress">Installation is in progress.</string>
+ <string name="notification_install_inprogress">Install in progress</string>
<!-- Displayed on notification: AndroidOnTap installation is in progress [CHAR LIMIT=128] -->
- <string name="notification_install_failed">Installation Failed.</string>
+ <string name="notification_install_failed">Install Failed</string>
<!-- Displayed on notification: We are running in AndroidOnTap [CHAR LIMIT=128] -->
<string name="notification_dynsystem_in_use">We are running in AndroidOnTap.</string>
@@ -27,12 +27,12 @@
<string name="notification_action_discard">Discard</string>
<!-- Action on notification: Uninstall AndroidOnTap [CHAR LIMIT=16] -->
<string name="notification_action_uninstall">Uninstall</string>
- <!-- Action on notification: Reboot to AndroidOnTap [CHAR LIMIT=16] -->
- <string name="notification_action_reboot_to_dynsystem">Reboot</string>
+ <!-- Action on notification: Restart to AndroidOnTap [CHAR LIMIT=16] -->
+ <string name="notification_action_reboot_to_dynsystem">Restart</string>
<!-- Toast when installed AndroidOnTap is discarded [CHAR LIMIT=64] -->
<string name="toast_dynsystem_discarded">Installed AndroidOnTap is discarded.</string>
<!-- Toast when we fail to launch into AndroidOnTap [CHAR LIMIT=64] -->
- <string name="toast_failed_to_reboot_to_dynsystem">Failed to reboot into AndroidOnTap.</string>
+ <string name="toast_failed_to_reboot_to_dynsystem">Failed to restart to AndroidOnTap.</string>
</resources>
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java
index 5c6885a801e8..fcbda1d5c63b 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java
@@ -380,13 +380,13 @@ public class DynamicSystemInstallationService extends Service
builder.setContentText(getString(R.string.notification_install_completed));
builder.addAction(new Notification.Action.Builder(
- null, getString(R.string.notification_action_reboot_to_dynsystem),
- createPendingIntent(ACTION_REBOOT_TO_DYN_SYSTEM)).build());
-
- builder.addAction(new Notification.Action.Builder(
null, getString(R.string.notification_action_discard),
createPendingIntent(ACTION_DISCARD_INSTALL)).build());
+ builder.addAction(new Notification.Action.Builder(
+ null, getString(R.string.notification_action_reboot_to_dynsystem),
+ createPendingIntent(ACTION_REBOOT_TO_DYN_SYSTEM)).build());
+
break;
case STATUS_IN_USE:
diff --git a/packages/ExtServices/AndroidManifest.xml b/packages/ExtServices/AndroidManifest.xml
index 45a59a32ec17..73bfd3010983 100644
--- a/packages/ExtServices/AndroidManifest.xml
+++ b/packages/ExtServices/AndroidManifest.xml
@@ -17,7 +17,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
package="android.ext.services"
- android:versionCode="200000000"
+ android:versionCode="210000000"
android:versionName="1"
coreApp="true">
diff --git a/packages/NetworkStack/AndroidManifest.xml b/packages/NetworkStack/AndroidManifest.xml
index b4588e01dc79..ac05c44c1803 100644
--- a/packages/NetworkStack/AndroidManifest.xml
+++ b/packages/NetworkStack/AndroidManifest.xml
@@ -19,7 +19,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.networkstack"
android:sharedUserId="android.uid.networkstack"
- android:versionCode="200000000"
+ android:versionCode="210000000"
android:versionName="29 system image"
>
diff --git a/packages/NetworkStack/src/android/net/ip/IpClient.java b/packages/NetworkStack/src/android/net/ip/IpClient.java
index c1f178a7f5f1..80d139cb6153 100644
--- a/packages/NetworkStack/src/android/net/ip/IpClient.java
+++ b/packages/NetworkStack/src/android/net/ip/IpClient.java
@@ -51,6 +51,7 @@ import android.os.SystemClock;
import android.text.TextUtils;
import android.util.LocalLog;
import android.util.Log;
+import android.util.Pair;
import android.util.SparseArray;
import com.android.internal.annotations.VisibleForTesting;
@@ -298,6 +299,7 @@ public class IpClient extends StateMachine {
private static final int EVENT_READ_PACKET_FILTER_COMPLETE = 12;
private static final int CMD_ADD_KEEPALIVE_PACKET_FILTER_TO_APF = 13;
private static final int CMD_REMOVE_KEEPALIVE_PACKET_FILTER_FROM_APF = 14;
+ private static final int CMD_UPDATE_L2KEY_GROUPHINT = 15;
// Internal commands to use instead of trying to call transitionTo() inside
// a given State's enter() method. Calling transitionTo() from enter/exit
@@ -364,6 +366,8 @@ public class IpClient extends StateMachine {
private String mTcpBufferSizes;
private ProxyInfo mHttpProxy;
private ApfFilter mApfFilter;
+ private String mL2Key; // The L2 key for this network, for writing into the memory store
+ private String mGroupHint; // The group hint for this network, for writing into the memory store
private boolean mMulticastFiltering;
private long mStartTimeMillis;
@@ -524,6 +528,11 @@ public class IpClient extends StateMachine {
IpClient.this.stop();
}
@Override
+ public void setL2KeyAndGroupHint(String l2Key, String groupHint) {
+ checkNetworkStackCallingPermission();
+ IpClient.this.setL2KeyAndGroupHint(l2Key, groupHint);
+ }
+ @Override
public void setTcpBufferSizes(String tcpBufferSizes) {
checkNetworkStackCallingPermission();
IpClient.this.setTcpBufferSizes(tcpBufferSizes);
@@ -652,6 +661,13 @@ public class IpClient extends StateMachine {
}
/**
+ * Set the L2 key and group hint for storing info into the memory store.
+ */
+ public void setL2KeyAndGroupHint(String l2Key, String groupHint) {
+ sendMessage(CMD_UPDATE_L2KEY_GROUPHINT, new Pair<>(l2Key, groupHint));
+ }
+
+ /**
* Set the HTTP Proxy configuration to use.
*
* This may be called, repeatedly, at any time before or after a call to
@@ -1068,6 +1084,10 @@ public class IpClient extends StateMachine {
return true;
}
final int delta = setLinkProperties(newLp);
+ // Most of the attributes stored in the memory store are deduced from
+ // the link properties, therefore when the properties update the memory
+ // store record should be updated too.
+ maybeSaveNetworkToIpMemoryStore();
if (sendCallbacks) {
dispatchCallback(delta, newLp);
}
@@ -1083,6 +1103,7 @@ public class IpClient extends StateMachine {
Log.d(mTag, "onNewDhcpResults(" + Objects.toString(dhcpResults) + ")");
}
mCallback.onNewDhcpResults(dhcpResults);
+ maybeSaveNetworkToIpMemoryStore();
dispatchCallback(delta, newLp);
}
@@ -1213,6 +1234,10 @@ public class IpClient extends StateMachine {
mInterfaceCtrl.clearAllAddresses();
}
+ private void maybeSaveNetworkToIpMemoryStore() {
+ // TODO : implement this
+ }
+
class StoppedState extends State {
@Override
public void enter() {
@@ -1258,6 +1283,13 @@ public class IpClient extends StateMachine {
handleLinkPropertiesUpdate(NO_CALLBACKS);
break;
+ case CMD_UPDATE_L2KEY_GROUPHINT: {
+ final Pair<String, String> args = (Pair<String, String>) msg.obj;
+ mL2Key = args.first;
+ mGroupHint = args.second;
+ break;
+ }
+
case CMD_SET_MULTICAST_FILTER:
mMulticastFiltering = (boolean) msg.obj;
break;
@@ -1357,6 +1389,20 @@ public class IpClient extends StateMachine {
}
break;
+ case CMD_UPDATE_L2KEY_GROUPHINT: {
+ final Pair<String, String> args = (Pair<String, String>) msg.obj;
+ mL2Key = args.first;
+ mGroupHint = args.second;
+ // TODO : attributes should be saved to the memory store with
+ // these new values if they differ from the previous ones.
+ // If the state machine is in pure StartedState, then the values to input
+ // are not known yet and should be updated when the LinkProperties are updated.
+ // If the state machine is in RunningState (which is a child of StartedState)
+ // then the next NUD check should be used to store the new values to avoid
+ // inputting current values for what may be a different L3 network.
+ break;
+ }
+
case EVENT_PROVISIONING_TIMEOUT:
handleProvisioningFailure();
break;
diff --git a/packages/NetworkStack/src/android/net/util/DataStallUtils.java b/packages/NetworkStack/src/android/net/util/DataStallUtils.java
new file mode 100644
index 000000000000..b6dbeb19ad1d
--- /dev/null
+++ b/packages/NetworkStack/src/android/net/util/DataStallUtils.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net.util;
+
+/**
+ * Collection of utilities for data stall.
+ */
+public class DataStallUtils {
+ /**
+ * Detect data stall via using dns timeout counts.
+ */
+ public static final int DATA_STALL_EVALUATION_TYPE_DNS = 1;
+ // Default configuration values for data stall detection.
+ public static final int DEFAULT_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = 5;
+ public static final int DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS = 60 * 1000;
+ public static final int DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS = 30 * 60 * 1000;
+ /**
+ * The threshold value for the number of consecutive dns timeout events received to be a
+ * signal of data stall. The number of consecutive timeouts needs to be {@code >=} this
+ * threshold to be considered a data stall. Set the value to {@code <= 0} to disable. Note
+ * that the value should be {@code > 0} if the DNS data stall detection is enabled.
+ *
+ */
+ public static final String CONFIG_DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD =
+ "data_stall_consecutive_dns_timeout_threshold";
+
+ /**
+ * The minimal time interval in milliseconds for data stall reevaluation.
+ *
+ */
+ public static final String CONFIG_DATA_STALL_MIN_EVALUATE_INTERVAL =
+ "data_stall_min_evaluate_interval";
+
+ /**
+ * DNS timeouts older than this timeout (in milliseconds) are not considered for detecting
+ * a data stall.
+ *
+ */
+ public static final String CONFIG_DATA_STALL_VALID_DNS_TIME_THRESHOLD =
+ "data_stall_valid_dns_time_threshold";
+
+ /**
+ * Which data stall detection signal to use. This is a bitmask constructed by bitwise-or-ing
+ * (i.e. {@code |}) the DATA_STALL_EVALUATION_TYPE_* values.
+ *
+ * Type: int
+ * Valid values:
+ * {@link #DATA_STALL_EVALUATION_TYPE_DNS} : Use dns as a signal.
+ */
+ public static final String CONFIG_DATA_STALL_EVALUATION_TYPE = "data_stall_evaluation_type";
+ public static final int DEFAULT_DATA_STALL_EVALUATION_TYPES = DATA_STALL_EVALUATION_TYPE_DNS;
+ // The default number of DNS events kept of the log kept for dns signal evaluation. Each event
+ // is represented by a {@link com.android.server.connectivity.NetworkMonitor#DnsResult} objects.
+ // It's also the size of array of {@link com.android.server.connectivity.nano.DnsEvent} kept in
+ // metrics. Note that increasing the size may cause statsd log buffer bust. Need to check the
+ // design in statsd when you try to increase the size.
+ public static final int DEFAULT_DNS_LOG_SIZE = 20;
+}
diff --git a/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java b/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java
index dada61ce9618..e7a607b1f921 100644
--- a/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java
+++ b/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java
@@ -32,6 +32,9 @@ import java.util.function.Predicate;
* Collection of utilities for the network stack.
*/
public class NetworkStackUtils {
+ // TODO: Refer to DeviceConfig definition.
+ public static final String NAMESPACE_CONNECTIVITY = "connectivity";
+
static {
System.loadLibrary("networkstackutilsjni");
}
@@ -104,6 +107,24 @@ public class NetworkStackUtils {
}
/**
+ * Look up the value of a property for a particular namespace from {@link DeviceConfig}.
+ * @param namespace The namespace containing the property to look up.
+ * @param name The name of the property to look up.
+ * @param defaultValue The value to return if the property does not exist or has no non-null
+ * value.
+ * @return the corresponding value, or defaultValue if none exists.
+ */
+ public static int getDeviceConfigPropertyInt(@NonNull String namespace, @NonNull String name,
+ int defaultValue) {
+ String value = getDeviceConfigProperty(namespace, name, null /* defaultValue */);
+ try {
+ return (value != null) ? Integer.parseInt(value) : defaultValue;
+ } catch (NumberFormatException e) {
+ return defaultValue;
+ }
+ }
+
+ /**
* Attaches a socket filter that accepts DHCP packets to the given socket.
*/
public static native void attachDhcpFilter(FileDescriptor fd) throws SocketException;
diff --git a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
index 8f7d98876e4c..7b77d66ca01f 100644
--- a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
+++ b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java
@@ -32,8 +32,18 @@ import static android.net.metrics.ValidationProbeEvent.DNS_FAILURE;
import static android.net.metrics.ValidationProbeEvent.DNS_SUCCESS;
import static android.net.metrics.ValidationProbeEvent.PROBE_FALLBACK;
import static android.net.metrics.ValidationProbeEvent.PROBE_PRIVDNS;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_EVALUATION_TYPE;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_MIN_EVALUATE_INTERVAL;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_VALID_DNS_TIME_THRESHOLD;
+import static android.net.util.DataStallUtils.DATA_STALL_EVALUATION_TYPE_DNS;
+import static android.net.util.DataStallUtils.DEFAULT_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD;
+import static android.net.util.DataStallUtils.DEFAULT_DATA_STALL_EVALUATION_TYPES;
+import static android.net.util.DataStallUtils.DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS;
+import static android.net.util.DataStallUtils.DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS;
+import static android.net.util.DataStallUtils.DEFAULT_DNS_LOG_SIZE;
+import static android.net.util.NetworkStackUtils.NAMESPACE_CONNECTIVITY;
import static android.net.util.NetworkStackUtils.isEmpty;
-import static android.provider.Settings.Global.DATA_STALL_EVALUATION_TYPE_DNS;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -60,6 +70,7 @@ import android.net.metrics.NetworkEvent;
import android.net.metrics.ValidationProbeEvent;
import android.net.shared.NetworkMonitorUtils;
import android.net.shared.PrivateDnsConfig;
+import android.net.util.NetworkStackUtils;
import android.net.util.SharedLog;
import android.net.util.Stopwatch;
import android.net.wifi.WifiInfo;
@@ -126,18 +137,6 @@ public class NetworkMonitor extends StateMachine {
private static final int SOCKET_TIMEOUT_MS = 10000;
private static final int PROBE_TIMEOUT_MS = 3000;
-
- // Default configuration values for data stall detection.
- private static final int DEFAULT_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD = 5;
- private static final int DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS = 60 * 1000;
- private static final int DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS = 30 * 60 * 1000;
-
- private static final int DEFAULT_DATA_STALL_EVALUATION_TYPES =
- DATA_STALL_EVALUATION_TYPE_DNS;
- // Reevaluate it as intending to increase the number. Larger log size may cause statsd
- // log buffer bust and have stats log lost.
- private static final int DEFAULT_DNS_LOG_SIZE = 20;
-
enum EvaluationResult {
VALIDATED(true),
CAPTIVE_PORTAL(false);
@@ -388,7 +387,7 @@ public class NetworkMonitor extends StateMachine {
mDnsStallDetector = new DnsStallDetector(mConsecutiveDnsTimeoutThreshold);
mDataStallMinEvaluateTime = getDataStallMinEvaluateTime();
mDataStallValidDnsTimeThreshold = getDataStallValidDnsTimeThreshold();
- mDataStallEvaluationType = getDataStallEvalutionType();
+ mDataStallEvaluationType = getDataStallEvaluationType();
// Provide empty LinkProperties and NetworkCapabilities to make sure they are never null,
// even before notifyNetworkConnected.
@@ -542,10 +541,6 @@ public class NetworkMonitor extends StateMachine {
return HANDLED;
case CMD_NETWORK_DISCONNECTED:
logNetworkEvent(NetworkEvent.NETWORK_DISCONNECTED);
- if (mLaunchCaptivePortalAppBroadcastReceiver != null) {
- mContext.unregisterReceiver(mLaunchCaptivePortalAppBroadcastReceiver);
- mLaunchCaptivePortalAppBroadcastReceiver = null;
- }
quit();
return HANDLED;
case CMD_FORCE_REEVALUATION:
@@ -779,7 +774,10 @@ public class NetworkMonitor extends StateMachine {
@Override
public void exit() {
- mLaunchCaptivePortalAppBroadcastReceiver = null;
+ if (mLaunchCaptivePortalAppBroadcastReceiver != null) {
+ mContext.unregisterReceiver(mLaunchCaptivePortalAppBroadcastReceiver);
+ mLaunchCaptivePortalAppBroadcastReceiver = null;
+ }
hideProvisioningNotification();
}
}
@@ -1185,25 +1183,26 @@ public class NetworkMonitor extends StateMachine {
}
private int getConsecutiveDnsTimeoutThreshold() {
- return mDependencies.getSetting(mContext,
- Settings.Global.DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD,
+ return mDependencies.getDeviceConfigPropertyInt(NAMESPACE_CONNECTIVITY,
+ CONFIG_DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD,
DEFAULT_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD);
}
private int getDataStallMinEvaluateTime() {
- return mDependencies.getSetting(mContext,
- Settings.Global.DATA_STALL_MIN_EVALUATE_INTERVAL,
+ return mDependencies.getDeviceConfigPropertyInt(NAMESPACE_CONNECTIVITY,
+ CONFIG_DATA_STALL_MIN_EVALUATE_INTERVAL,
DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS);
}
private int getDataStallValidDnsTimeThreshold() {
- return mDependencies.getSetting(mContext,
- Settings.Global.DATA_STALL_VALID_DNS_TIME_THRESHOLD,
+ return mDependencies.getDeviceConfigPropertyInt(NAMESPACE_CONNECTIVITY,
+ CONFIG_DATA_STALL_VALID_DNS_TIME_THRESHOLD,
DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS);
}
- private int getDataStallEvalutionType() {
- return mDependencies.getSetting(mContext, Settings.Global.DATA_STALL_EVALUATION_TYPE,
+ private int getDataStallEvaluationType() {
+ return mDependencies.getDeviceConfigPropertyInt(NAMESPACE_CONNECTIVITY,
+ CONFIG_DATA_STALL_EVALUATION_TYPE,
DEFAULT_DATA_STALL_EVALUATION_TYPES);
}
@@ -1726,6 +1725,33 @@ public class NetworkMonitor extends StateMachine {
return value != null ? value : defaultValue;
}
+ /**
+ * Look up the value of a property in DeviceConfig.
+ * @param namespace The namespace containing the property to look up.
+ * @param name The name of the property to look up.
+ * @param defaultValue The value to return if the property does not exist or has no non-null
+ * value.
+ * @return the corresponding value, or defaultValue if none exists.
+ */
+ @Nullable
+ public String getDeviceConfigProperty(@NonNull String namespace, @NonNull String name,
+ @Nullable String defaultValue) {
+ return NetworkStackUtils.getDeviceConfigProperty(namespace, name, defaultValue);
+ }
+
+ /**
+ * Look up the value of a property in DeviceConfig.
+ * @param namespace The namespace containing the property to look up.
+ * @param name The name of the property to look up.
+ * @param defaultValue The value to return if the property does not exist or has no non-null
+ * value.
+ * @return the corresponding value, or defaultValue if none exists.
+ */
+ public int getDeviceConfigPropertyInt(@NonNull String namespace, @NonNull String name,
+ int defaultValue) {
+ return NetworkStackUtils.getDeviceConfigPropertyInt(namespace, name, defaultValue);
+ }
+
public static final Dependencies DEFAULT = new Dependencies();
}
diff --git a/packages/NetworkStack/tests/src/android/net/ip/IpClientTest.java b/packages/NetworkStack/tests/src/android/net/ip/IpClientTest.java
index eee12d6f8c7c..5f8000634ffa 100644
--- a/packages/NetworkStack/tests/src/android/net/ip/IpClientTest.java
+++ b/packages/NetworkStack/tests/src/android/net/ip/IpClientTest.java
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import android.app.AlarmManager;
@@ -40,7 +41,9 @@ import android.net.IpPrefix;
import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.MacAddress;
+import android.net.NetworkStackIpMemoryStore;
import android.net.RouteInfo;
+import android.net.ipmemorystore.NetworkAttributes;
import android.net.shared.InitialConfiguration;
import android.net.shared.ProvisioningConfiguration;
import android.net.util.InterfaceParams;
@@ -81,6 +84,8 @@ public class IpClientTest {
// See RFC 7042#section-2.1.2 for EUI-48 documentation values.
private static final MacAddress TEST_MAC = MacAddress.fromString("00:00:5E:00:53:01");
private static final int TEST_TIMEOUT_MS = 400;
+ private static final String TEST_L2KEY = "some l2key";
+ private static final String TEST_GROUPHINT = "some grouphint";
@Mock private Context mContext;
@Mock private ConnectivityManager mCm;
@@ -92,6 +97,7 @@ public class IpClientTest {
@Mock private IpClient.Dependencies mDependencies;
@Mock private ContentResolver mContentResolver;
@Mock private NetworkStackService.NetworkStackServiceManager mNetworkStackServiceManager;
+ @Mock private NetworkStackIpMemoryStore mIpMemoryStore;
private NetworkObserver mObserver;
private InterfaceParams mIfParams;
@@ -141,6 +147,12 @@ public class IpClientTest {
return empty;
}
+ private void verifyNetworkAttributesStored(final String l2Key,
+ final NetworkAttributes attributes) {
+ // TODO : when storing is implemented, turn this on
+ // verify(mIpMemoryStore).storeNetworkAttributes(eq(l2Key), eq(attributes), any());
+ }
+
@Test
public void testNullInterfaceNameMostDefinitelyThrows() throws Exception {
setTestInterfaceParams(null);
@@ -173,6 +185,7 @@ public class IpClientTest {
setTestInterfaceParams(TEST_IFNAME);
final IpClient ipc = new IpClient(mContext, TEST_IFNAME, mCb, mObserverRegistry,
mNetworkStackServiceManager, mDependencies);
+ verifyNoMoreInteractions(mIpMemoryStore);
ipc.shutdown();
}
@@ -183,6 +196,7 @@ public class IpClientTest {
mNetworkStackServiceManager, mDependencies);
ipc.startProvisioning(new ProvisioningConfiguration());
verify(mCb, times(1)).onProvisioningFailure(any());
+ verify(mIpMemoryStore, never()).storeNetworkAttributes(any(), any(), any());
ipc.shutdown();
}
@@ -202,6 +216,7 @@ public class IpClientTest {
verify(mCb, times(1)).setNeighborDiscoveryOffload(true);
verify(mCb, timeout(TEST_TIMEOUT_MS).times(1)).setFallbackMulticastFilter(false);
verify(mCb, never()).onProvisioningFailure(any());
+ verify(mIpMemoryStore, never()).storeNetworkAttributes(any(), any(), any());
ipc.shutdown();
verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceSetEnableIPv6(iface, false);
@@ -214,6 +229,8 @@ public class IpClientTest {
public void testProvisioningWithInitialConfiguration() throws Exception {
final String iface = TEST_IFNAME;
final IpClient ipc = makeIpClient(iface);
+ final String l2Key = TEST_L2KEY;
+ final String groupHint = TEST_GROUPHINT;
String[] addresses = {
"fe80::a4be:f92:e1f7:22d1/64",
@@ -232,6 +249,7 @@ public class IpClientTest {
verify(mCb, times(1)).setNeighborDiscoveryOffload(true);
verify(mCb, timeout(TEST_TIMEOUT_MS).times(1)).setFallbackMulticastFilter(false);
verify(mCb, never()).onProvisioningFailure(any());
+ ipc.setL2KeyAndGroupHint(l2Key, groupHint);
for (String addr : addresses) {
String[] parts = addr.split("/");
@@ -253,12 +271,16 @@ public class IpClientTest {
LinkProperties want = linkproperties(links(addresses), routes(prefixes));
want.setInterfaceName(iface);
verify(mCb, timeout(TEST_TIMEOUT_MS).times(1)).onProvisioningSuccess(want);
+ verifyNetworkAttributesStored(l2Key, new NetworkAttributes.Builder()
+ .setGroupHint(groupHint)
+ .build());
ipc.shutdown();
verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceSetEnableIPv6(iface, false);
verify(mNetd, timeout(TEST_TIMEOUT_MS).times(1)).interfaceClearAddrs(iface);
verify(mCb, timeout(TEST_TIMEOUT_MS).times(1))
.onLinkPropertiesChange(makeEmptyLinkProperties(iface));
+ verifyNoMoreInteractions(mIpMemoryStore);
}
@Test
diff --git a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java
index 6665aae65d90..9f6c7f89d71a 100644
--- a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java
+++ b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java
@@ -21,7 +21,11 @@ import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_INVALID;
import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_PARTIAL_CONNECTIVITY;
import static android.net.INetworkMonitor.NETWORK_TEST_RESULT_VALID;
import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
-import static android.provider.Settings.Global.DATA_STALL_EVALUATION_TYPE_DNS;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_EVALUATION_TYPE;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_MIN_EVALUATE_INTERVAL;
+import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_VALID_DNS_TIME_THRESHOLD;
+import static android.net.util.DataStallUtils.DATA_STALL_EVALUATION_TYPE_DNS;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
@@ -114,7 +118,6 @@ public class NetworkMonitorTest {
private @Captor ArgumentCaptor<String> mNetworkTestedRedirectUrlCaptor;
private static final int TEST_NETID = 4242;
-
private static final String TEST_HTTP_URL = "http://www.google.com/gen_204";
private static final String TEST_HTTPS_URL = "https://www.google.com/gen_204";
private static final String TEST_FALLBACK_URL = "http://fallback.google.com/gen_204";
@@ -593,24 +596,23 @@ public class NetworkMonitorTest {
}
private void setDataStallEvaluationType(int type) {
- when(mDependencies.getSetting(any(),
- eq(Settings.Global.DATA_STALL_EVALUATION_TYPE), anyInt())).thenReturn(type);
+ when(mDependencies.getDeviceConfigPropertyInt(any(),
+ eq(CONFIG_DATA_STALL_EVALUATION_TYPE), anyInt())).thenReturn(type);
}
private void setMinDataStallEvaluateInterval(int time) {
- when(mDependencies.getSetting(any(),
- eq(Settings.Global.DATA_STALL_MIN_EVALUATE_INTERVAL), anyInt())).thenReturn(time);
+ when(mDependencies.getDeviceConfigPropertyInt(any(),
+ eq(CONFIG_DATA_STALL_MIN_EVALUATE_INTERVAL), anyInt())).thenReturn(time);
}
private void setValidDataStallDnsTimeThreshold(int time) {
- when(mDependencies.getSetting(any(),
- eq(Settings.Global.DATA_STALL_VALID_DNS_TIME_THRESHOLD), anyInt())).thenReturn(time);
+ when(mDependencies.getDeviceConfigPropertyInt(any(),
+ eq(CONFIG_DATA_STALL_VALID_DNS_TIME_THRESHOLD), anyInt())).thenReturn(time);
}
private void setConsecutiveDnsTimeoutThreshold(int num) {
- when(mDependencies.getSetting(any(),
- eq(Settings.Global.DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD), anyInt()))
- .thenReturn(num);
+ when(mDependencies.getDeviceConfigPropertyInt(any(),
+ eq(CONFIG_DATA_STALL_CONSECUTIVE_DNS_TIMEOUT_THRESHOLD), anyInt())).thenReturn(num);
}
private void setFallbackUrl(String url) {
diff --git a/packages/PackageInstaller/res/values-af/strings.xml b/packages/PackageInstaller/res/values-af/strings.xml
index ce007efd68d6..0f2f3de929dd 100644
--- a/packages/PackageInstaller/res/values-af/strings.xml
+++ b/packages/PackageInstaller/res/values-af/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Wil jy hierdie program vir die gebruiker <xliff:g id="USERNAME">%1$s</xliff:g> deïnstalleer?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Vervang hierdie program met die fabriekweergawe? Alle data sal verwyder word."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Vervang hierdie program met die fabriekweergawe? Alle data sal verwyder word. Dit beïnvloed alle gebruikers van hierdie toestel, insluitend dié met werkprofiele."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Verwyder ook <xliff:g id="SIZE">%1$s</xliff:g> se geassosieerde medialêers."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Hou <xliff:g id="SIZE">%1$s</xliff:g> se programdata."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Voer tans deïnstallerings uit"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislukte deïnstallerings"</string>
diff --git a/packages/PackageInstaller/res/values-am/strings.xml b/packages/PackageInstaller/res/values-am/strings.xml
index 21cdaa6e8b5b..4579b627a64e 100644
--- a/packages/PackageInstaller/res/values-am/strings.xml
+++ b/packages/PackageInstaller/res/values-am/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"ይህን መተግበሪያ ለተጠቃሚ <xliff:g id="USERNAME">%1$s</xliff:g> ማራገፍ ይፈልጋሉ?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ይህ መተግበሪያ በፋብሪካው ስሪት ይተካ? ሁሉም ውሂብ ይወገዳል።"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ይህ መተግበሪያ በፋብሪካው ስሪት ይተካ? ሁሉም ውሂብ ይወገዳል። እነዚያን የሥራ መገለጫዎች ያላቸውን ጨምሮ ሁሉንም በዚህ መሣሪያ ላይ ባሉ ተጠቃሚዎች ላይ ተጽዕኖ ያሳርፍባቸዋል።"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"እንዲሁም <xliff:g id="SIZE">%1$s</xliff:g> ተጓዳኝ የሚዲያ ፋይሎችን አስወግድ"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"ከመተግበሪያ ውሂብ <xliff:g id="SIZE">%1$s</xliff:g> አቆይ።"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"በማሄድ ላይ ያሉ ማራገፎች"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ያልተሳኩ ማራገፎች"</string>
diff --git a/packages/PackageInstaller/res/values-as/strings.xml b/packages/PackageInstaller/res/values-as/strings.xml
index d3429bf4ab2c..d65a9c7e5f37 100644
--- a/packages/PackageInstaller/res/values-as/strings.xml
+++ b/packages/PackageInstaller/res/values-as/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"আপুনি ব্যৱহাৰকাৰীৰ <xliff:g id="USERNAME">%1$s</xliff:g> বাবে এই এপটো আনইনষ্টল কৰিব বিচাৰেনে?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"এই এপটোৰ ফেক্টৰী সংস্কৰণ ব্যৱহাৰ কৰিব বিচাৰেনে? সকলো ডেটা মচা হ\'ব।"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"এই এপটোৰ ফেক্টৰী সংস্কৰণ ব্যৱহাৰ কৰিব বিচাৰেনে? সকলো ডেটা মচা হ\'ব। কর্মস্থানৰ প্ৰফাইল থকা ব্যৱহাৰকাৰীৰ লগতে ডিভাইচটোৰ সকলো ব্যৱহাৰকাৰীৰ ওপৰত ইয়াৰ প্ৰভাৱ পৰিব।"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"সংশ্লিষ্ট মিডিয়া ফাইলৰ পৰা <xliff:g id="SIZE">%1$s</xliff:g> আঁতৰাওক।"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"এপৰ ডেটাৰ <xliff:g id="SIZE">%1$s</xliff:g> ৰাখক"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"আনইনষ্টল কৰি থকা হৈছে"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"যিবোৰ আনইনষ্টল পৰা নগ\'ল"</string>
diff --git a/packages/PackageInstaller/res/values-az/strings.xml b/packages/PackageInstaller/res/values-az/strings.xml
index caa6f7d5cc1f..d83ab25e4908 100644
--- a/packages/PackageInstaller/res/values-az/strings.xml
+++ b/packages/PackageInstaller/res/values-az/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı istifadəçi üçün bu tətbiqi sistemdən silmək istəyirsiniz?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Tətbiq zavod versiyası ilə əvəz olunsun? Bütün data silinəcək."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Tətbiq zavod versiyası ilə əvəz olunsun? Bütün data silinəcək. Bu, iş profilləri daxil olmaqla bu cihazın bütün istifadəçilərinə təsir edir."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Həmçinin, <xliff:g id="SIZE">%1$s</xliff:g> həcmində əlaqədar media fayllarını silin."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Tətbiq datasının <xliff:g id="SIZE">%1$s</xliff:g> hissəsini saxlayın."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"İşləyən sistemlər silinmələr"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Uğursuz olan sistemlər silinmələr"</string>
diff --git a/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml b/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
index 689692def477..958117fb7dca 100644
--- a/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
+++ b/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Želite li da deinstalirate ovu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Želite li da zamenite ovu aplikaciju fabričkom verzijom? Svi podaci će biti uklonjeni."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Želite li da zamenite ovu aplikaciju fabričkom verzijom? Svi podaci će biti uklonjeni. Ovo utiče na sve korisnike ovog uređaja, uključujući i one sa profilima za Work."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Ukloni i <xliff:g id="SIZE">%1$s</xliff:g> povezanih medijskih datoteka."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zadrži <xliff:g id="SIZE">%1$s</xliff:g> podataka aplikacije."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Aktivna deinstaliranja"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspela deinstaliranja"</string>
diff --git a/packages/PackageInstaller/res/values-be/strings.xml b/packages/PackageInstaller/res/values-be/strings.xml
index a6e87e95117d..3fc4cbb890c8 100644
--- a/packages/PackageInstaller/res/values-be/strings.xml
+++ b/packages/PackageInstaller/res/values-be/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Хочаце выдаліць гэту праграму для карыстальніка <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Замяніць гэту праграму заводскай версіяй? Усе даныя будуць выдалены."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Замяніць гэту праграму заводскай версіяй? Усе даныя будуць выдалены. Гэта паўплывае на ўсіх карыстальнікаў гэтай прылады, уключаючы карыстальнікаў з працоўнымі профілямі."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Таксама выдаліць <xliff:g id="SIZE">%1$s</xliff:g> звязаных файлаў мультымедыя."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Захаваць даныя праграмы (<xliff:g id="SIZE">%1$s</xliff:g>)."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Актыўныя выдаленні"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Нявыкананыя выдаленні"</string>
diff --git a/packages/PackageInstaller/res/values-bg/strings.xml b/packages/PackageInstaller/res/values-bg/strings.xml
index 51a0e88446c2..d384a5a35501 100644
--- a/packages/PackageInstaller/res/values-bg/strings.xml
+++ b/packages/PackageInstaller/res/values-bg/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Искате ли да деинсталирате това приложение за потребителя <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Това приложение да се замени ли с фабричната версия? Всички данни ще бъдат премахнати."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Това приложение да се замени ли с фабричната версия? Всички данни ще бъдат премахнати. Промяната ще засегне всеки потребител на устройството, включително тези със служебни потребителски профили."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Премахване и на <xliff:g id="SIZE">%1$s</xliff:g> свързани мултимедийни файлове."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Запазване на <xliff:g id="SIZE">%1$s</xliff:g> данни от приложението."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активни деинсталирания"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Неуспешни деинсталирания"</string>
diff --git a/packages/PackageInstaller/res/values-bn/strings.xml b/packages/PackageInstaller/res/values-bn/strings.xml
index 2e610bb6f3e7..d4515d38a58c 100644
--- a/packages/PackageInstaller/res/values-bn/strings.xml
+++ b/packages/PackageInstaller/res/values-bn/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"আপনি কি <xliff:g id="USERNAME">%1$s</xliff:g>-এর জন্য এই অ্যাপটি আনইনস্টল করতে চান?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ফ্যাক্টরি ভার্সন দিয়ে এই অ্যাপটিকে বদলাতে চান? সব ডেটা মুছে যাবে।"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ফ্যাক্টরি ভার্সন দিয়ে এই অ্যাপটিকে বদলাতে চান? সব ডেটা মুছে যাবে। এই ডিভাইসে কাজের প্রোফাইল আছে এমন ব্যবহারকারী সহ সবাই এর দ্বারা প্রভাবিত হবেন।"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"অ্যাপের সাথে সম্পর্কিত <xliff:g id="SIZE">%1$s</xliff:g> সাইজের মিডিয়া ফাইলগুলিও সরিয়ে দিন।"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"অ্যাপ ডেটার মধ্যে <xliff:g id="SIZE">%1$s</xliff:g> রেখে দিন।"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"আনইনস্টল করা হচ্ছে"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"আনইনস্টল করা যায়নি"</string>
diff --git a/packages/PackageInstaller/res/values-bs/strings.xml b/packages/PackageInstaller/res/values-bs/strings.xml
index 84a5a1671835..329e940056fa 100644
--- a/packages/PackageInstaller/res/values-bs/strings.xml
+++ b/packages/PackageInstaller/res/values-bs/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Želite li deinstalirati ovu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Želite li ovu aplikaciju zamijeniti s fabričkom verzijom? Svi podaci će biti uklonjeni."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Želite li ovu aplikaciju zamijeniti s fabričkom verzijom? Svi podaci će biti uklonjeni. To će uticati na sve korisnike uređaja, uključujući i one s radnim profilima."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Također ukloni <xliff:g id="SIZE">%1$s</xliff:g> povezanih medijskih fajlova."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zadržati <xliff:g id="SIZE">%1$s</xliff:g> podataka aplikacije."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Tekuća deinstaliranja"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspjela deinstaliranja"</string>
diff --git a/packages/PackageInstaller/res/values-cs/strings.xml b/packages/PackageInstaller/res/values-cs/strings.xml
index 8e4ce59cf3f1..7b5763946787 100644
--- a/packages/PackageInstaller/res/values-cs/strings.xml
+++ b/packages/PackageInstaller/res/values-cs/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Chcete tuto aplikaci pro uživatele <xliff:g id="USERNAME">%1$s</xliff:g> odinstalovat?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Chcete tuto aplikaci nahradit tovární verzí? Všechna data budou odstraněna."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Chcete tuto aplikaci nahradit tovární verzí? Všechna data budou odstraněna. Tato akce ovlivní všechny uživatele zařízení, včetně uživatelů s pracovním profilem."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Odstranit také <xliff:g id="SIZE">%1$s</xliff:g> přidružených mediálních souborů."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Ponechat data aplikace o velikosti <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Probíhající odinstalace"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neúspěšné odinstalace"</string>
diff --git a/packages/PackageInstaller/res/values-da/strings.xml b/packages/PackageInstaller/res/values-da/strings.xml
index 9b57186a20d5..271c1f2db770 100644
--- a/packages/PackageInstaller/res/values-da/strings.xml
+++ b/packages/PackageInstaller/res/values-da/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vil du afinstallere denne app for brugeren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Vil du erstatte denne app med fabriksversionen? Alle data fjernes."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Vil du erstatte denne app med fabriksversionen? Alle data fjernes. Dette påvirker alle brugere af denne enhed, bl.a. brugere med arbejdsprofiler."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Fjern også <xliff:g id="SIZE">%1$s</xliff:g> tilknyttede mediefiler."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Behold <xliff:g id="SIZE">%1$s</xliff:g> appdata."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Igangværende afinstallationer"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislykkede afinstallationer"</string>
diff --git a/packages/PackageInstaller/res/values-de/strings.xml b/packages/PackageInstaller/res/values-de/strings.xml
index 3958b7491464..bfe3f2850c88 100644
--- a/packages/PackageInstaller/res/values-de/strings.xml
+++ b/packages/PackageInstaller/res/values-de/strings.xml
@@ -40,7 +40,7 @@
<string name="unknown_apps_admin_dlg_text" msgid="4456572224020176095">"Dein Administrator lässt keine Installationen von Apps aus unbekannten Quellen zu"</string>
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Dieser Nutzer darf keine unbekannten Apps installieren"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Dieser Nutzer darf keine Apps installieren"</string>
- <string name="ok" msgid="7871959885003339302">"OK"</string>
+ <string name="ok" msgid="7871959885003339302">"Ok"</string>
<string name="manage_applications" msgid="5400164782453975580">"Apps verwalten"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Kein freier Speicher vorhanden"</string>
<string name="out_of_space_dlg_text" msgid="8727714096031856231">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht installiert werden. Gib Speicherplatz frei und versuche es noch einmal."</string>
diff --git a/packages/PackageInstaller/res/values-el/strings.xml b/packages/PackageInstaller/res/values-el/strings.xml
index 36f9f2d4b2f5..b158bedf66d3 100644
--- a/packages/PackageInstaller/res/values-el/strings.xml
+++ b/packages/PackageInstaller/res/values-el/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Θέλετε να απεγκαταστήσετε αυτήν την εφαρμογή για τον χρήστη <xliff:g id="USERNAME">%1$s</xliff:g>;"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Να αντικατασταθεί αυτή η εφαρμογή με την εργοστασιακή έκδοση; Όλα τα δεδομένα θα καταργηθούν."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Να αντικατασταθεί αυτή η εφαρμογή με την εργοστασιακή έκδοση; Όλα τα δεδομένα θα καταργηθούν. Αυτό επηρεάζει όλους τους χρήστες της συσκευής, συμπεριλαμβανομένων και των κατόχων προφίλ εργασίας."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Να καταργηθούν επίσης <xliff:g id="SIZE">%1$s</xliff:g> συσχετισμένων αρχείων μέσων."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Διατήρηση <xliff:g id="SIZE">%1$s</xliff:g> δεδομένων εφαρμογών."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Απεγκαταστάσεις σε εξέλιξη"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Αποτυχημένες απεγκαταστάσεις"</string>
diff --git a/packages/PackageInstaller/res/values-en-rAU/strings.xml b/packages/PackageInstaller/res/values-en-rAU/strings.xml
index 51e61d02f6a7..0c813ee19518 100644
--- a/packages/PackageInstaller/res/values-en-rAU/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rAU/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Replace this app with the factory version? All data will be removed."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Also remove <xliff:g id="SIZE">%1$s</xliff:g> of associated media files."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
diff --git a/packages/PackageInstaller/res/values-en-rCA/strings.xml b/packages/PackageInstaller/res/values-en-rCA/strings.xml
index 51e61d02f6a7..0c813ee19518 100644
--- a/packages/PackageInstaller/res/values-en-rCA/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rCA/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Replace this app with the factory version? All data will be removed."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Also remove <xliff:g id="SIZE">%1$s</xliff:g> of associated media files."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
diff --git a/packages/PackageInstaller/res/values-en-rGB/strings.xml b/packages/PackageInstaller/res/values-en-rGB/strings.xml
index 51e61d02f6a7..0c813ee19518 100644
--- a/packages/PackageInstaller/res/values-en-rGB/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rGB/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Replace this app with the factory version? All data will be removed."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Also remove <xliff:g id="SIZE">%1$s</xliff:g> of associated media files."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
diff --git a/packages/PackageInstaller/res/values-en-rIN/strings.xml b/packages/PackageInstaller/res/values-en-rIN/strings.xml
index 51e61d02f6a7..0c813ee19518 100644
--- a/packages/PackageInstaller/res/values-en-rIN/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rIN/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Replace this app with the factory version? All data will be removed."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Also remove <xliff:g id="SIZE">%1$s</xliff:g> of associated media files."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Keep <xliff:g id="SIZE">%1$s</xliff:g> of app data."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Running uninstallations"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Failed uninstallations"</string>
diff --git a/packages/PackageInstaller/res/values-en-rXC/strings.xml b/packages/PackageInstaller/res/values-en-rXC/strings.xml
index d49df980a330..b5406e4f12a8 100644
--- a/packages/PackageInstaller/res/values-en-rXC/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rXC/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‏‏‎‎Do you want to uninstall this app for the user ‎‏‎‎‏‏‎<xliff:g id="USERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎Replace this app with the factory version? All data will be removed.‎‏‎‎‏‎"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‎Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles.‎‏‎‎‏‎"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎Also remove ‎‏‎‎‏‏‎<xliff:g id="SIZE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ of associated media files.‎‏‎‎‏‎"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‏‎‎Keep ‎‏‎‎‏‏‎<xliff:g id="SIZE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ of app data.‎‏‎‎‏‎"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎Running uninstalls‎‏‎‎‏‎"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‎‏‏‏‎‎‎‎‎‏‏‎‎‎Failed uninstalls‎‏‎‎‏‎"</string>
diff --git a/packages/PackageInstaller/res/values-es-rUS/strings.xml b/packages/PackageInstaller/res/values-es-rUS/strings.xml
index ce8edfee4fae..5cd1caedcfe2 100644
--- a/packages/PackageInstaller/res/values-es-rUS/strings.xml
+++ b/packages/PackageInstaller/res/values-es-rUS/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"¿Quieres desinstalar esta app para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"¿Deseas reemplazar esta app con la versión de fábrica? Se quitarán todos los datos."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"¿Deseas reemplazar esta app con la versión de fábrica? Se quitarán todos los datos. Esta acción afectará a todos los usuarios de este dispositivo, incluidos los que tengan perfiles de trabajo."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"También quitar <xliff:g id="SIZE">%1$s</xliff:g> de archivos multimedia asociados."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Guardar <xliff:g id="SIZE">%1$s</xliff:g> en datos de apps"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalaciones activas"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Desinstalaciones con errores"</string>
diff --git a/packages/PackageInstaller/res/values-et/strings.xml b/packages/PackageInstaller/res/values-et/strings.xml
index 41e428ac091d..c8d74f9748b4 100644
--- a/packages/PackageInstaller/res/values-et/strings.xml
+++ b/packages/PackageInstaller/res/values-et/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Kas soovite selle rakenduse kasutaja <xliff:g id="USERNAME">%1$s</xliff:g> kontolt desinstallida?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Kas asendada see rakendus tehaseversiooniga? Kõik andmed eemaldatakse."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Kas asendada see rakendus tehaseversiooniga? Kõik andmed eemaldatakse. See mõjutab kõiki seadme kasutajaid, sh neid, kellel on tööprofiilid."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Eemalda ka <xliff:g id="SIZE">%1$s</xliff:g> seotud meediafailidest."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Säilita rakenduse andmete hulk <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Käimasolevad desinstallimised"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ebaõnnestunud desinstallimised"</string>
diff --git a/packages/PackageInstaller/res/values-fa/strings.xml b/packages/PackageInstaller/res/values-fa/strings.xml
index 2353d4ac02a4..d5549aed2b37 100644
--- a/packages/PackageInstaller/res/values-fa/strings.xml
+++ b/packages/PackageInstaller/res/values-fa/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"آیا می‌خواهید این برنامه را برای این کاربر <xliff:g id="USERNAME">%1$s</xliff:g> حذف نصب کنید؟"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"این برنامه با نسخه کارخانه جایگزین شود؟ همه داده‌ها پاک می‌شود."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"این برنامه با نسخه کارخانه جایگزین شود؟ همه داده‌ها پاک می‌شود. این کار همه کاربران این دستگاه (ازجمله کاربرانی که نمایه کاری دارند) را تحت تأثیر قرار خواهد داد."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"همچنین <xliff:g id="SIZE">%1$s</xliff:g> از فایل‌های رسانه مرتبط برداشته شود."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> از داده‌های برنامه را نگه‌دارید."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"حذف‌نصب‌های درحال انجام"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"حذف‌نصب‌های ناموفق"</string>
diff --git a/packages/PackageInstaller/res/values-fi/strings.xml b/packages/PackageInstaller/res/values-fi/strings.xml
index f4f1c083db34..ca4894ada9f7 100644
--- a/packages/PackageInstaller/res/values-fi/strings.xml
+++ b/packages/PackageInstaller/res/values-fi/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Haluatko poistaa tämän sovelluksen käyttäjältä <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Haluatko korvata tämän sovelluksen tehdasversiolla? Kaikki data poistetaan."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Haluatko korvata tämän sovelluksen tehdasversiolla? Kaikki data poistetaan. Tämä vaikuttaa kaikkiin laitteen käyttäjiin, myös työprofiileihin."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Poista myös <xliff:g id="SIZE">%1$s</xliff:g> tähän liittyviä mediatiedostoja"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Säilytä <xliff:g id="SIZE">%1$s</xliff:g> sovellusdataa"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Käynnissä olevat poistot"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Epäonnistuneet poistot"</string>
diff --git a/packages/PackageInstaller/res/values-gl/strings.xml b/packages/PackageInstaller/res/values-gl/strings.xml
index fa010c2d335a..638bf20527cd 100644
--- a/packages/PackageInstaller/res/values-gl/strings.xml
+++ b/packages/PackageInstaller/res/values-gl/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Queres desinstalar esta aplicación para o usuario que se chama <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Queres substituír esta aplicación pola versión que viña de fábrica? Eliminaranse todos os datos."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Queres substituír esta aplicación pola versión que viña de fábrica? Eliminaranse todos os datos. Isto afectará a todos os usuarios do dispositivo, incluídos os que teñan perfís de traballo."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Quitar tamén <xliff:g id="SIZE">%1$s</xliff:g> de ficheiros multimedia asociados."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Conservar os datos da aplicación, que ocupan <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Desinstalacións en curso"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Erros nas desinstalacións"</string>
diff --git a/packages/PackageInstaller/res/values-gu/strings.xml b/packages/PackageInstaller/res/values-gu/strings.xml
index 1b7e936235f2..09a023088da9 100644
--- a/packages/PackageInstaller/res/values-gu/strings.xml
+++ b/packages/PackageInstaller/res/values-gu/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"શું તમે <xliff:g id="USERNAME">%1$s</xliff:g> વપરાશકર્તા માટે આ ઍપ્લિકેશનને અનઇન્સ્ટૉલ કરવા માગો છો?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"આ ઍપ્લિકેશનને ફેક્ટરી વર્ઝનથી બદલીએ? બધો ડેટા કાઢી નાખવામાં આવશે."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"આ ઍપ્લિકેશનને ફેક્ટરી વર્ઝનથી બદલીએ? બધો ડેટા કાઢી નાખવામાં આવશે. આનાથી કાર્યાલયની પ્રોફાઇલ ધરાવનારા વપરાશકર્તાઓ સહિત આ ડિવાઇસના બધા વપરાશકર્તાઓ પ્રભાવિત થશે."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g>ની સંકળાયેલી મીડિયા ફાઇલોને પણ કાઢી નાખો."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g>નો ઍપ ડેટા રાખો."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ચાલી રહેલા અનઇન્સ્ટૉલ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"નિષ્ફળ થયેલા અનઇન્સ્ટૉલ"</string>
diff --git a/packages/PackageInstaller/res/values-hi/strings.xml b/packages/PackageInstaller/res/values-hi/strings.xml
index 3ffa7e31fcea..d3f706fdab10 100644
--- a/packages/PackageInstaller/res/values-hi/strings.xml
+++ b/packages/PackageInstaller/res/values-hi/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"क्या आप उपयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> के लिए इस ऐप्लिकेशन को अनइंस्टॉल करना चाहते हैं?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"इस ऐप्लिकेशन को फ़ैक्ट्री वर्शन से बदलें? सभी डेटा हटा दिया जाएगा."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"इस ऐप्लिकेशन को फ़ैक्ट्री वर्शन से बदलें? पूरा डेटा हटा दिया जाएगा. इसका असर इस डिवाइस के सभी उपयोगकर्ताओं पर पड़ेगा, जिनमें काम की प्रोफ़ाइलों वाले उपयोगकर्ता शामिल हैं."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g> जुड़ी हुई मीडिया फ़ाइलें भी हटाएं."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ऐप्लिकेशन डेटा रखें."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"वे अनइंस्टॉल जो चल रहे हैं"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"वे अनइंस्टॉल जो सफल नहीं रहे"</string>
diff --git a/packages/PackageInstaller/res/values-hr/strings.xml b/packages/PackageInstaller/res/values-hr/strings.xml
index 769001a83c99..ba83200dd116 100644
--- a/packages/PackageInstaller/res/values-hr/strings.xml
+++ b/packages/PackageInstaller/res/values-hr/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Želite li deinstalirati tu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Želite li tu aplikaciju zamijeniti tvorničkom verzijom? Izgubit ćete sve podatke."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Želite li tu aplikaciju zamijeniti tvorničkom verzijom? Izgubit ćete sve podatke. To se odnosi na sve korisnike uređaja, uključujući one s radnim profilima."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Ukloni i <xliff:g id="SIZE">%1$s</xliff:g> povezanih medijskih datoteka."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zadrži <xliff:g id="SIZE">%1$s</xliff:g> podataka aplikacije."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Deinstaliranja u tijeku"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspjela deinstaliranja"</string>
diff --git a/packages/PackageInstaller/res/values-hu/strings.xml b/packages/PackageInstaller/res/values-hu/strings.xml
index 9aceb8d2c9d3..0000d5de8772 100644
--- a/packages/PackageInstaller/res/values-hu/strings.xml
+++ b/packages/PackageInstaller/res/values-hu/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Eltávolítja ezt az alkalmazást <xliff:g id="USERNAME">%1$s</xliff:g> felhasználó esetében?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Lecseréli az alkalmazást a gyári verzióra? Minden adat törlődik."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Lecseréli az alkalmazást a gyári verzióra? Minden adat törlődik. Ez az eszköz összes felhasználóját érinti, így a munkaprofilokkal rendelkezőket is."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Távolítsa el a társított médiafájlokat is (összesen: <xliff:g id="SIZE">%1$s</xliff:g>)."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> alkalmazásadat megtartása."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Futó eltávolítások"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Sikertelen telepítések"</string>
diff --git a/packages/PackageInstaller/res/values-in/strings.xml b/packages/PackageInstaller/res/values-in/strings.xml
index 15f3b41df3ea..d0a956831810 100644
--- a/packages/PackageInstaller/res/values-in/strings.xml
+++ b/packages/PackageInstaller/res/values-in/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Apakah Anda ingin meng-uninstal aplikasi ini untuk pengguna <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Ganti aplikasi ini dengan versi setelan pabrik? Semua data akan dihapus."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Ganti aplikasi ini dengan versi setelan pabrik? Semua data akan dihapus. Tindakan ini memengaruhi semua pengguna perangkat ini, termasuk yang memiliki profil kerja."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Hapus juga <xliff:g id="SIZE">%1$s</xliff:g> dari file media terkait."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Pertahankan data aplikasi sebesar <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Menjalankan proses uninstal"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Proses uninstal yang gagal"</string>
diff --git a/packages/PackageInstaller/res/values-is/strings.xml b/packages/PackageInstaller/res/values-is/strings.xml
index e27be00838d0..46754630b4ff 100644
--- a/packages/PackageInstaller/res/values-is/strings.xml
+++ b/packages/PackageInstaller/res/values-is/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Viltu fjarlægja þetta forrit fyrir notandann <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Viltu skipta þessu forriti út fyrir verksmiðjuútgáfuna? Öll gögn verða fjarlægð."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Viltu skipta þessu forriti út fyrir verksmiðjuútgáfuna? Öll gögn verða fjarlægð. Þetta hefur áhrif á alla notendur tækisins, þar á meðal þá sem eru með vinnusnið."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Fjarlægja einnig <xliff:g id="SIZE">%1$s</xliff:g> af tengdum efnisskrám."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Halda <xliff:g id="SIZE">%1$s</xliff:g> af forritagögnum."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Fjarlægingar í gangi"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Fjarlægingar sem mistókust"</string>
diff --git a/packages/PackageInstaller/res/values-it/strings.xml b/packages/PackageInstaller/res/values-it/strings.xml
index 9f67a58a0dae..0eefc417c968 100644
--- a/packages/PackageInstaller/res/values-it/strings.xml
+++ b/packages/PackageInstaller/res/values-it/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Disinstallare l\'app per l\'utente <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Sostituire questa app con la versione di fabbrica? Tutti i dati verranno rimossi."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Sostituire questa app con la versione di fabbrica? Tutti i dati verranno rimossi. Saranno interessati tutti gli utenti del dispositivo, inclusi quelli che hanno profili di lavoro."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Rimuovi anche <xliff:g id="SIZE">%1$s</xliff:g> di file multimediali associati."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Mantieni <xliff:g id="SIZE">%1$s</xliff:g> di dati delle app."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Disinstallazioni in esecuzione"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Disinstallazioni non riuscite"</string>
diff --git a/packages/PackageInstaller/res/values-iw/strings.xml b/packages/PackageInstaller/res/values-iw/strings.xml
index 628b33539584..e602af6754a9 100644
--- a/packages/PackageInstaller/res/values-iw/strings.xml
+++ b/packages/PackageInstaller/res/values-iw/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"האם ברצונך להסיר את התקנתה של אפליקציה זו עבור המשתמש <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"האם להחליף את האפליקציה הזאת בגרסת היצרן? כל הנתונים יוסרו."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"האם להחליף את האפליקציה הזאת בגרסת היצרן? כל הנתונים יוסרו. הפעולה תשפיע על כל משתמשי המכשיר, כולל משתמשים בעלי פרופיל עבודה."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"להסיר גם <xliff:g id="SIZE">%1$s</xliff:g> של קובצי מדיה משויכים."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"שמירת <xliff:g id="SIZE">%1$s</xliff:g> מנתוני האפליקציה."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"התקנות בתהליכי הסרה"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"הסרות התקנה שנכשלו"</string>
diff --git a/packages/PackageInstaller/res/values-ja/strings.xml b/packages/PackageInstaller/res/values-ja/strings.xml
index 4e748bc5b6f1..cd4dbefd0d6c 100644
--- a/packages/PackageInstaller/res/values-ja/strings.xml
+++ b/packages/PackageInstaller/res/values-ja/strings.xml
@@ -54,11 +54,10 @@
<string name="uninstall_update_title" msgid="824411791011583031">"アップデートのアンインストール"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> は次のアプリの一部です。"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"このアプリをアンインストールしますか?"</string>
- <string name="uninstall_application_text_all_users" msgid="575491774380227119">"このアプリを"<b>"すべての"</b>"ユーザーからアンインストールしますか?このアプリとそのデータは端末の"<b>"すべての"</b>"ユーザーから削除されます。"</string>
+ <string name="uninstall_application_text_all_users" msgid="575491774380227119">"このアプリを"<b>"すべての"</b>"ユーザーからアンインストールしますか?このアプリとそのデータはデバイスの"<b>"すべての"</b>"ユーザーから削除されます。"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> さんのアプリをアンインストールしますか?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"このアプリを出荷時の状態に戻しますか?データがすべて削除されます。"</string>
- <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"このアプリを出荷時の状態に戻しますか?データがすべて削除されます。これは、仕事用プロファイルを設定しているユーザーも含めて、この端末を使用するすべてのユーザーが対象となります。"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"関連付けられたメディア ファイル(<xliff:g id="SIZE">%1$s</xliff:g>)も削除する。"</string>
+ <string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"このアプリを出荷時の状態に戻しますか?データがすべて削除されます。これは、仕事用プロファイルを設定しているユーザーも含めて、このデバイスを使用するすべてのユーザーが対象となります。"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"アプリのデータ(<xliff:g id="SIZE">%1$s</xliff:g>)を保持"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"アンインストールを実行しています"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"エラーになったアンインストール"</string>
@@ -68,12 +67,12 @@
<string name="uninstall_done_app" msgid="4588850984473605768">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」をアンインストールしました"</string>
<string name="uninstall_failed" msgid="1847750968168364332">"アンインストールできませんでした。"</string>
<string name="uninstall_failed_app" msgid="5506028705017601412">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」をアンインストールできませんでした。"</string>
- <string name="uninstall_failed_device_policy_manager" msgid="785293813665540305">"有効な端末管理アプリはアンインストールできません"</string>
- <string name="uninstall_failed_device_policy_manager_of_user" msgid="4813104025494168064">"<xliff:g id="USERNAME">%1$s</xliff:g> さんの有効な端末管理アプリはアンインストールできません"</string>
+ <string name="uninstall_failed_device_policy_manager" msgid="785293813665540305">"有効なデバイス管理アプリはアンインストールできません"</string>
+ <string name="uninstall_failed_device_policy_manager_of_user" msgid="4813104025494168064">"<xliff:g id="USERNAME">%1$s</xliff:g> さんの有効なデバイス管理アプリはアンインストールできません"</string>
<string name="uninstall_all_blocked_profile_owner" msgid="2009393666026751501">"このアプリは一部のユーザーやプロフィールに必要なため、アンインストールできませんでした"</string>
<string name="uninstall_blocked_profile_owner" msgid="6373897407002404848">"このアプリはプロファイルに必要なため、アンインストールできません。"</string>
- <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"このアプリは端末管理者が必要としているため、アンインストールできません。"</string>
- <string name="manage_device_administrators" msgid="3092696419363842816">"端末管理アプリを管理"</string>
+ <string name="uninstall_blocked_device_owner" msgid="6724602931761073901">"このアプリはデバイス管理者が必要としているため、アンインストールできません。"</string>
+ <string name="manage_device_administrators" msgid="3092696419363842816">"デバイス管理アプリを管理"</string>
<string name="manage_users" msgid="1243995386982560813">"ユーザーを管理"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> をアンインストールできませんでした。"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"パッケージの解析中に問題が発生しました。"</string>
diff --git a/packages/PackageInstaller/res/values-ka/strings.xml b/packages/PackageInstaller/res/values-ka/strings.xml
index fc4ba2901b8c..7a7ae4e55685 100644
--- a/packages/PackageInstaller/res/values-ka/strings.xml
+++ b/packages/PackageInstaller/res/values-ka/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"გსურთ ამ აპის დეინსტალაცია <xliff:g id="USERNAME">%1$s</xliff:g>-ისთვის?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"გსურთ ამ აპის ჩანაცვლება ქარხნული ვერსიით? მონაცემები მთლიანად ამოიშლება."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"გსურთ ამ აპის ჩანაცვლება ქარხნული ვერსიით? მონაცემები მთლიანად ამოიშლება. ეს ქმედება აისახება ამ მოწყობილობის ყველა მომხმარებელზე, მათ შორის, სამსახურის პროფილებით მოსარგებლეებზეც."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"ასევე ამოიშალოს დაკავშირებული მედიაფაილების <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"შენარჩუნდეს აპების მონაცემების <xliff:g id="SIZE">%1$s</xliff:g>."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"გაშვებული დეინსტალაციები"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"შეუსრულებელი დეინსტალაციები"</string>
diff --git a/packages/PackageInstaller/res/values-km/strings.xml b/packages/PackageInstaller/res/values-km/strings.xml
index 6bdc582efe1b..9b1135584b25 100644
--- a/packages/PackageInstaller/res/values-km/strings.xml
+++ b/packages/PackageInstaller/res/values-km/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"តើ​អ្នក​ចង់​លុប​កម្មវិធី​នេះ​សម្រាប់​អ្នកប្រើប្រាស់ <xliff:g id="USERNAME">%1$s</xliff:g> ដែរទេ?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ជំនួសកម្មវិធីនេះដោយប្រើកំណែរោងចក្រ? ទិន្នន័យទាំងអស់នឹងត្រូវបានលុប។"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ជំនួសកម្មវិធីនេះដោយប្រើកំណែរោងចក្រ? ទិន្នន័យទាំងអស់នឹងត្រូវបានលុប។ សកម្មភាព​នេះប៉ះពាល់ដល់អ្នកប្រើប្រាស់ទាំងអស់​របស់ឧបករណ៍នេះ រួម​ទាំងអ្នកប្រើប្រាស់ដែលមានកម្រង​ព័ត៌មាន​ការងារ​ផងដែរ។"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"ក៏លុប​ឯកសារ​មេឌៀ​ដែល​ពាក់ព័ន្ធ​ទំហំ <xliff:g id="SIZE">%1$s</xliff:g> ផងដែរ។"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"រក្សាទុក​ទិន្នន័យ​កម្មវិធីទំហំ <xliff:g id="SIZE">%1$s</xliff:g>។"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"កំពុង​ដំណើរការ​ការលុប"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ការលុប​ដែល​បរាជ័យ"</string>
diff --git a/packages/PackageInstaller/res/values-ko/strings.xml b/packages/PackageInstaller/res/values-ko/strings.xml
index f5b4dc8a6ebe..989cbe2b4dcd 100644
--- a/packages/PackageInstaller/res/values-ko/strings.xml
+++ b/packages/PackageInstaller/res/values-ko/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g>님의 기기에 설치된 앱을 제거하시겠습니까?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"이 앱을 초기 버전으로 바꾸시겠습니까? 모든 데이터가 삭제됩니다."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"이 앱을 초기 버전으로 바꾸시겠습니까? 모든 데이터가 삭제되며 직장 프로필 사용자를 포함해 이 기기의 모든 사용자에게 영향을 미칩니다."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g>의 관련 미디어 파일도 삭제합니다."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"앱 데이터 크기를 <xliff:g id="SIZE">%1$s</xliff:g>로 유지합니다."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"실행 중인 제거 작업"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"실패한 제거 작업"</string>
diff --git a/packages/PackageInstaller/res/values-ky/strings.xml b/packages/PackageInstaller/res/values-ky/strings.xml
index 77c05b069a9b..ae47ab14b0cb 100644
--- a/packages/PackageInstaller/res/values-ky/strings.xml
+++ b/packages/PackageInstaller/res/values-ky/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Бул колдонмону <xliff:g id="USERNAME">%1$s</xliff:g> үчүн чыгарып саласызбы?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Бул колдонмонун баштапкы версиясы орнотулсунбу? Бардык дайындар өчүп калат."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Бул колдонмонун баштапкы версиясы орнотулсунбу? Түзмөктөгү бардык профилдердин, ошондой эле жумушчу профилдердин дайындары өчүп калат."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Ошондой эле, тиешелүү медиа файлдардын <xliff:g id="SIZE">%1$s</xliff:g> өчүрүү."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Колдонмонун <xliff:g id="SIZE">%1$s</xliff:g> дайындарын сактоо."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Чыгарылып салынууда"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Чыгарылып салынбай калгандар"</string>
diff --git a/packages/PackageInstaller/res/values-lo/strings.xml b/packages/PackageInstaller/res/values-lo/strings.xml
index df51634e823c..0fb541fc6e15 100644
--- a/packages/PackageInstaller/res/values-lo/strings.xml
+++ b/packages/PackageInstaller/res/values-lo/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"ທ່ານ​ຕ້ອງ​ການ​ຖອນ​ການ​ຕິດ​ຕັ້ງ​ແອັບ​ນີ້​ສຳ​ລັບ​ຜູ້​ໃຊ້ <xliff:g id="USERNAME">%1$s</xliff:g> ບໍ່?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ແທນທີ່ແອັບນີ້ດ້ວຍເວີຊັນທີ່ມາຈາກໂຮງງານບໍ? ຂໍ້ມູນທັງໝົດຈະຖືກລຶບອອກ."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ແທນທີ່ແອັບນີ້ດ້ວຍເວີຊັນທີ່ມາຈາກໂຮງງານບໍ? ຂໍ້ມູນທັງໝົດຈະຖືກລຶບອອກ ເຊິ່ງມີຜົນກັບຜູ້ໃຊ້ອຸປະກອນນີ້ທຸກຄົນ ຮວມທັງຄົນທີ່ມີໂປຣໄຟລ໌ບ່ອນເຮັດວຽກນຳ."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"ລຶບໄຟລ໌ມີເດຍ <xliff:g id="SIZE">%1$s</xliff:g> ທີ່ກ່ຽວຂ້ອງກັນອອກນຳບໍ."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"ຮັກສາຂະໜາດຂໍ້ມູນແອັບ <xliff:g id="SIZE">%1$s</xliff:g> ໄວ້."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ກຳລັງຖອນການຕິດຕັ້ງ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ຖອນການຕິດຕັ້ງບໍ່ສຳເລັດ"</string>
diff --git a/packages/PackageInstaller/res/values-lt/strings.xml b/packages/PackageInstaller/res/values-lt/strings.xml
index bec41451fa36..3e840e96fa99 100644
--- a/packages/PackageInstaller/res/values-lt/strings.xml
+++ b/packages/PackageInstaller/res/values-lt/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ar norite pašalinti šią naudotojo <xliff:g id="USERNAME">%1$s</xliff:g> programą?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Pakeisti šios programos versiją į gamyklinę? Visi duomenys bus pašalinti."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Pakeisti šios programos versiją į gamyklinę? Visi duomenys bus pašalinti. Tai paveiks visus šio įrenginio naudotojus, įskaitant turinčius darbo profilius."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Taip pat pašalinti <xliff:g id="SIZE">%1$s</xliff:g> susijusių medijos failų."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Palikti <xliff:g id="SIZE">%1$s</xliff:g> programų duomenų."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Vykdomi pašalinimai"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Nepavykę pašalinimai"</string>
diff --git a/packages/PackageInstaller/res/values-lv/strings.xml b/packages/PackageInstaller/res/values-lv/strings.xml
index 835af00c5bb9..a0d49f7436d8 100644
--- a/packages/PackageInstaller/res/values-lv/strings.xml
+++ b/packages/PackageInstaller/res/values-lv/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vai vēlaties atinstalēt šo lietotni lietotājam <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Vai aizstāt šo lietotni ar rūpnīcas versiju? Visi dati tiks noņemti."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Vai aizstāt šo lietotni ar rūpnīcas versiju? Visi dati tiks noņemti. Tas ietekmēs visu šīs ierīces lietotāju datus, pat ja viņiem ir darba profili."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Noņemt arī saistītos multivides failus (<xliff:g id="SIZE">%1$s</xliff:g>)."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Iegūstiet <xliff:g id="SIZE">%1$s</xliff:g> (lietotnes dati)."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Pašreizējās atinstalēšanas operācijas"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Nesekmīgi atinstalēšanas mēģinājumi"</string>
diff --git a/packages/PackageInstaller/res/values-mk/strings.xml b/packages/PackageInstaller/res/values-mk/strings.xml
index aa94284930ac..5f385287b0c6 100644
--- a/packages/PackageInstaller/res/values-mk/strings.xml
+++ b/packages/PackageInstaller/res/values-mk/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Дали сакате да ја деинсталирате апликацијава за корисникот <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Сакате да ја замените оваа апликација со фабричката верзија? Сите податоци ќе се отстранат."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Сакате да ја замените оваа апликација со фабричката верзија? Сите податоци ќе се отстранат. Тоа важи за сите корисници на овој уред, вклучувајќи ги и тие со работни профили."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Отстрани и <xliff:g id="SIZE">%1$s</xliff:g> поврзани аудиовизуелни датотеки."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Задржи <xliff:g id="SIZE">%1$s</xliff:g> податоци на апликацијата."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Деинсталации во тек"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Неуспешни деинсталации"</string>
diff --git a/packages/PackageInstaller/res/values-ml/strings.xml b/packages/PackageInstaller/res/values-ml/strings.xml
index 1ef8d143a49b..609b2af1f79c 100644
--- a/packages/PackageInstaller/res/values-ml/strings.xml
+++ b/packages/PackageInstaller/res/values-ml/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിനായി ഈ ആപ്പ് അൺ ഇൻസ്‌റ്റാൾ ചെയ്യണോ?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ഫാക്‌ടറി പതിപ്പ് ഉപയോഗിച്ച് ഈ ആപ്പിന് പകരം വയ്ക്കണോ? എല്ലാ ഡാറ്റയും നീക്കം ചെയ്യപ്പെടും."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ഫാക്‌ടറി പതിപ്പ് ഉപയോഗിച്ച് ഈ ആപ്പിന് പകരം വയ്ക്കണോ? എല്ലാ ഡാറ്റയും നീക്കം ചെയ്യപ്പെടും. ഔദ്യോഗിക പ്രൊഫൈലുകൾ ഉള്ളവർ ഉൾപ്പെടെ, ഈ ഉപകരണത്തിന്റെ എല്ലാ ഉപയോക്താക്കളെയും ഇത് ബാധിക്കും."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"ബന്ധപ്പെട്ട മീഡിയ ഫയലുകളുടെ <xliff:g id="SIZE">%1$s</xliff:g>-യും നീക്കം ചെയ്യുക."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ആപ്പ് ഡാറ്റ വയ്ക്കുക."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"നിലവിൽ അൺഇൻസ്‌റ്റാൾ ചെയ്യുന്നവ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"അൺ ഇൻസ്‌റ്റാൾ ചെയ്യാൻ കഴിയാഞ്ഞവ"</string>
diff --git a/packages/PackageInstaller/res/values-mn/strings.xml b/packages/PackageInstaller/res/values-mn/strings.xml
index ca15978d7b71..e8265f302d60 100644
--- a/packages/PackageInstaller/res/values-mn/strings.xml
+++ b/packages/PackageInstaller/res/values-mn/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Та энэ аппыг <xliff:g id="USERNAME">%1$s</xliff:g> хэрэглэгчийн өмнөөс устгахыг хүсэж байна уу?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Энэ аппыг үйлдвэрээс ирсэн хувилбараар солих уу? Бүх өгөгдөл устах болно."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Энэ аппыг үйлдвэрээс ирсэн хувилбараар солих уу? Бүх өгөгдөл устах болно. Энэ нь эдгээр ажлын профайлтай бүхий энэ төхөөрөмжийн бүх хэрэглэгчид нөлөөлнө."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Холбоотой медиа файлуудын <xliff:g id="SIZE">%1$s</xliff:g>-г мөн адил устгана уу."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Аппын өгөгдлийн <xliff:g id="SIZE">%1$s</xliff:g>-г үлдээнэ үү."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Устгаж байна"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Устгаж чадсангүй"</string>
diff --git a/packages/PackageInstaller/res/values-ms/strings.xml b/packages/PackageInstaller/res/values-ms/strings.xml
index 50e00d64b900..9b7007316744 100644
--- a/packages/PackageInstaller/res/values-ms/strings.xml
+++ b/packages/PackageInstaller/res/values-ms/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Adakah anda ingin menyahpasang apl ini untuk pengguna <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Gantikan apl ini dengan versi kilang? Semua data akan dialih keluar."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Gantikan apl ini dengan versi kilang? Semua data akan dialih keluar. Tindakan ini melibatkan semua pengguna peranti ini, termasuk mereka yang mempunyai profil kerja."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Alih keluar juga <xliff:g id="SIZE">%1$s</xliff:g> fail media yang berkaitan."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Simpan <xliff:g id="SIZE">%1$s</xliff:g> data apl."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Penyahpasangan yang sedang berjalan"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Penyahpasangan yang gagal"</string>
diff --git a/packages/PackageInstaller/res/values-my/strings.xml b/packages/PackageInstaller/res/values-my/strings.xml
index 31c3f93dbdd7..96c6892f8b4b 100644
--- a/packages/PackageInstaller/res/values-my/strings.xml
+++ b/packages/PackageInstaller/res/values-my/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"သင်သည် အသုံးပြုသူ <xliff:g id="USERNAME">%1$s</xliff:g> အတွက် ဤအကောင့်ကို ဖယ်ရှားလိုပါသလား။"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ဤအက်ပ်ကို စက်ရုံထုတ်ဗားရှင်းဖြင့် အစားထိုးလိုပါသလား။ ဒေတာများအားလုံးကို ဖယ်ရှားလိုက်ပါမည်။"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ဤအက်ပ်ကို စက်ရုံထုတ်ဗားရှင်းဖြင့် အစားထိုးလိုသလား။ ဒေတာများအားလုံးကို ဖယ်ရှားလိုက်ပါမည်။ ၎င်းသည် အလုပ်ပရိုဖိုင်ဖြင့်သုံးသူများအပါအဝင် အသုံးပြုသူများအားလုံးကို အကျိုးသက်ရောက်စေပါမည်။"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"သက်ဆိုင်ရာ မီဒီယာဖိုင် <xliff:g id="SIZE">%1$s</xliff:g> ကိုလည်း ဖယ်ရှားပါ။"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"အက်ပ်ဒေတာများ၏ <xliff:g id="SIZE">%1$s</xliff:g> ကို ထားရှိရန်။"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ပရိုဂရမ်ကို ဖယ်ရှားနေပါသည်"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ပရိုဂရမ်ကို ဖယ်ရှား၍မရပါ"</string>
diff --git a/packages/PackageInstaller/res/values-nb/strings.xml b/packages/PackageInstaller/res/values-nb/strings.xml
index 34c20a1b860c..739c098310cb 100644
--- a/packages/PackageInstaller/res/values-nb/strings.xml
+++ b/packages/PackageInstaller/res/values-nb/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ønsker du å avinstallere denne appen for brukeren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Vil du erstatte denne appen med den opprinnelige versjonen? Alle dataene fjernes."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Vil du erstatte denne appen med den opprinnelige versjonen? Alle dataene fjernes. Dette påvirker alle som bruker denne enheten – også personer med jobbprofiler."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Fjern også <xliff:g id="SIZE">%1$s</xliff:g> med tilknyttede mediefiler."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Behold <xliff:g id="SIZE">%1$s</xliff:g> med appdata."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Avinstalleringer som er i gang"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislykkede avinstalleringer"</string>
diff --git a/packages/PackageInstaller/res/values-ne/strings.xml b/packages/PackageInstaller/res/values-ne/strings.xml
index e55afd5ae8df..d4ddacffa3ce 100644
--- a/packages/PackageInstaller/res/values-ne/strings.xml
+++ b/packages/PackageInstaller/res/values-ne/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"तपाईं प्रयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> का लागि यो अनुप्रयोगको स्थापना रद्द गर्न चाहनुहुन्छ?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"यस अनुप्रयोगलाई फ्याक्ट्रीको संस्करणले बदल्ने हो? सबै डेटा हटाइने छ।"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"यस अनुप्रयोगलाई फ्याक्ट्रीको संस्करणले बदल्ने हो? सबै डेटा हटाइने छ। यसले यस यन्त्रका कार्य प्रोफाइल भएका लगायत सबै प्रयोगकर्ताहरूमा असर पार्छ।"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"यसका साथै <xliff:g id="SIZE">%1$s</xliff:g> सम्बद्ध मिडिया फाइलहरू पनि हटाउनुहोस्।"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> अनुप्रयोगको डेटा राख्नुहोस्।"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"चलिरहेका स्थापना रद्द गर्ने कार्यहरू"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"असफल भएका स्थापना रद्द गर्ने कार्यहरू"</string>
diff --git a/packages/PackageInstaller/res/values-nl/strings.xml b/packages/PackageInstaller/res/values-nl/strings.xml
index c2a3b498c9c6..2b1b52592291 100644
--- a/packages/PackageInstaller/res/values-nl/strings.xml
+++ b/packages/PackageInstaller/res/values-nl/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Wil je deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Deze app vervangen door de fabrieksversie? Alle gegevens worden verwijderd. Dit geldt voor alle gebruikers van het apparaat, dus ook voor gebruikers met een werkprofiel."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Ook <xliff:g id="SIZE">%1$s</xliff:g> aan gekoppelde mediabestanden verwijderen."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> aan app-gegevens behouden."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Actieve verwijderingen"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mislukte verwijderingen"</string>
diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml
index 2fcf70e36c76..c28045bd1db3 100644
--- a/packages/PackageInstaller/res/values-or/strings.xml
+++ b/packages/PackageInstaller/res/values-or/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"ୟୁଜର୍‌ <xliff:g id="USERNAME">%1$s</xliff:g>ଙ୍କ ପାଇଁ ଆପଣ ଏହି ଆପ୍‍ ଇନଷ୍ଟଲ୍‍ କରିବେ କି?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ଏହି ଆପ୍‍ ଫ୍ୟାକ୍ଟୋରୀ ଭର୍ସନ୍‍‍ ସହ ବଦଳାଇବେ? ସମସ୍ତ ଡାଟା କାଢ଼ିଦିଆଯିବ।"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ଏହି ଆପ୍‍ ଫ୍ୟାକ୍ଟୋରୀ ଭର୍ସନ୍‍‍ ସହ ବଦଳାଇବେ? ସମସ୍ତ ଡାଟା ବାହାର କରିଦିଆଯିବ। ୱର୍କ ପ୍ରୋଫାଇଲ୍‍ ଥିବା ସମେତ, ଏହାଦ୍ୱାରା ଡିଭାଇସରେ ଥିବା ସମସ୍ତ ୟୁଜର୍‌ ପ୍ରଭାବିତ ହେବେ।"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g> ର ସମ୍ବନ୍ଧିତ ମିଡିଆ ଫାଇଲ୍‌ଗୁଡ଼ିକ ମଧ୍ୟ କାଢନ୍ତୁ।"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ଆକାରର ଆପ୍‍ ଡାଟା ରଖନ୍ତୁୁ।"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ଅନଇନଷ୍ଟଲ୍‌ ଚାଲୁଛି"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ବିଫଳ ହୋଇଥିବା ଅନଇନଷ୍ଟଲ୍‌"</string>
diff --git a/packages/PackageInstaller/res/values-pa/strings.xml b/packages/PackageInstaller/res/values-pa/strings.xml
index ca8f73b79746..a6de4d0d29f5 100644
--- a/packages/PackageInstaller/res/values-pa/strings.xml
+++ b/packages/PackageInstaller/res/values-pa/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"ਕੀ ਤੁਸੀਂ ਵਰਤੋਂਕਾਰ <xliff:g id="USERNAME">%1$s</xliff:g> ਲਈ ਇਸ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ਕੀ ਇਸ ਐਪ ਨੂੰ ਫੈਕਟਰੀ ਵਰਜਨ ਨਾਲ ਬਦਲਣਾ ਹੈ? ਸਾਰਾ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ਕੀ ਇਸ ਐਪ ਨੂੰ ਫੈਕਟਰੀ ਵਰਜਨ ਨਾਲ ਬਦਲਣਾ ਹੈ? ਸਾਰਾ ਡਾਟਾ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਇਹ ਇਸ ਡੀਵਾਈਸ ਦੇ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰੇਗਾ, ਜਿਸ ਵਿੱਚ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਾਲੇ ਵਰਤੋਂਕਾਰ ਵੀ ਸ਼ਾਮਲ ਹਨ।"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g> ਦੀਆਂ ਸੰਬੰਧਿਤ ਮੀਡੀਆ ਫ਼ਾਈਲਾਂ ਵੀ ਹਟਾਓ।"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> ਐਪ ਡਾਟਾ ਰੱਖੋ।"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"ਚੱਲ ਰਹੀਆਂ ਅਣਸਥਾਪਨਾਵਾਂ"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ਅਸਫਲ ਅਣਸਥਾਪਨਾਵਾਂ"</string>
diff --git a/packages/PackageInstaller/res/values-pl/strings.xml b/packages/PackageInstaller/res/values-pl/strings.xml
index 6bcf20a6cee2..b08dc559358e 100644
--- a/packages/PackageInstaller/res/values-pl/strings.xml
+++ b/packages/PackageInstaller/res/values-pl/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Chcesz odinstalować tę aplikację dla użytkownika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Przywrócić fabryczną wersję tej aplikacji? Wszystkie dane zostaną usunięte."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Przywrócić fabryczną wersję tej aplikacji? Wszystkie dane zostaną usunięte. Dotyczy to wszystkich użytkowników tego urządzenia, również tych korzystających z profilu do pracy."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Usuń też <xliff:g id="SIZE">%1$s</xliff:g> powiązanych plików multimedialnych."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Zachowaj <xliff:g id="SIZE">%1$s</xliff:g> danych aplikacji."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Aktywne odinstalowania"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Nieudane odinstalowania"</string>
diff --git a/packages/PackageInstaller/res/values-pt-rBR/strings.xml b/packages/PackageInstaller/res/values-pt-rBR/strings.xml
index 7a0c7fb01576..20e66cb1515c 100644
--- a/packages/PackageInstaller/res/values-pt-rBR/strings.xml
+++ b/packages/PackageInstaller/res/values-pt-rBR/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Quer desinstalar este app para o usuário <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Substituir este app pela versão de fábrica? Todos os dados serão removidos."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Substituir este app pela versão de fábrica? Todos os dados serão removidos. Isso afeta todos os usuários deste dispositivo, incluindo aqueles com perfis de trabalho."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Remover também <xliff:g id="SIZE">%1$s</xliff:g> de arquivos de mídia associados."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Manter <xliff:g id="SIZE">%1$s</xliff:g> de dados do app."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Executando desinstalações"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Falha nas desinstalações"</string>
diff --git a/packages/PackageInstaller/res/values-pt/strings.xml b/packages/PackageInstaller/res/values-pt/strings.xml
index 7a0c7fb01576..20e66cb1515c 100644
--- a/packages/PackageInstaller/res/values-pt/strings.xml
+++ b/packages/PackageInstaller/res/values-pt/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Quer desinstalar este app para o usuário <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Substituir este app pela versão de fábrica? Todos os dados serão removidos."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Substituir este app pela versão de fábrica? Todos os dados serão removidos. Isso afeta todos os usuários deste dispositivo, incluindo aqueles com perfis de trabalho."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Remover também <xliff:g id="SIZE">%1$s</xliff:g> de arquivos de mídia associados."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Manter <xliff:g id="SIZE">%1$s</xliff:g> de dados do app."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Executando desinstalações"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Falha nas desinstalações"</string>
diff --git a/packages/PackageInstaller/res/values-ro/strings.xml b/packages/PackageInstaller/res/values-ro/strings.xml
index 620a382cb9ed..f8a17202b973 100644
--- a/packages/PackageInstaller/res/values-ro/strings.xml
+++ b/packages/PackageInstaller/res/values-ro/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Dezinstalați această aplicație pentru utilizatorul <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Înlocuiți această aplicație cu versiunea din fabrică? Toate datele vor fi eliminate."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Înlocuiți această aplicație cu versiunea din fabrică? Toate datele vor fi eliminate. Această acțiune va afecta toți utilizatorii dispozitivului, inclusiv pe cei cu profiluri de serviciu."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Eliminați și <xliff:g id="SIZE">%1$s</xliff:g> de fișiere media asociate."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Păstrează <xliff:g id="SIZE">%1$s</xliff:g> din datele aplicației."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Dezinstalări în curs"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Dezinstalări nereușite"</string>
diff --git a/packages/PackageInstaller/res/values-ru/strings.xml b/packages/PackageInstaller/res/values-ru/strings.xml
index 5aba2fadcfa0..38aefc7de921 100644
--- a/packages/PackageInstaller/res/values-ru/strings.xml
+++ b/packages/PackageInstaller/res/values-ru/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Удалить это приложение из профиля <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Установить исходную версию приложения? Все его данные будут удалены."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Установить исходную версию приложения? Его данные будут удалены из всех профилей устройства, в том числе рабочих."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Также удалить связанные медиафайлы (<xliff:g id="SIZE">%1$s</xliff:g>)"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Сохранить данные приложения (<xliff:g id="SIZE">%1$s</xliff:g>)"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активные процессы удаления"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ошибки удаления"</string>
diff --git a/packages/PackageInstaller/res/values-si/strings.xml b/packages/PackageInstaller/res/values-si/strings.xml
index 7f67a64e919c..1de2bc0082b4 100644
--- a/packages/PackageInstaller/res/values-si/strings.xml
+++ b/packages/PackageInstaller/res/values-si/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> පරිශීලකයා සඳහා මෙම යෙදුම අස්ථාපනය කිරීමට ඔබට අවශ්‍යයද?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"මෙම යෙදුම කර්මාන්ත ශාලා අනුවාදයක් සමගින් ප්‍රතිස්ථාපනය කරන්නද? සියලු දත්ත ඉවත් කරනු ඇත."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"මෙම යෙදුම කර්මාන්ත ශාලා අනුවාදයක් සමගින් ප්‍රතිස්ථාපනය කරන්නද? සියලු දත්ත ඉවත් කරනු ඇත. මෙය කාර්යාල පැතිකඩවල් සහිත අය ඇතුළුව, මෙම උපාංගයෙහි සියලු පරිශීලකයන් වෙත බලපානු ඇත."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"ආශ්‍රිත මාධ්‍ය ගොනු <xliff:g id="SIZE">%1$s</xliff:g> ද ඉවත් කරන්න."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"යෙදුම් දත්තවලින් <xliff:g id="SIZE">%1$s</xliff:g> තබා ගන්න."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"අස්ථාපන ධාවනය කරමින්"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"අසාර්ථක වූ අස්ථාපන"</string>
diff --git a/packages/PackageInstaller/res/values-sl/strings.xml b/packages/PackageInstaller/res/values-sl/strings.xml
index 6cd7d1b7c952..d535dc048cc3 100644
--- a/packages/PackageInstaller/res/values-sl/strings.xml
+++ b/packages/PackageInstaller/res/values-sl/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ali želite to aplikacijo odstraniti za uporabnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Želite to aplikacijo nadomestiti s tovarniško različico? Odstranjeni bodo vsi podatki."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Želite to aplikacijo nadomestiti s tovarniško različico? Odstranjeni bodo vsi podatki. To vpliva na vse uporabnike te naprave, vključno s tistimi z delovnimi profili."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Odstranite tudi <xliff:g id="SIZE">%1$s</xliff:g> povezanih predstavnostnih datotek."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Obdrži <xliff:g id="SIZE">%1$s</xliff:g> podatkov aplikacije."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Odstranitve v teku"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Neuspele odstranitve"</string>
diff --git a/packages/PackageInstaller/res/values-sq/strings.xml b/packages/PackageInstaller/res/values-sq/strings.xml
index 2a592888d128..5e0f3c9df867 100644
--- a/packages/PackageInstaller/res/values-sq/strings.xml
+++ b/packages/PackageInstaller/res/values-sq/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Dëshiron ta çinstalosh këtë aplikacion për përdoruesin <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Të zëvendësohet ky aplikacion me versionin e fabrikës? Të gjitha të dhënat do të hiqen."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Të zëvendësohet ky aplikacion me versionin e fabrikës? Të gjitha të dhënat do të hiqen. Kjo ndikon te të gjithë përdoruesit e kësaj pajisjeje, duke përfshirë ata me profile të punës."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Hiq gjithashtu <xliff:g id="SIZE">%1$s</xliff:g> skedarë media të shoqëruar."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Mbaj <xliff:g id="SIZE">%1$s</xliff:g> nga të dhënat e aplikacionit."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Çinstalimet në ekzekutim"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Çinstalimet e dështuara"</string>
diff --git a/packages/PackageInstaller/res/values-sr/strings.xml b/packages/PackageInstaller/res/values-sr/strings.xml
index 7d889c4e41f7..39a1e4502b8e 100644
--- a/packages/PackageInstaller/res/values-sr/strings.xml
+++ b/packages/PackageInstaller/res/values-sr/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Желите ли да деинсталирате ову апликацију за корисника <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Желите ли да замените ову апликацију фабричком верзијом? Сви подаци ће бити уклоњени."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Желите ли да замените ову апликацију фабричком верзијом? Сви подаци ће бити уклоњени. Ово утиче на све кориснике овог уређаја, укључујући и оне са профилима за Work."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Уклони и <xliff:g id="SIZE">%1$s</xliff:g> повезаних медијских датотека."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Задржи <xliff:g id="SIZE">%1$s</xliff:g> података апликације."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активна деинсталирања"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Неуспела деинсталирања"</string>
diff --git a/packages/PackageInstaller/res/values-sv/strings.xml b/packages/PackageInstaller/res/values-sv/strings.xml
index 9902bdaa9e7f..87646ea3765a 100644
--- a/packages/PackageInstaller/res/values-sv/strings.xml
+++ b/packages/PackageInstaller/res/values-sv/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vill du avinstallera appen för användaren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Vill du ersätta den här appen med den version som var installerad när enheten var ny? All information tas bort."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Vill du ersätta den här appen med den version som var installerad när enheten var ny? All information tas bort. Detta påverkar alla som använder enheten, även dem med jobbprofiler."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Ta även bort <xliff:g id="SIZE">%1$s</xliff:g> tillhörande mediefiler."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Behåll <xliff:g id="SIZE">%1$s</xliff:g> appdata."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Avinstallationer som pågår"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Avinstallationer som misslyckats"</string>
diff --git a/packages/PackageInstaller/res/values-sw/strings.xml b/packages/PackageInstaller/res/values-sw/strings.xml
index b4c2d8379710..9bcb291f2a9c 100644
--- a/packages/PackageInstaller/res/values-sw/strings.xml
+++ b/packages/PackageInstaller/res/values-sw/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Je, ungependa kuondoa programu hii kwa mtumiaji <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Ungependa kubadilisha programu hii na toleo la kiwandani? Data yote itaondolewa."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Ungependa kubadilisha programu hii na toleo la kiwandani? Data yote itaondolewa. Hatua hii itaathiri watumiaji wote wa kifaa hiki, ikiwa ni pamoja na wale walio na wasifu za kazini."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Ondoa pia faili <xliff:g id="SIZE">%1$s</xliff:g> zinazohusiana za maudhui."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Dumisha <xliff:g id="SIZE">%1$s</xliff:g> ya data ya programu."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Programu zinazoondolewa"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mara ambazo programu haikuondolewa"</string>
diff --git a/packages/PackageInstaller/res/values-te/strings.xml b/packages/PackageInstaller/res/values-te/strings.xml
index e13b893ac8a9..baa3e54e5a3b 100644
--- a/packages/PackageInstaller/res/values-te/strings.xml
+++ b/packages/PackageInstaller/res/values-te/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"మీరు వినియోగదారు <xliff:g id="USERNAME">%1$s</xliff:g> కోసం ఈ యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"ఈ యాప్‌ను ఫ్యాక్టరీ వెర్షన్‌తో భర్తీ చేయాలా? మొత్తం డేటా తీసివేయబడుతుంది."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"ఈ యాప్‌ను ఫ్యాక్టరీ వెర్షన్‌తో భర్తీ చేయాలా? మొత్తం డేటా తీసివేయబడుతుంది. దీని ప్రభావం కార్యాలయ ప్రొఫైల్‌లు కలిగి ఉన్నవారితో సహా ఈ పరికర వినియోగదారులందరిపై ఉంటుంది."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"అలాగే దానికి సంబంధించిన మీడియా ఫైల్‌ల డేటా <xliff:g id="SIZE">%1$s</xliff:g>ని కూడా తీసివేయి"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> యాప్ డేటాని ఉంచండి."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"అన్ఇన్‌స్టాల్ చేయబడుతున్నవి"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"విఫలమైన అన్‌ఇన్‌స్టాల్‌లు"</string>
diff --git a/packages/PackageInstaller/res/values-th/strings.xml b/packages/PackageInstaller/res/values-th/strings.xml
index 272571c829a5..1f6e10a2e8c8 100644
--- a/packages/PackageInstaller/res/values-th/strings.xml
+++ b/packages/PackageInstaller/res/values-th/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"ต้องการถอนการติดตั้งแอปนี้สำหรับผู้ใช้ <xliff:g id="USERNAME">%1$s</xliff:g> ไหม"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"แทนที่แอปนี้ด้วยเวอร์ชันเริ่มต้นไหม ระบบจะนำข้อมูลทั้งหมดออก"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"แทนที่แอปนี้ด้วยเวอร์ชันเริ่มต้นไหม ระบบจะนำข้อมูลทั้งหมดออก วิธีนี้จะส่งผลต่อผู้ใช้ทุกคนที่ใช้อุปกรณ์เครื่องนี้ รวมทั้งผู้ที่มีโปรไฟล์งาน"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"และนำไฟล์สื่อต่างๆ ที่เกี่ยวข้องซึ่งรวมแล้วมีขนาด <xliff:g id="SIZE">%1$s</xliff:g> ออกด้วย"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"เก็บข้อมูลแอปไว้ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"กำลังเรียกใช้การถอนการติดตั้ง"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ถอนการติดตั้งไม่สำเร็จ"</string>
diff --git a/packages/PackageInstaller/res/values-tl/strings.xml b/packages/PackageInstaller/res/values-tl/strings.xml
index 903b908a259e..dbae64735b84 100644
--- a/packages/PackageInstaller/res/values-tl/strings.xml
+++ b/packages/PackageInstaller/res/values-tl/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Gusto mo bang i-uninstall ang app na ito para sa user na si <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Gusto mo bang palitan ang app na ito ng factory na bersyon? Maaalis ang lahat ng data."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Gusto mo bang palitan ang app na ito ng factory na bersyon? Maaalis ang lahat ng data. Nakakaapekto ito sa lahat ng user ng device na ito, kabilang ang mga may profile sa trabaho."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Alisin din ang <xliff:g id="SIZE">%1$s</xliff:g> ng mga nauugnay na media file."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Panatilihin ang <xliff:g id="SIZE">%1$s</xliff:g> ng data ng app."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Mga kasalukuyang pag-uninstall"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Mga hindi na-uninstall"</string>
diff --git a/packages/PackageInstaller/res/values-tr/strings.xml b/packages/PackageInstaller/res/values-tr/strings.xml
index e372e11c2c33..b8e0832be898 100644
--- a/packages/PackageInstaller/res/values-tr/strings.xml
+++ b/packages/PackageInstaller/res/values-tr/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı kullanıcı için bu uygulamanın yüklemesini kaldırmak istiyor musunuz?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Bu uygulamayı fabrika sürümüyle değiştirmek istiyor musunuz? Tüm veriler silinecektir."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Bu uygulamayı fabrika sürümüyle değiştirmek istiyor musunuz? Tüm veriler silinecektir. Bu, çalışma profilleri olan kullanıcılar da dahil olmak üzere cihazı kullanan tüm kullanıcıları etkiler."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g> boyutundaki ilişkili medya dosyalarını da kaldır."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Uygulama verilerinin <xliff:g id="SIZE">%1$s</xliff:g> kadarını sakla."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Devam eden yükleme kaldırma işlemleri"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Başarısız yükleme kaldırma işlemleri"</string>
diff --git a/packages/PackageInstaller/res/values-uk/strings.xml b/packages/PackageInstaller/res/values-uk/strings.xml
index f04ead60b6dc..5f614e380177 100644
--- a/packages/PackageInstaller/res/values-uk/strings.xml
+++ b/packages/PackageInstaller/res/values-uk/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Видалити цей додаток для користувача <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Відновити заводську версію цього додатка? Усі дані буде видалено."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Відновити заводську версію цього додатка? Усі дані буде видалено. Це вплине на всіх користувачів цього пристрою, зокрема на користувачів із робочими профілями."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Видалити пов’язані файли розміром у <xliff:g id="SIZE">%1$s</xliff:g>"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Залишити <xliff:g id="SIZE">%1$s</xliff:g> даних додатка."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Активні видалення"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Невиконані видалення"</string>
diff --git a/packages/PackageInstaller/res/values-ur/strings.xml b/packages/PackageInstaller/res/values-ur/strings.xml
index c989a7c4aef5..e11e16a65319 100644
--- a/packages/PackageInstaller/res/values-ur/strings.xml
+++ b/packages/PackageInstaller/res/values-ur/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"کیا آپ اس ایپ کو صارف <xliff:g id="USERNAME">%1$s</xliff:g> کیلئے اَن انسٹال کرنا چاہتے ہیں؟"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"اس ایپ کو فیکٹری ورژن سے تبدیل کریں؟ تمام ڈیٹا ہٹا دیا جائے گا۔"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"اس ایپ کو فیکٹری ورژن سے تبدیل کریں؟ تمام ڈیٹا ہٹا دیا جائے گا۔ اس سے دفتری پروفائلز کے حاملین سمیت اس آلہ کے تمام صارفین متاثر ہوں گے۔"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"<xliff:g id="SIZE">%1$s</xliff:g> منسلکہ میڈیا فائلز بھی حذف کریں۔"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"ایپ ڈیٹا کا <xliff:g id="SIZE">%1$s</xliff:g> رکھیں۔"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"چل رہے اَن انسٹالز"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"ناکام اَن انسٹالز"</string>
diff --git a/packages/PackageInstaller/res/values-uz/strings.xml b/packages/PackageInstaller/res/values-uz/strings.xml
index 3aad35d77d02..4e24948d61e7 100644
--- a/packages/PackageInstaller/res/values-uz/strings.xml
+++ b/packages/PackageInstaller/res/values-uz/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Haqiqatdan ham <xliff:g id="USERNAME">%1$s</xliff:g> foydalanuvchi uchun ushbu ilovani olib tashlamoqchimisiz?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Bu ilova boshlang‘ich versiyasi bilan almashtirilsinmi? Barcha axborotlar o‘chirib tashlanadi."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Bu ilova boshlang‘ich versiyasi bilan almashtirilsinmi? Barcha axborotlar o‘chirib tashlanadi. Bu qurilmaning barcha foydalanuvchilariga, jumladan, ularning ishchi profillariga ham ta’sir qiladi."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Shuningdek, biriktirilgan media fayllarni ham olib tashlash (<xliff:g id="SIZE">%1$s</xliff:g>)."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"<xliff:g id="SIZE">%1$s</xliff:g> hajmdagi ilova axborotlari saqlab qolinsin"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Davom etayotganlar"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Amalga oshmaganlar"</string>
diff --git a/packages/PackageInstaller/res/values-zh-rCN/strings.xml b/packages/PackageInstaller/res/values-zh-rCN/strings.xml
index 04d6c3788a48..27062f7a7416 100644
--- a/packages/PackageInstaller/res/values-zh-rCN/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rCN/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"要为用户<xliff:g id="USERNAME">%1$s</xliff:g>卸载此应用吗?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"要将此应用替换为出厂版本吗?这样会移除所有数据。"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"要将此应用替换为出厂版本吗?这样会移除所有数据,并会影响此设备的所有用户(包括已设置工作资料的用户)。"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"同时移除 <xliff:g id="SIZE">%1$s</xliff:g> 的关联媒体文件。"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"保留 <xliff:g id="SIZE">%1$s</xliff:g> 的应用数据。"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"正在进行卸载操作"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"卸载操作失败"</string>
diff --git a/packages/PackageInstaller/res/values-zh-rHK/strings.xml b/packages/PackageInstaller/res/values-zh-rHK/strings.xml
index 01440aea9907..2c52420bd9ea 100644
--- a/packages/PackageInstaller/res/values-zh-rHK/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rHK/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"您要為使用者<xliff:g id="USERNAME">%1$s</xliff:g>解除安裝此應用程式嗎?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"要將此應用程式回復至原廠版本嗎?系統會移除所有資料。"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"要將此應用程式回復至原廠版本嗎?系統會移除所有資料。此裝置的所有使用者 (包括使用工作設定檔的使用者) 亦會受影響。"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"同時移除相關的媒體檔案 (<xliff:g id="SIZE">%1$s</xliff:g>)。"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"保留應用程式資料 (<xliff:g id="SIZE">%1$s</xliff:g>)。"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"正在執行的解除安裝操作"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"失敗的解除安裝操作"</string>
diff --git a/packages/PackageInstaller/res/values-zh-rTW/strings.xml b/packages/PackageInstaller/res/values-zh-rTW/strings.xml
index 048aa9cd6aa4..f82b89c08ba0 100644
--- a/packages/PackageInstaller/res/values-zh-rTW/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rTW/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"要為使用者 <xliff:g id="USERNAME">%1$s</xliff:g> 解除安裝這個應用程式嗎?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"要將應用程式換成原廠版本嗎?這麼做會移除所有資料。"</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"要將應用程式換成原廠版本嗎?這麼做會移除所有資料。凡是這個裝置的使用者 (包括設置工作資料夾的使用者),皆會受到影響。"</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"一併移除 <xliff:g id="SIZE">%1$s</xliff:g> 的相關媒體檔案。"</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"保留 <xliff:g id="SIZE">%1$s</xliff:g> 的應用程式資料。"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"執行中的解除安裝作業"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"失敗的解除安裝作業"</string>
diff --git a/packages/PackageInstaller/res/values-zu/strings.xml b/packages/PackageInstaller/res/values-zu/strings.xml
index bb0405c08b12..c711354b07da 100644
--- a/packages/PackageInstaller/res/values-zu/strings.xml
+++ b/packages/PackageInstaller/res/values-zu/strings.xml
@@ -58,7 +58,6 @@
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ingabe ufuna ukukhiphela lolu hlelo lokusebenza kumsebenzisi ongu-<xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_update_text" msgid="863648314632448705">"Shintshanisa lolu hlelo lokusebenza ngenguqulo yasekuqaleni? Yonke idatha izosuswa."</string>
<string name="uninstall_update_text_multiuser" msgid="8992883151333057227">"Shintshanisa lolu hlelo lokusebenza ngenguqulo yasekuqaleni? Yonke idatha izosuswa. Lokhu kuthinta bonke abasebenzisi bale divayisi, abafaka labo abanamaphrofayela wokusebenza."</string>
- <string name="uninstall_remove_contributed_files" msgid="2048594420923203453">"Futhi susa u-<xliff:g id="SIZE">%1$s</xliff:g> wamafayela emidiya ahlobene."</string>
<string name="uninstall_keep_data" msgid="7002379587465487550">"Gcina u-<xliff:g id="SIZE">%1$s</xliff:g> wedatha yohlelo lokusebenza."</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Ukukhishwa okuqhubekayo"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Ukukhishwa okuhlulekile"</string>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
index bde1b25b914f..55ff591e3a1f 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -43,7 +43,6 @@ import android.content.pm.PackageUserState;
import android.net.Uri;
import android.os.Bundle;
import android.os.Process;
-import android.os.RemoteException;
import android.os.UserManager;
import android.provider.Settings;
import android.util.Log;
@@ -472,16 +471,6 @@ public class PackageInstallerActivity extends AlertActivity {
mOriginatingUid, mOriginatingPackage);
switch (appOpMode) {
case AppOpsManager.MODE_DEFAULT:
- try {
- int result = mIpm.checkUidPermission(
- Manifest.permission.REQUEST_INSTALL_PACKAGES, mOriginatingUid);
- if (result == PackageManager.PERMISSION_GRANTED) {
- initiateInstall();
- break;
- }
- } catch (RemoteException exc) {
- Log.e(TAG, "Unable to talk to package manager");
- }
mAppOpsManager.setMode(appOpCode, mOriginatingUid,
mOriginatingPackage, AppOpsManager.MODE_ERRORED);
// fall through
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index f12dfb87fbf7..19e800b70dab 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Beskikbaar via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tik om aan te meld"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Gekoppel, geen internet nie"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Beperkte verbinding"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Geen internet nie"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Aanmelding word vereis"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Toegangspunt is tydelik vol"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Gekoppel (geen media nie), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Gekoppel (geen foon of media nie), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktief, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batterykrag"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktief, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batterykrag, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batterykrag"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batterykrag"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batterykrag, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batterykrag"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktief"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media-oudio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Foonoproepe"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Sal waarskynlik hou tot omtrent <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Sal waarskynlik hou tot omtrent <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Tot <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Verleng batterylewe verby <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Minder as <xliff:g id="THRESHOLD">%1$s</xliff:g> oor"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Minder as <xliff:g id="THRESHOLD">%1$s</xliff:g> oor (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Meer as <xliff:g id="TIME_REMAINING">%1$s</xliff:g> oor (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vra elke keer"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Totdat jy dit afskakel"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Sopas"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Hierdie toestel"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 9e395252a683..f249eaf138d5 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"በ%1$s በኩል የሚገኝ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ለመመዝገብ መታ ያድርጉ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ተገናኝቷል፣ ምንም በይነመረብ የለም"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"የተገደበ ግንኙነት"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ምንም በይነመረብ የለም"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ወደ መለያ መግባት ያስፈልጋል"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"የመዳረሻ ነጥብ ለጊዜው ሞልቷል"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"ተገናኝቷል (ምንም ማህደረ መረጃ የለም)፣ ባትሪ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"ተገናኝቷል (ምንም ስልክ ወይም ማህደረ መረጃ የለም)፣ ባትሪ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ንቁ፣ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ገቢር፣ ግ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ባትሪ፣ ቀ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ባትሪ"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ባትሪ"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"ግ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ባትሪ፣ ቀ፦ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ባትሪ"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ንቁ"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"የማህደረ መረጃ ኦዲዮ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"የስልክ ጥሪዎች"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"እስከ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) ገደማ ድረስ መቆየት አለበት"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"እስከ <xliff:g id="TIME">%1$s</xliff:g> ገደማ መቆየት አለበት"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"እስከ <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"የባትሪ ዕድሜን ከ <xliff:g id="TIME">%1$s</xliff:g> በላይ አራዝም"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"ከ<xliff:g id="THRESHOLD">%1$s</xliff:g> ያነሰ ይቀራል"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"ከ<xliff:g id="THRESHOLD">%1$s</xliff:g> ያነሰ ይቀራል (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"ከ<xliff:g id="TIME_REMAINING">%1$s</xliff:g> በላይ ይቀራል (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ሁልጊዜ ጠይቅ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"እስኪያጠፉት ድረስ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ልክ አሁን"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ይህ መሣሪያ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 137d7b8fe5c2..3612472b99f3 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"‏متوفرة عبر %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"انقر للاشتراك."</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"متصلة ولكن بلا إنترنت"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"اتصال محدود"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"لا يتوفر اتصال إنترنت."</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"يلزم تسجيل الدخول"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"نقطة الدخول ممتلئة مؤقتًا"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"الجهاز متصل (من دون وسائط)، ومستوى طاقة البطارية <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"الجهاز متّصل (من دون هاتف أو وسائط)، ومستوى طاقة البطارية <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"نشط، ومستوى طاقة البطارية <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"مفعّلة، مستوى البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، المعدّل: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"مستوى طاقة البطارية <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"مستوى البطارية: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>، المعدّل: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"نشط"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"الإعدادات الصوتية للوسائط"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"المكالمات الهاتفية"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"قد تكفي طاقة البطارية حتى حوالي الساعة <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"قد تكفي طاقة البطارية حتى حوالي الساعة <xliff:g id="TIME">%1$s</xliff:g>."</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"حتى <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"إطالة عمر البطارية لما بعد <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"يتبقى أقل من <xliff:g id="THRESHOLD">%1$s</xliff:g>."</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"يتبقى أقل من <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"يتبقى أكثر من <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
@@ -469,6 +465,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"الطلب في كل مرة"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"إلى أن توقف الوضع يدويًا"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"للتو"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"هذا الجهاز"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 3aefb12a2b30..b8bc2afa13b0 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$sৰ মাধ্যমেৰে উপলব্ধ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ছাইন আপ কৰিবলৈ টিপক"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"সংযোজিত, ইণ্টাৰনেট নাই"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ইণ্টাৰনেট সংযোগ সীমিত"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ইণ্টাৰনেট সংযোগ নাই"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ছাইন ইন কৰা দৰকাৰী"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"একচেছ পইণ্ট কিছু সময়ৰ বাবে পূৰ্ণ হৈ আছে"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"সংযোগ কৰা হ’ল (মিডিয়া নাই), বেটাৰিৰ স্তৰ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"সংযোগ কৰা হ’ল (কোনো ফ\'ন বা মিডিয়া নাই), বেটাৰিৰ স্তৰ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"সক্ৰিয়, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰি"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"সক্ৰিয়, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> বেটাৰি, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> বেটাৰি"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> বেটাৰি"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> বেটাৰি, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> বেটাৰি"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"সক্ৰিয়"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"মিডিয়াৰ অডিঅ’"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ফ\'ন কলসমূহ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"বেটাৰি আনুমানিকভাৱে <xliff:g id="TIME">%1$s</xliff:g> লৈকে চলিব (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"বেটাৰি আনুমানিকভাৱে <xliff:g id="TIME">%1$s</xliff:g> লৈকে চলিব"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> পৰ্যন্ত"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"বেটাৰিৰ জীৱনকাল <xliff:g id="TIME">%1$s</xliff:g>তকৈ বৃদ্ধি কৰক"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g>তকৈও কম সময় বাকী আছে"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g>তকৈও কম সময় বাকী আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>তকৈও বেছি সময় বাকী আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"প্ৰতিবাৰতে সোধক"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"আপুনি অফ নকৰা পর্যন্ত"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"এই মাত্ৰ"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"এই ডিভাইচটো"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 57aec7c7b44f..e719ff21d1d2 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s vasitəsilə əlçatandır"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Qeydiyyatdan keçmək üçün klikləyin"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Qoşuludur, internet yoxdur"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Məhdud bağlantı"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"İnternet yoxdur"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Giriş tələb olunur"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Giriş nöqtəsi müvəqqəti olaraq doludur"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Qoşuludur (media yoxdur), batareya <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Qoşuludur (telefon və ya media yoxdur), batareya <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiv, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiv, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batareya, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batareya"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batareya"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batareya, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batareya"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiv"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefon zəngləri"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Təxminən <xliff:g id="TIME">%1$s</xliff:g> olana qədər davam edəcək (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Təxminən <xliff:g id="TIME">%1$s</xliff:g> olana qədər davam edəcək"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> olana qədər"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Batareya istifadəsini <xliff:g id="TIME">%1$s</xliff:g> vaxtından etibarən artırın"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Qalan vaxt <xliff:g id="THRESHOLD">%1$s</xliff:g> və daha azdır"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Qalan vaxt <xliff:g id="THRESHOLD">%1$s</xliff:g> və daha azdır (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Qalan vaxt <xliff:g id="TIME_REMAINING">%1$s</xliff:g> və daha çoxdur (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Hər dəfə soruşun"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Deaktiv edənə qədər"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"İndicə"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Bu cihaz"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
index 5b72fca82f59..bd3122a1d51d 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
@@ -254,7 +254,7 @@
<item msgid="7899496259191969307">"Najviše četiri procesa"</item>
</string-array>
<string-array name="usb_configuration_titles">
- <item msgid="488237561639712799">"Punjenje"</item>
+ <item msgid="488237561639712799">"Puni se"</item>
<item msgid="5220695614993094977">"MTP (protokol za transfer medija)"</item>
<item msgid="2086000968159047375">"PTP (protokol za prenos slika)"</item>
<item msgid="7398830860950841822">"RNDIS (USB eternet)"</item>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 4701771d94b1..2dec063ac444 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupna je preko pristupne tačke %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Dodirnite da biste se registrovali"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Veza je uspostavljena, nema interneta"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ograničena veza"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nema interneta"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Treba da se prijavite"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna tačka je privremeno zauzeta"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Povezano (bez medija), nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Povezano (bez telefona ili medija), nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktivan, nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktivno, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktivan"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvuk medija"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonski pozivi"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Produži trajanje baterije u odnosu na period od <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Preostalo je više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -406,7 +402,7 @@
<string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> do potpunog punjenja"</string>
<string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do potpunog punjenja"</string>
<string name="battery_info_status_unknown" msgid="196130600938058547">"Nepoznato"</string>
- <string name="battery_info_status_charging" msgid="1705179948350365604">"Punjenje"</string>
+ <string name="battery_info_status_charging" msgid="1705179948350365604">"Puni se"</string>
<string name="battery_info_status_charging_lower" msgid="8689770213898117994">"puni se"</string>
<string name="battery_info_status_discharging" msgid="310932812698268588">"Ne puni se"</string>
<string name="battery_info_status_not_charging" msgid="8523453668342598579">"Priključeno je, ali punjenje trenutno nije moguće"</string>
@@ -466,6 +462,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Uvek pitaj"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dok ne isključite"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Upravo"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ovaj uređaj"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 633670549c03..fedfbcb28d75 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Даступна праз %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Націсніце, каб зарэгістравацца"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Падключана, без доступу да інтэрнэту"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Абмежаваныя магчымасці падключэння"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Не падключана да інтэрнэту"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Трэба выканаць уваход"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Пункт доступу часова заняты"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Падключана прылада <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (без аўдыя). Узровень зараду яе акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Падключана прылада <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (без званкоў і аўдыя). Узровень зараду яе акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Уключана, зарад <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Актыўна, Л: акумулятар: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, П: акумулятар: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Узровень зараду: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Л: акумулятар: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, П: акумулятар: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Уключана"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Аўдыё медыяпрылады"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Тэлефонныя выклікі"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Зараду (<xliff:g id="LEVEL">%2$s</xliff:g>) хопіць прыблізна да <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Зараду хопіць прыблізна да <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Да <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Падоўжыце тэрмін службы акумулятара пасля <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Засталося менш за <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Узровень зараду батарэі: <xliff:g id="LEVEL">%2$s</xliff:g> (хопіць менш чым на <xliff:g id="THRESHOLD">%1$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Узровень зараду батарэі: <xliff:g id="LEVEL">%2$s</xliff:g> (хопіць больш чым на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Заўсёды пытацца"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Пакуль не выключыце"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Зараз"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Гэта прылада"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index cdd5a0903bf0..4fb381950362 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Мрежата е достъпна през „%1$s“"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Докоснете, за да се регистрирате"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Установена е връзка – няма достъп до интернет"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ограничена връзка"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Няма връзка с интернет"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Изисква се вход в профила"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Точката за достъп временно е пълна"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Свързано (без мултимедия), батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Свързано (без телефон или мултимедия), батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Активно. Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Активно. Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерия. Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерия"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Батерия: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерия. Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерия"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Активно"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Мултимедийно аудио"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Телефонни обаждания"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Следва да издържи приблизително до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Следва да издържи до около <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"До <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Удължаване на живота на батерията след <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Остава/т по-малко от <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Остава/т по-малко от <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Остава/т повече от <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Да се пита винаги"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"До изключване"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Току-що"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Това устройство"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index ceb81a12a206..42223bdd3541 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s এর মাধ্যমে উপলব্ধ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"সাইন-আপ করতে ট্যাপ করুন"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"কানেক্ট, ইন্টারনেট নেই"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"সীমিত কানেকশন"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ইন্টারনেট কানেকশন নেই"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"সাইন-ইন করা দরকার"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"এই মুহূর্তে অ্যাক্সেস পয়েন্টের কোনও কানেকশন ফাঁকা নেই"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"কানেক্ট করা আছে (মিডিয়ার অডিও ছাড়া), ব্যাটারি <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"কানেক্ট করা আছে (ফোনের বা মিডিয়ার অডিও ছাড়া), ব্যাটারি <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"চালু আছে, চার্জ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"চালু, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ব্যাটারি, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ব্যাটারি"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"চার্জ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ব্যাটারি, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ব্যাটারি"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"চালু আছে"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"মিডিয়া অডিও"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ফোন কল"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"আনুমানিক <xliff:g id="TIME">%1$s</xliff:g> পর্যন্ত চলবে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"আনুমানিক <xliff:g id="TIME">%1$s</xliff:g> পর্যন্ত চলবে"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> পর্যন্ত"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g>-এর পর পর্যন্ত ব্যাটারির ব্যবহার চালিয়ে যান"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> এর থেকেও কম বাকি আছে"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"আর <xliff:g id="THRESHOLD">%1$s</xliff:g>-এর কম চার্জ বাকি আছে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"আরও <xliff:g id="TIME_REMAINING">%1$s</xliff:g>-এর বেশি চলবে (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -423,7 +419,7 @@
<item msgid="1286113608943010849">"১০০%"</item>
</string-array>
<string name="charge_length_format" msgid="8978516217024434156">"<xliff:g id="ID_1">%1$s</xliff:g> আগে"</string>
- <string name="remaining_length_format" msgid="7886337596669190587">"<xliff:g id="ID_1">%1$s</xliff:g> বাকী আছে"</string>
+ <string name="remaining_length_format" msgid="7886337596669190587">"<xliff:g id="ID_1">%1$s</xliff:g> বাকি আছে"</string>
<string name="screen_zoom_summary_small" msgid="5867245310241621570">"ক্ষুদ্র"</string>
<string name="screen_zoom_summary_default" msgid="2247006805614056507">"ডিফল্ট"</string>
<string name="screen_zoom_summary_large" msgid="4835294730065424084">"বড়"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"প্রতিবার জিজ্ঞেস করা হবে"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"যতক্ষণ না আপনি বন্ধ করছেন"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"এখনই"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"এই ডিভাইস"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index fd9475a623f3..cb34f1d45535 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupan preko %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Dodirnite za prijavu"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Povezano, nema interneta"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ograničena veza"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nema internetske veze"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Potrebna je prijava"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna tačka je privremeno puna"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Povezano (bez medija), baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Povezano (bez telefona ili medija), baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktivan, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktivno, L: baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktivan"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvuk medija"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonski pozivi"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Trebala bi trajati do otprilike <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Trebala bi trajati otprilike do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Produži trajanje baterije nakon <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Preostalo je više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -466,6 +462,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pitaj svaki put"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dok ne isključite"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Upravo"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ovaj uređaj"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 9aa1bf3e40f9..5a9ec706fe9e 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible mitjançant %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toca per registrar-te"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connectada, sense Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Connexió limitada"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sense connexió a Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Cal iniciar la sessió"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"El punt d\'accés està temporalment ple"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> connectat (sense accés al contingut multimèdia), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> connectat (sense accés al telèfon ni al contingut multimèdia), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Actiu, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Actiu, E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> bateria"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> bateria"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Actiu"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Àudio multimèdia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Trucades telefòniques"</string>
@@ -154,8 +151,8 @@
<string name="running_process_item_user_label" msgid="3129887865552025943">"Usuari: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="launch_defaults_some" msgid="313159469856372621">"S\'han definit alguns valors predeterminats"</string>
<string name="launch_defaults_none" msgid="4241129108140034876">"No s\'ha definit cap valor predeterminat"</string>
- <string name="tts_settings" msgid="8186971894801348327">"Configuració de síntesi de veu"</string>
- <string name="tts_settings_title" msgid="1237820681016639683">"Síntesi de veu"</string>
+ <string name="tts_settings" msgid="8186971894801348327">"Configuració de text a veu"</string>
+ <string name="tts_settings_title" msgid="1237820681016639683">"Sortida de text a veu"</string>
<string name="tts_default_rate_title" msgid="6030550998379310088">"Velocitat de veu"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"Velocitat de lectura del text"</string>
<string name="tts_default_pitch_title" msgid="6135942113172488671">"To"</string>
@@ -169,7 +166,7 @@
<string name="tts_install_data_title" msgid="4264378440508149986">"Instal·la dades de veu"</string>
<string name="tts_install_data_summary" msgid="5742135732511822589">"Instal·la les dades de veu necessàries per a la síntesi de veu"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"Pot ser que aquest motor de síntesi de la parla pugui recopilar tot el text que es dirà en veu alta, incloses les dades personals, com ara les contrasenyes i els números de les targetes de crèdit. Ve del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Vols activar l\'ús d\'aquest motor de síntesi de la parla?"</string>
- <string name="tts_engine_network_required" msgid="1190837151485314743">"Aquest idioma requereix una connexió de xarxa activa per a la sortida de síntesi de veu."</string>
+ <string name="tts_engine_network_required" msgid="1190837151485314743">"Aquest idioma requereix una connexió de xarxa activa per a la sortida de text a veu."</string>
<string name="tts_default_sample_string" msgid="4040835213373086322">"Això és un exemple de síntesi de veu"</string>
<string name="tts_status_title" msgid="7268566550242584413">"Estat de l\'idioma predeterminat"</string>
<string name="tts_status_ok" msgid="1309762510278029765">"<xliff:g id="LOCALE">%1$s</xliff:g> és totalment compatible"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"La bateria hauria de durar aproximadament fins a les <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"La bateria hauria de durar aproximadament fins a les <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Fins a les <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Allarga la durada de la bateria després de les <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Temps restant inferior a <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Temps restant inferior a <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Temps restant superior a <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pregunta sempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Fins que no ho desactivis"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Ara mateix"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Aquest dispositiu"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 409932d05e65..05889a4dd9a5 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupné prostřednictvím %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Klepnutím se zaregistrujete"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Připojeno, není k dispozici internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Omezené připojení"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nejste připojeni k internetu"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Je vyžadováno přihlášení"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Přístupový bod je dočasně zaplněn"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Připojeno k zařízení <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (bez médií), úroveň baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Připojeno k zařízení <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (bez telefonu a médií), úroveň baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktivní, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterie"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktivní, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterie, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterie"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterie"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterie, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterie"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktivní"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvuk médií"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonní hovory"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Vydrží asi do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Vydrží asi do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Prodloužit výdrž baterie po <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Zbývá méně než <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Zbývá méně než <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Zbývá více než <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pokaždé se zeptat"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dokud tuto funkci nevypnete"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Právě teď"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Toto zařízení"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 5d7569aae72e..2f8a2b228885 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Tilgængelig via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tryk for at registrere dig"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tilsluttet – intet internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Begrænset forbindelse"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Intet internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Login er påkrævet"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Adgangspunktet er midlertidigt fuldt"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Tilsluttet <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (ingen medier) – batteriniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Tilsluttet <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (ingen telefon eller medier) – batteriniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktivt, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktivt – venstre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri. Højre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Venstre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri. Højre: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktivt"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medielyd"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonopkald"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Bør holde indtil ca. <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Bør holde indtil ca. <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Indtil <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Forlæng batteritiden til efter <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Der er mindre end <xliff:g id="THRESHOLD">%1$s</xliff:g> tilbage"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Der er mindre end <xliff:g id="THRESHOLD">%1$s</xliff:g> tilbage (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Der er mere end <xliff:g id="TIME_REMAINING">%1$s</xliff:g> tilbage (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Spørg hver gang"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Indtil du deaktiverer"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Lige nu"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Denne enhed"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index a6f792703b79..869245a50acc 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Verfügbar über %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Zum Anmelden tippen"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Verbunden, kein Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Eingeschränkte Verbindung"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Kein Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Anmeldung erforderlich"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Zugangspunkt vorübergehend voll belegt"</string>
@@ -56,7 +55,7 @@
<string name="osu_sign_up_complete" msgid="8207626049093289203">"Anmeldung abgeschlossen. Verbindung wird hergestellt…"</string>
<string name="speed_label_very_slow" msgid="1867055264243608530">"Sehr langsam"</string>
<string name="speed_label_slow" msgid="813109590815810235">"Langsam"</string>
- <string name="speed_label_okay" msgid="2331665440671174858">"OK"</string>
+ <string name="speed_label_okay" msgid="2331665440671174858">"Ok"</string>
<string name="speed_label_medium" msgid="3175763313268941953">"Mittel"</string>
<string name="speed_label_fast" msgid="7715732164050975057">"Schnell"</string>
<string name="speed_label_very_fast" msgid="2265363430784523409">"Sehr schnell"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Mit <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> verbunden (kein Medien-Audio), Akkustand bei <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Mit <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> verbunden (weder Telefon- noch Medien-Audio), Akkustand bei <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiv, Akkustand: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiv, Akkustand L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Akkustand: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Akkustand L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiv"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medien-Audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonanrufe"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Sollte etwa bis <xliff:g id="TIME">%1$s</xliff:g> reichen"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Bis <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Akkulaufzeit über <xliff:g id="TIME">%1$s</xliff:g> hinaus verlängern"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Weniger als <xliff:g id="THRESHOLD">%1$s</xliff:g> verbleibend"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Weniger als <xliff:g id="THRESHOLD">%1$s</xliff:g> verbleibend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mehr als <xliff:g id="TIME_REMAINING">%1$s</xliff:g> verbleibend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -423,7 +419,7 @@
<item msgid="1286113608943010849">"100 %"</item>
</string-array>
<string name="charge_length_format" msgid="8978516217024434156">"Vor <xliff:g id="ID_1">%1$s</xliff:g>"</string>
- <string name="remaining_length_format" msgid="7886337596669190587">"Noch <xliff:g id="ID_1">%1$s</xliff:g> verbleibend"</string>
+ <string name="remaining_length_format" msgid="7886337596669190587">"Restlaufzeit: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="screen_zoom_summary_small" msgid="5867245310241621570">"Klein"</string>
<string name="screen_zoom_summary_default" msgid="2247006805614056507">"Standard"</string>
<string name="screen_zoom_summary_large" msgid="4835294730065424084">"Groß"</string>
@@ -451,7 +447,7 @@
<string name="accessibility_manual_zen_more_time" msgid="1636187409258564291">"Mehr Zeit."</string>
<string name="accessibility_manual_zen_less_time" msgid="6590887204171164991">"Weniger Zeit."</string>
<string name="cancel" msgid="6859253417269739139">"Abbrechen"</string>
- <string name="okay" msgid="1997666393121016642">"OK"</string>
+ <string name="okay" msgid="1997666393121016642">"Ok"</string>
<string name="zen_mode_enable_dialog_turn_on" msgid="8287824809739581837">"Aktivieren"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="2297134204747331078">"\"Bitte nicht stören\" aktivieren"</string>
<string name="zen_mode_settings_summary_off" msgid="6119891445378113334">"Nie"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Jedes Mal fragen"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Bis zur Deaktivierung"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Gerade eben"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Dieses Gerät"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 030a527619d0..a628c077c8c1 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Διαθέσιμο μέσω %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Πατήστε για εγγραφή"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Συνδέθηκε, χωρίς σύνδεση στο διαδίκτυο"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Περιορισμένη σύνδεση"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Δεν υπάρχει σύνδεση στο διαδίκτυο"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Απαιτείται σύνδεση"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Το σημείο πρόσβασης είναι προσωρινά πλήρες"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Σε σύνδεση (χωρίς μέσα), μπαταρία <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Σε σύνδεση (χωρίς τηλέφωνο ή μέσα), μπαταρία <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Ενεργό, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Ενεργό, Α: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> μπαταρία, Δ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> μπαταρία"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> μπαταρία"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Α: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> μπαταρία, Δ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> μπαταρία"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Ενεργό"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Ήχος πολυμέσων"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Τηλεφωνικές κλήσεις"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Θα διαρκέσει μέχρι τις <xliff:g id="TIME">%1$s</xliff:g> περίπου (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Θα διαρκέσει μέχρι τις <xliff:g id="TIME">%1$s</xliff:g> περίπου"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Έως τις <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Επέκταση διάρκεια ζωής μπαταρίας πέρα από <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Απομένει/ουν λιγότερo/α από <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Απομένει/ουν λιγότερo/α από <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Απομένουν περισσότερα/ες από <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Να ερωτώμαι κάθε φορά"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Μέχρι την απενεργοποίηση"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Μόλις τώρα"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Αυτή η συσκευή"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index 3fdc64dad9b5..607a32877dd1 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tap to sign up"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Limited connection"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Connected (no media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Connected (no phone or media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Active, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Active, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Active"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Phone calls"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Extend battery life past <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 3fdc64dad9b5..607a32877dd1 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tap to sign up"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Limited connection"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Connected (no media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Connected (no phone or media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Active, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Active, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Active"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Phone calls"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Extend battery life past <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index 3fdc64dad9b5..607a32877dd1 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tap to sign up"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Limited connection"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Connected (no media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Connected (no phone or media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Active, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Active, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Active"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Phone calls"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Extend battery life past <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index 3fdc64dad9b5..607a32877dd1 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Available via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tap to sign up"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connected, no Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Limited connection"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"No Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sign-in required"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Access point temporarily full"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Connected (no media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Connected (no phone or media), battery <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Active, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Active, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> battery"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> battery, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> battery"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Active"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Phone calls"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Until <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Extend battery life past <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Less than <xliff:g id="THRESHOLD">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"More than <xliff:g id="TIME_REMAINING">%1$s</xliff:g> remaining (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ask every time"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Just now"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"This device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index c7417377ef8d..a9f61907c8d3 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‏‎‏‎Available via %1$s‎‏‎‎‏‎"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‎‎‎‎‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎Tap to sign up‎‏‎‎‏‎"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎Connected, no internet‎‏‎‎‏‎"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎Limited connection‎‏‎‎‏‎"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎No internet‎‏‎‎‏‎"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‎‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‏‎‏‎‎‎Sign in required‎‏‎‎‏‎"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎Access point temporarily full‎‏‎‎‏‎"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‎‎Connected (no media), battery ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎Connected (no phone or media), battery ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‏‏‎‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‎Active, ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ battery‎‏‎‎‏‎"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‎Active, L: ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ battery, R: ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ battery‎‏‎‎‏‎"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‎‏‎‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ battery‎‏‎‎‏‎"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎L: ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ battery, R: ‎‏‎‎‏‏‎<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎ battery‎‏‎‎‏‎"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‎‎‏‎‎‎Active‎‏‎‎‏‎"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‏‎‎‏‎‎Media audio‎‏‎‎‏‎"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‎‏‏‎‏‎‎‏‎‎Phone calls‎‏‎‎‏‎"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎Should last until about ‎‏‎‎‏‏‎<xliff:g id="TIME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ (‎‏‎‎‏‏‎<xliff:g id="LEVEL">%2$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‏‎‏‏‎‎‏‏‎‏‎‎‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‎Should last until about ‎‏‎‎‏‏‎<xliff:g id="TIME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‎‎‎Until ‎‏‎‎‏‏‎<xliff:g id="TIME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‏‎‏‎Extend battery life past ‎‏‎‎‏‏‎<xliff:g id="TIME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‎Less than ‎‏‎‎‏‏‎<xliff:g id="THRESHOLD">%1$s</xliff:g>‎‏‎‎‏‏‏‎ remaining‎‏‎‎‏‎"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‏‏‎‏‏‏‏‏‎Less than ‎‏‎‎‏‏‎<xliff:g id="THRESHOLD">%1$s</xliff:g>‎‏‎‎‏‏‏‎ remaining (‎‏‎‎‏‏‎<xliff:g id="LEVEL">%2$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‎More than ‎‏‎‎‏‏‎<xliff:g id="TIME_REMAINING">%1$s</xliff:g>‎‏‎‎‏‏‏‎ remaining (‎‏‎‎‏‏‎<xliff:g id="LEVEL">%2$s</xliff:g>‎‏‎‎‏‏‏‎)‎‏‎‎‏‎"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‏‎Ask every time‎‏‎‎‏‎"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‏‏‎Until you turn off‎‏‎‎‏‎"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‏‎‎Just now‎‏‎‎‏‎"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‏‎‎‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‎‏‎This device‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 3b67eeadfaf7..877474029b3f 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible a través de %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Presiona para registrarte"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectado pero sin conexión a Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Conexión limitada"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sin Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Acceso obligatorio"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"El punto de acceso está completo temporalmente"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Conectado (sin archivos multimedia) a <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería)"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Conectado (sin teléfono ni archivos multimedia) a <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería)"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Activado (batería: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>)"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Activo, I: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"I: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Activado"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimedia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Llamadas telefónicas"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Duración aproximada hasta: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Debería durar aproximadamente hasta <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Hasta <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Extender la duración de la batería después de las <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Tiempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Tiempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Tiempo restante: más de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Preguntar siempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Hasta que lo desactives"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Recién"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 46935a24cc33..6ff035f83b19 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible a través de %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toca para registrarte"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conexión sin Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Conexión limitada"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sin Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Debes iniciar sesión"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punto de acceso temporalmente lleno"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Conectado (sin audio multimedia) a <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería)"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Conectado (sin audio de teléfono ni multimedia) a <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería)"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Activo, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Activo L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Activo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimedia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Llamadas de teléfono"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Debería durar aproximadamente hasta <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Duración aproximada hasta: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Hasta: <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Prolongar la duración de la batería después de las <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Tiempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Queda menos del <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Queda más del <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -455,7 +451,7 @@
<string name="zen_mode_enable_dialog_turn_on" msgid="8287824809739581837">"Activar"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="2297134204747331078">"Activar el modo No molestar"</string>
<string name="zen_mode_settings_summary_off" msgid="6119891445378113334">"Nunca"</string>
- <string name="zen_interruption_level_priority" msgid="2078370238113347720">"Solo prioritarias"</string>
+ <string name="zen_interruption_level_priority" msgid="2078370238113347720">"Solo interrupciones prioritarias"</string>
<string name="zen_mode_and_condition" msgid="4927230238450354412">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
<string name="zen_alarm_warning_indef" msgid="3007988140196673193">"Solo oirás la próxima alarma (<xliff:g id="WHEN">%1$s</xliff:g>) si desactivas esta opción antes"</string>
<string name="zen_alarm_warning" msgid="6236690803924413088">"No oirás la próxima alarma (<xliff:g id="WHEN">%1$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Preguntar siempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Hasta que se desactive"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Justo ahora"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 9a71c19dc262..86bcf717214b 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Saadaval üksuse %1$s kaudu"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Puudutage registreerumiseks"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ühendatud, Interneti-ühendus puudub"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Piiratud ühendus"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Interneti-ühendus puudub"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Nõutav on sisselogimine"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pääsupunkt on ajutiselt täis"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Ühendatud (meediat pole), aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Ühendatud (telefoni ega meediat pole), aku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiivne, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> akut"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiivne, V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> akut, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> akut"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> akut"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> akut, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> akut"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiivne"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Meedia heli"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonikõned"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Peaks kestma kuni <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Peaks kestma kuni <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Kuni <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Pikenda aku eluiga üle <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Jäänud on alla <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Jäänud on alla <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Jäänud on üle <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Küsi iga kord"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Kuni välja lülitate"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Äsja"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"See seade"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index c4d16aa3a1af..c5a672469dc1 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s bidez erabilgarri"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Sakatu erregistratzeko"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Konektatuta; ezin da atzitu Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Konexio mugatua"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ez dago Interneteko konexiorik"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Saioa hasi behar da"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Sarbide-puntua beteta dago aldi baterako"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Konektatuta (gailuaren audiorik gabe). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>."</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Konektatuta (telefonoaren edo gailuaren audiorik gabe). Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>."</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktibo. Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktibo. Ezk. gailuaren bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. Esk- gailuaren bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Ezk. gailuaren bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>. Esk- gailuaren bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktibo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Euskarriaren audioa"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefono-deiak"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Ordu honetara arte iraungo du, gutxi gorabehera: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Ordu honetara arte iraungo du, gutxi gorabehera: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> arte"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Luzatu bateriaren iraupena <xliff:g id="TIME">%1$s</xliff:g> baino harago iraun dezan"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> baino gutxiago gelditzen dira"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> baino gutxiago gelditzen da (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> baino gehiago gelditzen da (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Galdetu beti"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Desaktibatu arte"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Oraintxe"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Gailu hau"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index dd9f9fbfd2ca..13961c786d2b 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"‏در دسترس از طریق %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"برای ثبت‌نام ضربه بزنید"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"متصل، بدون اینترنت"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"اتصال محدود"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"عدم دسترسی به اینترنت"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ورود به سیستم لازم است"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ظرفیت نقطه دسترسی موقتاً تکمیل شده است"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"متصل (بدون رسانه)، باتری <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"متصل (بدون تلفن یا رسانه)، باتری <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"فعال، <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> شارژ باتری"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"فعال، چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> باتری، راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> باتری"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> شارژ باتری"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"چپ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> باتری، راست: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> باتری"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"فعال"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"رسانه صوتی"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"تماس‌های تلفنی"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"باید حدوداً تا <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) شارژ داشته باشید"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"باید حدوداً تا <xliff:g id="TIME">%1$s</xliff:g> شارژ داشته باشید"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"تا <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"افزایش عمر باتری پس از <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"کمتر از <xliff:g id="THRESHOLD">%1$s</xliff:g> باقی مانده"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"کمتر از <xliff:g id="THRESHOLD">%1$s</xliff:g> شارژ باقی مانده است (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"بیش از <xliff:g id="TIME_REMAINING">%1$s</xliff:g> شارژ باقی مانده است (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"هربار پرسیده شود"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"تا زمانی‌که آن را خاموش کنید"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"هم‌اکنون"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"این دستگاه"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 7ecb7cb20e29..d036446ddf39 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Käytettävissä seuraavan kautta: %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Rekisteröidy napauttamalla"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Yhdistetty, ei internetyhteyttä"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Rajallinen yhteys"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ei internetyhteyttä"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Sisäänkirjautuminen vaaditaan"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Yhteyspiste tilapäisesti täynnä"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Yhdistetty (ei median ääntä), akun varaus <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Yhdistetty (ei puhelimen tai median ääntä), akun varaustaso <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiivinen, akun taso <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiivinen, V: akku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, O: akku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Akun taso <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"V: akku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, O: akku <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiivinen"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Median ääni"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Puhelut"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Varaus loppuu noin <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Varaus loppuu noin <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> saakka"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Paranna akunkestoa pidemmälle kuin klo <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Alle <xliff:g id="THRESHOLD">%1$s</xliff:g> jäljellä"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Alle <xliff:g id="THRESHOLD">%1$s</xliff:g> jäljellä (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Yli <xliff:g id="TIME_REMAINING">%1$s</xliff:g> jäljellä (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Kysy aina"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Kunnes poistat sen käytöstä"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Äsken"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Tämä laite"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index c0c0f37b88bf..4b21d71def05 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Accessible par %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toucher pour vous connecter"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connecté, aucun accès à Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Connexion limitée"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Aucune connexion Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Connexion requise"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Le point d\'accès est temporairement plein"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Connecté (aucun média), pile chargée à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Connecté (aucun téléphone ni média), pile chargée à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Actif, pile : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Actif, G : charge à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; D : charge à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Pile : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"G : charge à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; D : charge à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Actif"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Paramètres audio du support"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Appels téléphoniques"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Jusqu\'à <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Prolonger l\'autonomie au-delà de <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Il reste plus de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Toujours demander"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Jusqu\'à la désactivation"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"À l\'instant"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Cet appareil"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index f40675571fb3..d964ee4293d4 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponible via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Appuyez ici pour vous connecter"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connecté, aucun accès à Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Connexion limitée"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Aucun accès à Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Connexion requise"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Point d\'accès temporairement plein"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Connecté (aucun contenu multimédia), batterie à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Connecté (aucun téléphone ni contenu multimédia), batterie à <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Actif, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Actif, G : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de la batterie, D : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de la batterie"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batterie"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"G : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de la batterie, D : <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de la batterie"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Actif"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Multimédia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Appels téléphoniques"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Devrait durer jusqu\'à environ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Jusqu\'à <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Prolonger l\'autonomie de la batterie au-delà de <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Il reste moins de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Il reste plus de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Toujours demander"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Jusqu\'à la désactivation"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"À l\'instant"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Cet appareil"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index ab1a00364a85..19c75131f361 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Dispoñible a través de %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toca para rexistrarte"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conexión sen Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Pouca conexión"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Non hai conexión a Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É obrigatorio iniciar sesión"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"O punto de acceso está temporalmente cheo"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Conectado a <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (sen audio multimedia), batería ao <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Conectado a <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (sen teléfono nin audio multimedia), batería ao <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Dispositivo activo, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Activado. E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de batería. D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de batería"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Activo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimedia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Chamadas telefónicas"</string>
@@ -306,8 +303,8 @@
<string name="disable_overlays_summary" msgid="3578941133710758592">"Utilizar sempre GPU para a composición da pantalla"</string>
<string name="simulate_color_space" msgid="6745847141353345872">"Simular o espazo da cor"</string>
<string name="enable_opengl_traces_title" msgid="6790444011053219871">"Activar rastros OpenGL"</string>
- <string name="usb_audio_disable_routing" msgid="8114498436003102671">"Desactivar enrutamento audio USB"</string>
- <string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"Desactivar enrutamento aut. a periférico audio USB"</string>
+ <string name="usb_audio_disable_routing" msgid="8114498436003102671">"Desact. encamiñamento audio USB"</string>
+ <string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"Desact. encamiñamento aut. a periférico audio USB"</string>
<string name="debug_layout" msgid="5981361776594526155">"Mostrar límites de deseño"</string>
<string name="debug_layout_summary" msgid="2001775315258637682">"Mostra os límites dos clips, as marxes, etc."</string>
<string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"Forzar dirección do deseño RTL"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Debería durar aproximadamente ata a seguinte hora: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Debería durar aproximadamente ata a seguinte hora: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Ata: <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Amplía a duración da batería a partir desta hora: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Tempo restante inferior a <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Tempo restante: menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Tempo restante: máis de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Preguntar sempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Ata a desactivación"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Agora mesmo"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 9c0b4702df51..de70b60ffed8 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s દ્વારા ઉપલબ્ધ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"સાઇન અપ કરવા માટે ટૅપ કરો"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"કનેક્ટ કર્યું, કોઈ ઇન્ટરનેટ નથી"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"મર્યાદિત કનેક્શન"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ઇન્ટરનેટ ઍક્સેસ નથી"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"સાઇન ઇન આવશ્યક"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ઍક્સેસ પૉઇન્ટ અસ્થાયીરૂપે ભરાયેલ છે"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> સાથે કનેક્ટ થયેલ (કોઈ મીડિયા નથી), બૅટરી <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> સાથે કનેક્ટ થયેલ (કોઈ ફોન અથવા મીડિયા નથી), બૅટરી <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"સક્રિય, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"સક્રિય, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> બૅટરી, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> બૅટરી"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> બૅટરી"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> બૅટરી, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> બૅટરી"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"સક્રિય"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"મીડિયા ઑડિઓ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ફોન કૉલ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"લગભગ <xliff:g id="TIME">%1$s</xliff:g> સુધી ચાલવી જોઈએ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"લગભગ <xliff:g id="TIME">%1$s</xliff:g> સુધી ચાલવી જોઈએ"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> સુધી"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"બૅટરીની આવરદા <xliff:g id="TIME">%1$s</xliff:g> થી વધારો"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> કરતાં ઓછો સમય બાકી છે"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> કરતાં ઓછો સમય બાકી છે (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> કરતાં વધુ સમય બાકી છે (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"દર વખતે પૂછો"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"તમે બંધ ન કરો ત્યાં સુધી"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"હમણાં જ"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"આ ડિવાઇસ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 76097fd22531..e812810547db 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -381,12 +381,12 @@
<string name="power_remaining_settings_home_page" msgid="4845022416859002011">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="6123167166221295462">"बैटरी लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी"</string>
<string name="power_discharging_duration" msgid="8848256785736335185">"बैटरी लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_remaining_duration_only_enhanced" msgid="4189311599812296592">"आपके इस्तेमाल के हिसाब से बैटरी लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी"</string>
- <string name="power_discharging_duration_enhanced" msgid="1992003260664804080">"आपके इस्तेमाल के हिसाब से बैटरी लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_only_enhanced" msgid="4189311599812296592">"आपके इस्तेमाल के हिसाब से बैटरी करीब <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी"</string>
+ <string name="power_discharging_duration_enhanced" msgid="1992003260664804080">"आपके इस्तेमाल के हिसाब से बैटरी करीब <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<!-- no translation found for power_remaining_duration_only_short (9183070574408359726) -->
<skip />
- <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"आपके इस्तेमाल के हिसाब से बैटरी लगभग <xliff:g id="TIME">%1$s</xliff:g> चलेगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"आपके इस्तेमाल के हिसाब से बैटरी लगभग <xliff:g id="TIME">%1$s</xliff:g> चलेगी"</string>
+ <string name="power_discharge_by_enhanced" msgid="2095821536747992464">"आपके इस्तेमाल के हिसाब से बैटरी करीब <xliff:g id="TIME">%1$s</xliff:g> तक चलेगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_discharge_by_only_enhanced" msgid="2175151772952365149">"आपके इस्तेमाल के हिसाब से बैटरी करीब <xliff:g id="TIME">%1$s</xliff:g> तक चलेगी"</string>
<string name="power_discharge_by" msgid="6453537733650125582">"बैटरी लगभग <xliff:g id="TIME">%1$s</xliff:g> चलेगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"बैटरी लगभग <xliff:g id="TIME">%1$s</xliff:g> चलेगी"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> तक"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index f5e984528b08..17de589d04db 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostupno putem %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Dodirnite da biste se registrirali"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Povezano, bez interneta"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ograničena veza"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nema interneta"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Obavezna prijava"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pristupna je točka privremeno puna"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Povezano (bez medija), baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Povezano (bez telefona i medija), baterija <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktivan, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktivno, L: baterija na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: baterija na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterije"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: baterija na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: baterija na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktivan"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medijski zvuk"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonski pozivi"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Otprilike bi trebalo trajati do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Otprilike bi trebalo trajati do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Neka baterija potraje i nakon <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Preostalo je manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Preostalo je više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -466,6 +462,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pitaj svaki put"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dok ne isključite"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Upravo sad"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ovaj uređaj"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 473f1ce2fbe1..39b0e2b1c713 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Elérhető a következőn keresztül: %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Koppintson a regisztrációhoz"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Csatlakozva, nincs internet-hozzáférés"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Korlátozott kapcsolat"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nincs internetkapcsolat"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Bejelentkezést igényel"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"A hozzáférési pont átmenetileg megtelt"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Csatlakoztatva (médiahang nélkül); az akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Csatlakoztatva (nincs telefon- és médiahang); az akkumulátor töltöttségi szintje: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktív, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>-os töltöttség"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktív, B: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>-os töltöttség, J: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>-os töltöttség"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Akkumulátor: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"B: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>-os töltöttség, J: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>-os töltöttség"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktív"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Média audió"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonhívások"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Nagyjából még ennyit bír: <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Nagyjából még ennyit bír: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Eddig: <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Akkumulátor-üzemidő kiterjesztése <xliff:g id="TIME">%1$s</xliff:g> utánig"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Kevesebb mint <xliff:g id="THRESHOLD">%1$s</xliff:g> van hátra"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Kevesebb mint <xliff:g id="THRESHOLD">%1$s</xliff:g> van hátra (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Kevesebb mint <xliff:g id="TIME_REMAINING">%1$s</xliff:g> van hátra (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Mindig kérdezzen rá"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Kikapcsolásig"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Az imént"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ez az eszköz"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index aac766c0df92..fec01a725791 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Հասանելի է %1$s-ի միջոցով"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Հպեք՝ գրանցվելու համար"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Միացված է, սակայն ինտերնետ կապ չկա"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Սահմանափակ կապ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ինտերնետ կապ չկա"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Անհրաժեշտ է մուտք գործել"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Հասանելիության կետը ժամանակավորապես լիքն է"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Միացված է (մեդիա չկա), մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Միացված է (հեռախոս կամ մեդիա չկա), մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Ակտիվ է։ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Ակտիվ է, Ա` Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Ձ՝ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Ա՝ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Ձ՝ Մարտկոցի լիցքը՝ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Ակտիվ է"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Մեդիա աուդիո"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Հեռախոսազանգեր"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Լիցքը (<xliff:g id="LEVEL">%2$s</xliff:g>) պետք է, որ բավականացնի մոտ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Լիցքը պետք է, որ բավականացնի մոտ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Մինչև <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Երկարացրեք մարտկոցի աշխատաժամանակը <xliff:g id="TIME">%1$s</xliff:g>-ից"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Մնացել է <xliff:g id="THRESHOLD">%1$s</xliff:g>-ից պակաս"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Մնացել է <xliff:g id="THRESHOLD">%1$s</xliff:g>-ից պակաս (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Մնացել է ավելի քան <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Հարցնել ամեն անգամ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Մինչև չանջատեք"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Հենց նոր"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Այս սարքը"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 79616cee7b54..1a0a4abf5889 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tap untuk mendaftar"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tersambung, tidak ada internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Koneksi terbatas"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Tidak ada internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Perlu login"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Titik akses penuh untuk sementara"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Terhubung (tanpa media), baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Terhubung (tanpa ponsel atau media), baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktif, baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktif, Kr: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterai, Kn: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterai"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Baterai <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Kr: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterai, Kn: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterai"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktif"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio media"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Panggilan telepon"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Akan bertahan kira-kira sampai <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Akan bertahan kira-kira sampai <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Hingga <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Perpanjang masa pakai baterai hingga <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Tersisa kurang dari <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Tersisa kurang dari <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Tersisa lebih dari <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Selalu tanya"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Sampai Anda menonaktifkannya"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Baru saja"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Perangkat ini"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 2ae43a4ae804..935f0ea98650 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Í boði í gegnum %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Ýttu til að skrá þig"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tengt, enginn netaðgangur"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Takmörkuð tenging"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Engin nettenging"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Innskráningar krafist"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Aðgangsstaður tímabundið fullur"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Tengt (ekkert efni), staða rafhlöðu <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Tengt (enginn sími eða efni), staða rafhlöðu <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Tengt, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Virkt, V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> rafhlaða, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> rafhlaða"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> rafhlöðuhleðsla"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> rafhlaða, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> rafhlaða"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Virkt"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Hljóð efnis"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Símtöl"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Ætti að endast til u.þ.b. <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Ætti að endast til u.þ.b. <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Til klukkan <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Láttu rafhlöðuna endast lengur en <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Minna en <xliff:g id="THRESHOLD">%1$s</xliff:g> eftir"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Minna en <xliff:g id="THRESHOLD">%1$s</xliff:g> eftir (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Meira en <xliff:g id="TIME_REMAINING">%1$s</xliff:g> eftir (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Spyrja í hvert skipti"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Þar til þú slekkur"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Rétt í þessu"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Þetta tæki"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index c63204164aec..2169b0cb13c6 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponibile tramite %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tocca per registrarti"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Connesso, senza Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Connessione limitata"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nessuna connessione a Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Accesso richiesto"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punto di accesso momentaneamente al completo"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> connesso (contenuti multimediali esclusi), batteria al <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> connesso (telefono o contenuti multimediali esclusi), batteria al <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Attivo - Batteria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Attivo, S: batteria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: batteria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Batteria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"S: batteria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: batteria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Attivo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio multimediale"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonate"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Tempo stimato rimanente: <xliff:g id="TIME">%1$s</xliff:g> circa (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Tempo stimato rimanente: <xliff:g id="TIME">%1$s</xliff:g> circa"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Fino alle ore <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Estendi la durata della batteria dopo <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Tempo rimanente: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Tempo rimanente: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Tempo rimanente: più di <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Chiedi ogni volta"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Fino alla disattivazione"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Adesso"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Questo dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 8a9a57bac26b..8e775e862eaa 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"‏זמינה דרך %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"יש להקיש כדי להירשם"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"מחובר. אין אינטרנט"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"חיבור מוגבל"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"אין אינטרנט"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"נדרשת כניסה"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"נקודת הגישה מלאה באופן זמני"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"מחובר (ללא מדיה), שיעור הסוללה <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"מחובר (ללא טלפון או מדיה), שיעור הסוללה <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"פעיל, טעינת הסוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"פעיל, שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> סוללה, ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> סוללה"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"טעינת הסוללה: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"שמאל: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> סוללה, ימין: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> סוללה"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"פעיל"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"אודיו של מדיה"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"שיחות טלפון"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"אמורה להחזיק מעמד בערך עד <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"אמורה להחזיק מעמד בערך עד <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"עד <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"הארכת חיי הסוללה מעבר ל-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"נותרו פחות מ-<xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"נותרו פחות מ-<xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"נותרו יותר מ-<xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"שאל בכל פעם"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"עד הכיבוי"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"הרגע"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"המכשיר הזה"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index e773b43e9d95..f163ddc7fa8a 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s経由で使用可能"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"タップして登録してください"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"接続済み、インターネット接続なし"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"接続が制限されています"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"インターネット未接続"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ログインが必要"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"アクセス ポイントが一時的にいっぱいです"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"接続済み(メディアなし)、電池残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>: <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"接続済み(電話、メディアなし)、電池残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>: <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"有効、電池 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"有効、L: 電池残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>、R: 電池残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"電池 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: 電池残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>、R: 電池残量 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"有効"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"メディアの音声"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"電話"</string>
@@ -215,7 +212,7 @@
<string name="oem_unlock_enable" msgid="6040763321967327691">"OEMロック解除"</string>
<string name="oem_unlock_enable_summary" msgid="4720281828891618376">"ブートローダーによるロック解除を許可する"</string>
<string name="confirm_enable_oem_unlock_title" msgid="4802157344812385674">"OEMロック解除の許可"</string>
- <string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"警告: この設定をONにしている場合、この端末では端末保護機能を利用できません。"</string>
+ <string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"警告: この設定をONにしている場合、このデバイスではデバイス保護機能を利用できません。"</string>
<string name="mock_location_app" msgid="7966220972812881854">"仮の現在地情報アプリを選択"</string>
<string name="mock_location_app_not_set" msgid="809543285495344223">"仮の現在地情報アプリが設定されていません"</string>
<string name="mock_location_app_set" msgid="8966420655295102685">"仮の現在地情報アプリ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -253,9 +250,9 @@
<string name="select_logd_size_title" msgid="7433137108348553508">"ログバッファのサイズ"</string>
<string name="select_logd_size_dialog_title" msgid="1206769310236476760">"各ログバッファのログサイズを選択"</string>
<string name="dev_logpersist_clear_warning_title" msgid="684806692440237967">"ログの永続ストレージを消去しますか?"</string>
- <string name="dev_logpersist_clear_warning_message" msgid="2256582531342994562">"Google が常駐ロガーで監視していない場合、端末上のログデータを消去する必要があります。"</string>
- <string name="select_logpersist_title" msgid="7530031344550073166">"ログデータを端末上に永続的に保存"</string>
- <string name="select_logpersist_dialog_title" msgid="4003400579973269060">"端末上に永続的に保存するログバッファを選択"</string>
+ <string name="dev_logpersist_clear_warning_message" msgid="2256582531342994562">"Google が常駐ロガーで監視していない場合、デバイス上のログデータを消去する必要があります。"</string>
+ <string name="select_logpersist_title" msgid="7530031344550073166">"ログデータをデバイス上に永続的に保存"</string>
+ <string name="select_logpersist_dialog_title" msgid="4003400579973269060">"デバイス上に永続的に保存するログバッファを選択"</string>
<string name="select_usb_configuration_title" msgid="2649938511506971843">"USB設定の選択"</string>
<string name="select_usb_configuration_dialog_title" msgid="6385564442851599963">"USB設定の選択"</string>
<string name="allow_mock_location" msgid="2787962564578664888">"擬似ロケーションを許可"</string>
@@ -264,14 +261,14 @@
<string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Wi‑Fiが(ネットワークの自動切り替えで)ONのときでもモバイルデータが常にONになります。"</string>
<string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"テザリング時にハードウェア アクセラレーションを使用します(使用可能な場合)"</string>
<string name="adb_warning_title" msgid="6234463310896563253">"USBデバッグを許可しますか?"</string>
- <string name="adb_warning_message" msgid="7316799925425402244">"USBデバッグは開発専用に設計されています。パソコンと端末の間でデータをコピーする場合や、アプリを通知なしで端末にインストールする場合、ログデータを読み取る場合に使用できます。"</string>
+ <string name="adb_warning_message" msgid="7316799925425402244">"USBデバッグは開発専用に設計されています。パソコンとデバイスの間でデータをコピーする場合や、アプリを通知なしでデバイスにインストールする場合、ログデータを読み取る場合に使用できます。"</string>
<string name="adb_keys_warning_message" msgid="5659849457135841625">"以前に許可したすべてのパソコンからのUSBデバッグへのアクセスを取り消しますか?"</string>
<string name="dev_settings_warning_title" msgid="7244607768088540165">"開発用の設定を許可しますか?"</string>
- <string name="dev_settings_warning_message" msgid="2298337781139097964">"これらの設定は開発専用に設計されています。そのため端末や端末上のアプリが故障したり正常に動作しなくなったりするおそれがあります。"</string>
+ <string name="dev_settings_warning_message" msgid="2298337781139097964">"これらの設定は開発専用に設計されています。そのためデバイスやデバイス上のアプリが故障したり正常に動作しなくなったりするおそれがあります。"</string>
<string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB経由のアプリを確認"</string>
<string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"ADB/ADT経由でインストールされたアプリに不正な動作がないかを確認する"</string>
<string name="bluetooth_show_devices_without_names_summary" msgid="2351196058115755520">"Bluetooth デバイスを名前なしで(MAC アドレスのみで)表示します"</string>
- <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"リモート端末で音量に関する問題(音量が大きすぎる、制御できないなど)が発生した場合に、Bluetooth の絶対音量の機能を無効にする"</string>
+ <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"リモートデバイスで音量に関する問題(音量が大きすぎる、制御できないなど)が発生した場合に、Bluetooth の絶対音量の機能を無効にする"</string>
<string name="enable_terminal_title" msgid="95572094356054120">"ローカルターミナル"</string>
<string name="enable_terminal_summary" msgid="67667852659359206">"ローカルシェルアクセスを提供するターミナルアプリを有効にします"</string>
<string name="hdcp_checking_title" msgid="8605478913544273282">"HDCPチェック"</string>
@@ -300,7 +297,7 @@
<string name="show_hw_screen_updates" msgid="4117270979975470789">"画面の更新を表示"</string>
<string name="show_hw_screen_updates_summary" msgid="6506943466625875655">"描画時にウィンドウ内の表示を点滅させる"</string>
<string name="show_hw_layers_updates" msgid="5645728765605699821">"ハードウェア層情報を表示"</string>
- <string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"ハードウェア層が更新されると緑を表示する"</string>
+ <string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"ハードウェア層が更新されると緑色に点滅する"</string>
<string name="debug_hw_overdraw" msgid="2968692419951565417">"GPUオーバードローをデバッグ"</string>
<string name="disable_overlays" msgid="2074488440505934665">"HWオーバーレイを無効"</string>
<string name="disable_overlays_summary" msgid="3578941133710758592">"画面合成に常にGPUを使用する"</string>
@@ -335,7 +332,7 @@
<string name="force_resizable_activities" msgid="8615764378147824985">"アクティビティをサイズ変更可能にする"</string>
<string name="force_resizable_activities_summary" msgid="6667493494706124459">"マニフェストの値に関係なく、マルチウィンドウですべてのアクティビティのサイズを変更できるようにします。"</string>
<string name="enable_freeform_support" msgid="1461893351278940416">"フリーフォーム ウィンドウの有効化"</string>
- <string name="enable_freeform_support_summary" msgid="8247310463288834487">"外部のフリーフォーム ウィンドウのサポートを有効にします。"</string>
+ <string name="enable_freeform_support_summary" msgid="8247310463288834487">"試験運用機能のフリーフォーム ウィンドウのサポートを有効にします。"</string>
<string name="local_backup_password_title" msgid="3860471654439418822">"PCバックアップパスワード"</string>
<string name="local_backup_password_summary_none" msgid="6951095485537767956">"デスクトップのフルバックアップは現在保護されていません"</string>
<string name="local_backup_password_summary_change" msgid="5376206246809190364">"デスクトップのフルバックアップ用のパスワードを変更または削除する場合にタップします"</string>
@@ -390,18 +387,17 @@
<string name="power_discharge_by" msgid="6453537733650125582">"電池切れの推定時間: <xliff:g id="TIME">%1$s</xliff:g>(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"電池切れの推定時間: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> まで"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g>まで電池消費量を抑える"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"残り時間: <xliff:g id="THRESHOLD">%1$s</xliff:g>未満"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"残り時間: <xliff:g id="THRESHOLD">%1$s</xliff:g>未満(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"残り時間: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>以上(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_only_more_than_subtext" msgid="8931654680569617380">"残り時間: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>以上"</string>
<string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="1181059207608751924">"スマートフォンの電源がもうすぐ切れます"</string>
<string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="2606370266981054691">"タブレットの電源がもうすぐ切れます"</string>
- <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="2918084807716859985">"端末の電源がもうすぐ切れます"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="2918084807716859985">"デバイスの電源がもうすぐ切れます"</string>
<string name="power_remaining_duration_shutdown_imminent" product="default" msgid="3090926004324573908">"スマートフォンの電源がもうすぐ切れます(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7466484148515796216">"タブレットの電源がもうすぐ切れます(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
- <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="603933521600231649">"端末の電源がもうすぐ切れます(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="603933521600231649">"デバイスの電源がもうすぐ切れます(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_charging" msgid="1779532561355864267">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"フル充電まであと <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - フル充電まで <xliff:g id="TIME">%2$s</xliff:g>"</string>
@@ -445,8 +441,8 @@
<string name="status_unavailable" msgid="7862009036663793314">"不明"</string>
<string name="wifi_status_mac_randomized" msgid="5589328382467438245">"MAC はランダムに設定されます"</string>
<plurals name="wifi_tether_connected_summary" formatted="false" msgid="3871603864314407780">
- <item quantity="other">%1$d 台の端末が接続されています</item>
- <item quantity="one">%1$d 台の端末が接続されています</item>
+ <item quantity="other">%1$d 台のデバイスが接続されています</item>
+ <item quantity="one">%1$d 台のデバイスが接続されています</item>
</plurals>
<string name="accessibility_manual_zen_more_time" msgid="1636187409258564291">"長くします。"</string>
<string name="accessibility_manual_zen_less_time" msgid="6590887204171164991">"短くします。"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"毎回確認"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"OFF にするまで"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"たった今"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"このデバイス"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index e3f7a5f5e6c2..23cdb84d277a 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"ხელმისაწვდომია %1$s-ით"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"შეეხეთ რეგისტრაციისთვის"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"დაკავშირებულია, ინტერნეტის გარეშე"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"შეზღუდული კავშირი"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ინტერნეტ-კავშირი არ არის"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"აუცილებელია სისტემაში შესვლა"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"წვდომის წერტილი დროებით გადატვირთულია"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"დაკავშირებულია (მედია არ არის). ბატარეა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"დაკავშირებულია (ტელეფონი ან მედია არ არის). ბატარეის დონე: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"აქტიურია, ბატარეა <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>-ს შეადგენს"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"აქტიური, მარცხენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ბატარეა, მარჯვენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ბატარეა"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ბატარეა"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"მარცხენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ბატარეა, მარჯვენა: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ბატარეა"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"აქტიური"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"მედია აუდიო"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"სატელეფონო ზარები"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"უნდა იმუშაოს დაახლოებით <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"უნდა იმუშაოს დაახლოებით <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g>-მდე"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ბატარეის მუშაობის გახანგრძლივება <xliff:g id="TIME">%1$s</xliff:g>-ის შემდეგ"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"დარჩენილია <xliff:g id="THRESHOLD">%1$s</xliff:g>-ზე ნაკლები"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"დარჩენილია <xliff:g id="THRESHOLD">%1$s</xliff:g>-ზე ნაკლები დრო (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"დარჩენილია <xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ზე მეტი დრო (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ყოველთვის მკითხეთ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"გამორთვამდე"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ახლახან"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ეს მოწყობილობა"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 5ae32cd3fdeb..7c52ba38a1d5 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s арқылы қолжетімді"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Тіркелу үшін түртіңіз."</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Қосылған, интернет жоқ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Шектеулі байланыс"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Интернетпен байланыс жоқ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Есептік жазбаға кіру керек"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Кіру нүктесі уақытша бос емес"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Жалғанды (аудиосыз), батарея заряды: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Жалғанды (телефонсыз не аудиосыз), батарея заряды: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Қосулы, батарея қуаты: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Қосулы, С: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батарея, О: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батарея"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Батарея қуаты: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"С: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батарея, О: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батарея"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Қосулы"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Meдиа аудиосы"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Телефон қоңыраулары"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Шамамен <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) уақытқа жетеді"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Шамамен <xliff:g id="TIME">%1$s</xliff:g> уақытқа жетеді"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> дейін"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g> кейін батарея жұмысының ұзақтығын арттыру"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> шамасынан аз қалды"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> шамасынан аз қалды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> шамасынан көп уақыт қалды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Әрдайым сұрау"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Өшірілгенге дейін"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Дәл қазір"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Осы құрылғы"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 6c83ec2a498c..72b43df42d1e 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"មានតាមរយៈ %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ចុច​ដើម្បី​ចុះឈ្មោះ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"បាន​ភ្ជាប់ ប៉ុន្តែ​គ្មាន​អ៊ីនធឺណិត​ទេ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ការតភ្ជាប់មានកម្រិត"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"គ្មាន​អ៊ីនធឺណិតទេ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"តម្រូវ​ឱ្យ​ចូល​គណនី"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ចំណុចចូលប្រើពេញជាបណ្តោះអាសន្ន"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"បាន​ភ្ជាប់ (គ្មាន​មេឌៀ​ទេ) ហើយ​ថ្ម​មាន​កម្រិត <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"បាន​ភ្ជាប់ (គ្មាន​ទូរសព្ទ ឬ​មេឌៀ​ទេ) ហើយ​ថ្ម​មាន​កម្រិត <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"សកម្ម ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"សកម្ម, L៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R៖ ថ្ម <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"សកម្ម"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"សំឡេង​មេឌៀ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ការហៅ​ទូរសព្ទ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"គួរ​តែ​អាច​ប្រើបាន​រហូតដល់​ម៉ោងប្រហែល <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"គួរ​តែ​អាច​ប្រើបាន​រហូតដល់​ម៉ោងប្រហែល <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"រហូតដល់​ម៉ោង <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"បង្កើន​ថាមពលថ្ម​របស់អ្នកឱ្យប្រើបាន​លើសពី​ម៉ោង <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"នៅ​សល់​តិច​ជាង <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"នៅសល់​តិចជាង <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"នៅសល់​ច្រើនជាង <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"សួរគ្រប់ពេល"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"រហូតទាល់តែ​អ្នកបិទ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"អម្បាញ់មិញ"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ឧបករណ៍នេះ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index c879be5215d6..2b83f83f815f 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ಸೈನ್ ಅಪ್ ಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ಸೀಮಿತ ಸಂಪರ್ಕ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ಸೈನ್ ಇನ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ಪ್ರವೇಶ ಕೇಂದ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ಭರ್ತಿಯಾಗಿದೆ"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"ಸಂಪರ್ಕಗೊಂಡಿದೆ (ಮಾಧ್ಯಮವಿಲ್ಲ), ಬ್ಯಾಟರಿ ಚಾರ್ಜ್‌ ಮಟ್ಟ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"ಸಂಪರ್ಕಗೊಂಡಿದೆ (ಫೋನ್ ಅಥವಾ ಮಾಧ್ಯಮವಿಲ್ಲ), ಬ್ಯಾಟರಿ ಚಾರ್ಜ್‌ ಮಟ್ಟ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ಸಕ್ರಿಯ, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ಸಕ್ರಿಯ, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ಬ್ಯಾಟರಿ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ಬ್ಯಾಟರಿ"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ಬ್ಯಾಟರಿ"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ಬ್ಯಾಟರಿ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ಬ್ಯಾಟರಿ"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ಸಕ್ರಿಯ"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ಮಾಧ್ಯಮ ಆಡಿಯೋ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ಫೋನ್ ಕರೆಗಳು"</string>
@@ -223,7 +220,7 @@
<string name="wifi_display_certification" msgid="8611569543791307533">"ವೈರ್‌ಲೆಸ್ ಪ್ರದರ್ಶನ ಪ್ರಮಾಣೀಕರಣ"</string>
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi ವೆರ್ಬೋಸ್ ಲಾಗಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="mobile_data_always_on" msgid="8774857027458200434">"ಮೊಬೈಲ್ ಡೇಟಾ ಯಾವಾಗಲೂ ಸಕ್ರಿಯ"</string>
- <string name="tethering_hardware_offload" msgid="7470077827090325814">"ಹಾರ್ಡ್‌ವೇರ್‌ನ ವೇಗವರ್ಧನೆಯನ್ನು ಟೆಥರಿಂಗ್ ಮಾಡಿ"</string>
+ <string name="tethering_hardware_offload" msgid="7470077827090325814">"ಟೆಥರಿಂಗ್‍‍ಗಾಗಿ ಹಾರ್ಡ್‍ವೇರ್ ವೇಗವರ್ಧನೆ"</string>
<string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"ಹೆಸರುಗಳಿಲ್ಲದ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ತೋರಿಸಿ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ಸಂಪೂರ್ಣ ವಾಲ್ಯೂಮ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="3750059931120293633">"ಬ್ಲೂಟೂತ್ AVRCP ಆವೃತ್ತಿ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) ಸಮಯದವರೆಗೆ ಫೋನ್‌ ರನ್‌ ಆಗಬೇಕು"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"<xliff:g id="TIME">%1$s</xliff:g> ಸಮಯದವರೆಗೆ ಫೋನ್‌ ರನ್‌ ಆಗಬೇಕು"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> ರವರೆಗೆ"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ಬ್ಯಾಟರಿ ಬಾಳಿಕೆಯನ್ನು <xliff:g id="TIME">%1$s</xliff:g> ಮೊದಲೇ ವಿಸ್ತರಿಸಿ"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ನಿಮಿಷಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯ ಉಳಿದಿದೆ"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ಕ್ಕಿಂತ ಕಡಿಮೆ (<xliff:g id="LEVEL">%2$s</xliff:g>) ಬಾಕಿ"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ಕ್ಕಿಂತ ಹೆಚ್ಚು (<xliff:g id="LEVEL">%2$s</xliff:g>) ಬಾಕಿ"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"ನೀವು ಆಫ್ ಮಾಡುವವರೆಗೆ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ಇದೀಗ"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ಈ ಸಾಧನ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 739212fb5b42..b000b69c2e80 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s을(를) 통해 사용 가능"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"탭하여 가입"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"연결됨, 인터넷 사용 불가"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"제한된 연결"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"인터넷 연결 없음"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"로그인 필요"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"액세스 포인트가 일시적으로 가득 참"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"연결됨(미디어 없음), 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"연결됨(전화 또는 미디어 없음), 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"활성, 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"활성, 왼쪽: 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, 오른쪽: 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"왼쪽: 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, 오른쪽: 배터리 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"활성"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"미디어 오디오"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"전화 통화"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"약 <xliff:g id="TIME">%1$s</xliff:g>까지 사용 가능(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"약 <xliff:g id="TIME">%1$s</xliff:g>까지 사용 가능"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g>까지"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g> 이후 배터리 수명 연장"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> 미만 남음"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> 미만 남음(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> 이상 남음(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"항상 확인"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"사용 중지할 때까지"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"조금 전"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"이 기기"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index b898725421e7..b897e1efb372 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s аркылуу жеткиликтүү"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Катталуу үчүн таптап коюңуз"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Туташып турат, Интернет жок"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Байланыш чектелген"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Интернет жок"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Аккаунтка кирүү талап кылынат"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Байланыш түйүнүнө өтө көп түзмөк туташып турат"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Туташып турат (медиасыз), батареянын деңгээли – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Туташып турат (телефониясыз же медиасыз), батареянын деңгээли – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Жигердүү, батареянын деңгээли: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Активдүү, сол: Батареянын деңгээли <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, оң: Батареянын деңгээли <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Батареянын деңгээли: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Сол: Батареянын деңгээли <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, оң: Батареянын деңгээли <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Жигердүү"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Аудио"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Телефон чалуулар"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Болжол менен <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) кийин өчөт"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Болжол менен <xliff:g id="TIME">%1$s</xliff:g> кийин өчөт"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> чейин"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Батареянын кубатынын мөөнөтүн узартуудан <xliff:g id="TIME">%1$s</xliff:g> өттү"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> жетпеген убакыт калды"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> жетпеген убакыт калды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ашыгыраак убакыт калды (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Ар дайым суралсын"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Бул функция өчүрүлгөнгө чейин"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Азыр эле"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ушул түзмөк"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 1fbb2a4a748d..2399e71ef055 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"ມີ​ໃຫ້​ຜ່ານ %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ແຕະເພື່ອສະໝັກ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ເຊື່ອມຕໍ່ແລ້ວ, ບໍ່ມີອິນເຕີເນັດ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ການເຊື່ອມຕໍ່ຈຳກັດ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ບໍ່ມີອິນເຕີເນັດ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ຈຳເປັນຕ້ອງເຂົ້າສູ່ລະບົບ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ຈຸດການເຂົ້າເຖິງເຕັມຊົ່ວຄາວ"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"ເຊື່ອມຕໍ່ແລ້ວ (ບໍ່ມີມີເດຍ), ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"ເຊື່ອມຕໍ່ແລ້ວ (ບໍ່ມີໂທລະສັບ ຫຼື ມີເດຍ), ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ເປີດໃຊ້ຢູ່, ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ເປີດໃຊ້, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ແບັດເຕີຣີ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ແບັດເຕີຣີ"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"ແບັດເຕີຣີ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ແບັດເຕີຣີ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ແບັດເຕີຣີ"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ອອນລາຍ"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ສຽງ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ການໂທ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Should last until about <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Should last until about <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"ຈົນກວ່າຈະຮອດ <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ຂະຫຍາຍອາຍຸແບັດເຕີຣີກາຍ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"ຍັງເຫຼືອໜ້ອຍກວ່າ <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"ຍັງເຫຼືອໜ້ອຍກວ່າ <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"ຍັງເຫຼືອຫຼາຍກວ່າ <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ຖາມທຸກເທື່ອ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"ຈົນກວ່າທ່ານຈະປິດ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ຕອນນີ້"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ອຸປະກອນນີ້"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index c289c938477a..6cfa10c87663 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Pasiekiama naudojant „%1$s“"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Palieskite, kad prisiregistruotumėte"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Prisijungta, nėra interneto"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ribotas ryšys"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nėra interneto ryšio"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Reikia prisijungti"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Prieigos taškas laikinai visiškai užimtas"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Prisijungta (<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>), (medijos nėra), akumuliatoriaus įkrovos lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Prisijungta (<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>), (telefono ar medijos nėra), akumuliatoriaus įkrovos lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktyvus, akumuliatoriaus įkrova: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktyvi, KAIRĖ: akumuliatoriaus lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, DEŠINĖ: akumuliatoriaus lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Akumuliatoriaus įkrova: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"KAIRĖ: akumuliatoriaus lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, DEŠINĖ: akumuliatoriaus lygis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktyvus"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Laikmenos garsas"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefono skambučiai"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Turėtų išsikrauti maždaug po <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Turėtų išsikrauti maždaug po <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Iki <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Pailginti akumuliatoriaus veikimo laiką po <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Liko mažiau nei <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Liko mažiau nei <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Liko daugiau nei <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Klausti kaskart"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Kol išjungsite"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Ką tik"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Šis įrenginys"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index f01f9931f577..aac58d1dec74 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Pieejams, izmantojot %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Pieskarieties, lai reģistrētos"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Savienojums izveidots, nav piekļuves internetam"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ierobežots savienojums"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nav piekļuves internetam"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Nepieciešama pierakstīšanās"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Piekļuves punkts īslaicīgi ir pilns"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Savienojums izveidots (<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>) (nav multivide), akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Savienojums izveidots (nav tālrunis vai multivide) (<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>), akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktīvs, akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktīvs, L: akumulatora uzlādes līmenis <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: akumulatora uzlādes līmenis <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Akumulatora uzlādes līmenis: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: akumulatora uzlādes līmenis <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: akumulatora uzlādes līmenis <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktīvs"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Multivides audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Tālruņa zvani"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Darbosies aptuveni līdz <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Darbosies aptuveni līdz <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Līdz <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Palielināt akumulatora darbības ilgumu, lai ierīce turpinātu darboties pēc <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Atlikušais laiks — mazāk nekā <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Atlicis mazāk nekā <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Atlicis vairāk nekā <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -466,6 +462,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vaicāt katru reizi"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Līdz brīdim, kad izslēgsiet"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Tikko"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Šī ierīce"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 1e2d844c3f5c..560843c90609 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Достапно преку %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Допрете за да се регистрирате"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Поврзана, нема интернет"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ограничена врска"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Нема интернет"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Потребно е најавување"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Пристапната точка привремено е преоптоварена"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Поврзан со <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (без аудиовизуелни содржини), ниво на батеријата <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Поврзан со <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (без телефон и аудиовизуелни содржини), ниво на батеријата <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Активен, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Активен, Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерија, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерија"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> батерија"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерија, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерија"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Активен"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Аудио на медиуми"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Телефонски повици"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Треба да трае до околу <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Треба да трае до околу <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"До <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Продолжи го траењето на батеријата после <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Уште помалку од <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Уште помалку од <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Уште повеќе од <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Секогаш прашувај"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Додека не го исклучите"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Неодамнешни"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Овој уред"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml
index 6444b30d2ff7..596408297396 100644
--- a/packages/SettingsLib/res/values-ml/arrays.xml
+++ b/packages/SettingsLib/res/values-ml/arrays.xml
@@ -254,7 +254,7 @@
<item msgid="7899496259191969307">"പരമാവധി 4 പ്രോസ‌സ്സുകൾ"</item>
</string-array>
<string-array name="usb_configuration_titles">
- <item msgid="488237561639712799">"ചാർജ്ജുചെയ്യുന്നു"</item>
+ <item msgid="488237561639712799">"ചാർജ് ചെയ്യുന്നു"</item>
<item msgid="5220695614993094977">"MTP (മീഡിയ ട്രാൻസ്‌ഫർ പ്രോട്ടോക്കോള്‍)"</item>
<item msgid="2086000968159047375">"PTP (പിക്‌ചർ ട്രാൻസ്‌ഫർ പ്രോട്ടോക്കോള്‍)"</item>
<item msgid="7398830860950841822">"RNDIS (USB ഇതർനെറ്റ്)"</item>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 7ff715c28308..af0b773f51a8 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s വഴി ലഭ്യം"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"സൈൻ അപ്പ് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"കണക്റ്റ് ചെയ്‌തു, ഇന്റർനെറ്റ് ഇല്ല"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"പരിമിത കണക്‌ഷൻ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ഇന്റർനെറ്റ് ഇല്ല"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"സൈൻ ഇൻ ചെയ്യേണ്ടത് ആവശ്യമാണ്"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ആക്‌സസ് പോയിന്റ് താൽക്കാലികമായി നിറഞ്ഞിരിക്കുന്നു"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"കണക്റ്റ് ചെയ്‌തു (മീഡിയ ഇല്ല), ബാറ്ററി <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"കണ‌ക്റ്റ് ചെയ്‌തു (ഫോണോ മീഡിയയോ ഇല്ല), ബാറ്ററി നില <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"സജീവം, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"സജീവം, ഇടത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ബാറ്ററി, വലത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ബാറ്ററി"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ബാറ്ററി"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"ഇടത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ബാറ്ററി, വലത്ത്: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ബാറ്ററി"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"സജീവം"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"മീഡിയ ഓഡിയോ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ഫോണ്‍‌ കോളുകൾ"</string>
@@ -156,7 +153,7 @@
<string name="launch_defaults_none" msgid="4241129108140034876">"സ്ഥിരമായൊന്നും സജ്ജീകരിച്ചിട്ടില്ല"</string>
<string name="tts_settings" msgid="8186971894801348327">"ടെക്‌സ്റ്റ്-ടു-സ്‌പീച്ച് ക്രമീകരണങ്ങൾ"</string>
<string name="tts_settings_title" msgid="1237820681016639683">"ടെക്‌സ്റ്റ്-ടു-സ്‌പീച്ച് ഔട്ട്‌പുട്ട്"</string>
- <string name="tts_default_rate_title" msgid="6030550998379310088">"വായന നിരക്ക്"</string>
+ <string name="tts_default_rate_title" msgid="6030550998379310088">"വായനാ നിരക്ക്"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"ടെക്സ്റ്റ് ചെയ്യൽ പറയുമ്പോഴുടെക്കുന്ന വേഗത"</string>
<string name="tts_default_pitch_title" msgid="6135942113172488671">"പിച്ച്"</string>
<string name="tts_default_pitch_summary" msgid="1944885882882650009">"സിന്തസൈസ് ചെയ്ത സംസാരത്തിന്റെ സ്വരഭേദത്തെ ബാധിക്കുന്നു"</string>
@@ -212,7 +209,7 @@
<string name="keep_screen_on_summary" msgid="2173114350754293009">"ചാർജ്ജ് ചെയ്യുമ്പോൾ സ്‌ക്രീൻ ഒരിക്കലും ഉറങ്ങില്ല"</string>
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"ബ്ലൂടൂത്ത് HCI സ്‌നൂപ്പ് ലോഗ് സജീവമാക്കൂ"</string>
<string name="bt_hci_snoop_log_summary" msgid="8857606786588106495">"Bluetooth പായ്ക്കറ്റുകൾ ക്യാപ്‌ചർ ചെയ്യുക. (ഈ ക്രമീകരണം മാറ്റിയ ശേഷം Bluetooth മാറ്റുക)"</string>
- <string name="oem_unlock_enable" msgid="6040763321967327691">"OEM അൺലോക്കുചെയ്യൽ"</string>
+ <string name="oem_unlock_enable" msgid="6040763321967327691">"OEM അൺലോക്ക് ചെയ്യൽ"</string>
<string name="oem_unlock_enable_summary" msgid="4720281828891618376">"അൺലോക്കാകാൻ ബൂട്ട്‌ലോഡറിനെ അനുവദിക്കുക"</string>
<string name="confirm_enable_oem_unlock_title" msgid="4802157344812385674">"OEM അൺലോക്കുചെയ്യൽ അനുവദിക്കണോ?"</string>
<string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"മുന്നറിയിപ്പ്: ഈ ക്രമീകരണം ഓണായിരിക്കുമ്പോൾ, ഉപകരണ സുരക്ഷാ ഫീച്ചറുകൾ ഈ ഉപകരണത്തിൽ പ്രവർത്തിക്കില്ല."</string>
@@ -268,8 +265,8 @@
<string name="adb_keys_warning_message" msgid="5659849457135841625">"നിങ്ങൾ മുമ്പ് അംഗീകരിച്ച എല്ലാ കമ്പ്യൂട്ടറുകളിൽ നിന്നും USB ഡീബഗ്ഗുചെയ്യുന്നതിനുള്ള ആക്‌സസ്സ് പിൻവലിക്കണോ?"</string>
<string name="dev_settings_warning_title" msgid="7244607768088540165">"വികസന ക്രമീകരണങ്ങൾ അനുവദിക്കണോ?"</string>
<string name="dev_settings_warning_message" msgid="2298337781139097964">"ഈ ക്രമീകരണങ്ങൾ വികസന ഉപയോഗത്തിന് മാത്രമായുള്ളതാണ്. അവ നിങ്ങളുടെ ഉപകരണവും അതിലെ അപ്ലിക്കേഷനുകളും തകരാറിലാക്കുന്നതിനോ തെറ്റായി പ്രവർത്തിക്കുന്നതിനോ ഇടയാക്കാം."</string>
- <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB വഴി ആപ്സ് പരിശോധിച്ചുറപ്പിക്കൂ"</string>
- <string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"കേടാക്കുന്ന പ്രവർത്തനരീതിയുള്ള ADB/ADT വഴി ഇൻസ്റ്റാളുചെയ്‌ത അപ്ലിക്കേഷനുകൾ പരിശോധിക്കുക."</string>
+ <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB വഴി ആപ്പ് പരിശോധിച്ചുറപ്പിക്കൂ"</string>
+ <string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"ADB/ADT വഴി ഇൻസ്റ്റാൾ ചെയ്‌ത കേടാക്കുന്ന പ്രവർത്തനരീതിയുള്ള ആപ്പുകൾ പരിശോധിക്കുക."</string>
<string name="bluetooth_show_devices_without_names_summary" msgid="2351196058115755520">"പേരില്ലാത്ത Bluetooth ഉപകരണങ്ങൾ (MAC വിലാസങ്ങൾ മാത്രം) പ്രദർശിപ്പിക്കും"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"അസ്വീകാര്യമായ തരത്തിൽ ഉയർന്ന വോളിയമോ ശബ്ദ നിയന്ത്രണത്തിന്റെ അഭാവമോ പോലെ, വിദൂര ഉപകരണങ്ങളുമായി ബന്ധപ്പെട്ട വോളിയം പ്രശ്നങ്ങൾ ഉണ്ടാകുന്ന സാഹചര്യത്തിൽ, Bluetooth അബ്‌സൊല്യൂട്ട് വോളിയം ഫീച്ചർ പ്രവർത്തനരഹിതമാക്കുന്നു."</string>
<string name="enable_terminal_title" msgid="95572094356054120">"പ്രാദേശിക ടെർമിനൽ"</string>
@@ -277,7 +274,7 @@
<string name="hdcp_checking_title" msgid="8605478913544273282">"HDCP പരിശോധന"</string>
<string name="hdcp_checking_dialog_title" msgid="5141305530923283">"HDCP ചെക്കിംഗ്‌രീതി സജ്ജമാക്കുക"</string>
<string name="debug_debugging_category" msgid="6781250159513471316">"ഡീബഗ് ചെയ്യുന്നു"</string>
- <string name="debug_app" msgid="8349591734751384446">"ഡീബഗ് അപ്ലിക്കേഷൻ തിരഞ്ഞെടുക്കുക"</string>
+ <string name="debug_app" msgid="8349591734751384446">"ഡീബഗ് ആപ്പ് തിരഞ്ഞെടുക്കുക"</string>
<string name="debug_app_not_set" msgid="718752499586403499">"ഡീബഗ് അപ്ലിക്കേഷനുകളൊന്നും സജ്ജമാക്കിയിട്ടില്ല"</string>
<string name="debug_app_set" msgid="2063077997870280017">"ഡീബഗ്ഗുചെയ്യൽ അപ്ലിക്കേഷൻ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="select_application" msgid="5156029161289091703">"ആപ്പ് തിരഞ്ഞെടുക്കൂ"</string>
@@ -296,24 +293,24 @@
<string name="show_touches" msgid="2642976305235070316">"ടാപ്പുകൾ കാണിക്കുക"</string>
<string name="show_touches_summary" msgid="6101183132903926324">"ടാപ്പുകൾക്ക് ദൃശ്യ ഫീഡ്ബാക്ക് കാണിക്കുക"</string>
<string name="show_screen_updates" msgid="5470814345876056420">"സർഫേസ് അപ്‌ഡേറ്റ് കാണിക്കൂ"</string>
- <string name="show_screen_updates_summary" msgid="2569622766672785529">"മുഴുവൻ വിൻഡോ സർഫേസുകളും അപ്‌ഡേറ്റുചെയ്‌തുകഴിയുമ്പോൾ അവ ഫ്ലാഷുചെയ്യുക"</string>
+ <string name="show_screen_updates_summary" msgid="2569622766672785529">"അപ്‍ഡേറ്റ് പൂർത്തിയാകുമ്പോൾ മുഴുവൻ വിൻഡോ സർഫേസുകളും ഫ്ലാഷ് ചെയ്യുക"</string>
<string name="show_hw_screen_updates" msgid="4117270979975470789">"\'അപ്‌ഡേറ്റുകൾ കാണുക\' കാണിക്കുക"</string>
<string name="show_hw_screen_updates_summary" msgid="6506943466625875655">"വലിക്കുമ്പോൾ വിൻഡോകൾക്കുള്ളിൽ കാഴ്‌ചകൾ ഫ്ലാഷ് ചെയ്യുക"</string>
<string name="show_hw_layers_updates" msgid="5645728765605699821">"ഹാർഡ്‌വെയർ ലേയർ അപ്‌ഡേറ്റ് കാണിക്കൂ"</string>
<string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"ഹാർഡ്‌വെയർ ലേയറുകളുടെ അപ്‌ഡേറ്റുകൾ പൂർത്തിയാകുമ്പോൾ അവ പച്ച നിറത്തിൽ പ്രകാശിപ്പിക്കുക"</string>
- <string name="debug_hw_overdraw" msgid="2968692419951565417">"GPU ഓവർഡ്രോ ഡീബഗ്ഗുചെയ്യുക"</string>
+ <string name="debug_hw_overdraw" msgid="2968692419951565417">"GPU ഓവർഡ്രോ ഡീബഗ്ഗ് ചെയ്യുക"</string>
<string name="disable_overlays" msgid="2074488440505934665">"HW ഓവർലേ നിഷ്ക്രിയമാക്കൂ"</string>
- <string name="disable_overlays_summary" msgid="3578941133710758592">"സ്‌ക്രീൻ കമ്പോസിറ്റുചെയ്യലിനായി എല്ലായ്‌പ്പോഴും GPU ഉപയോഗിക്കുക"</string>
+ <string name="disable_overlays_summary" msgid="3578941133710758592">"സ്‌ക്രീൻ കമ്പോസിറ്റ് ചെയ്യലിനായി GPU ഉപയോഗിക്കൂ"</string>
<string name="simulate_color_space" msgid="6745847141353345872">"വർണ്ണ സ്‌പെയ്‌സ് പ്രവർത്തിപ്പിക്കുക"</string>
<string name="enable_opengl_traces_title" msgid="6790444011053219871">"OpenGL ട്രെയ്‌സ് സജീവമാക്കൂ"</string>
<string name="usb_audio_disable_routing" msgid="8114498436003102671">"USB ഓഡിയോ റൂട്ടിംഗ് പ്രവർത്തനരഹിതമാക്കുക"</string>
- <string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"USB ഓഡിയോ പെരിഫറലുകളിലേക്കുള്ള യാന്ത്രിക റൂട്ടിംഗ് പ്രവർത്തനരഹിതമാക്കുക"</string>
+ <string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"USB ഓഡിയോ പെരിഫറലിലേക്ക് സ്വയമേവയുള്ള റൂട്ടിംഗ് പ്രവർത്തനരഹിതമാക്കൂ"</string>
<string name="debug_layout" msgid="5981361776594526155">"ലേഔട്ട് ബൗണ്ട് കാണിക്കൂ"</string>
<string name="debug_layout_summary" msgid="2001775315258637682">"ക്ലിപ്പ് ബൗണ്ടുകൾ, മാർജിനുകൾ തുടങ്ങിയവ ദൃശ്യമാക്കുക"</string>
<string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"RTL ലേഔട്ട് ഡയറക്ഷൻ നിർബന്ധമാക്കുക"</string>
<string name="force_rtl_layout_all_locales_summary" msgid="9192797796616132534">"എല്ലാ ഭാഷകൾക്കുമായി സ്‌ക്രീൻ ലേഔട്ട് ഡയറക്ഷൻ RTL-ലേക്ക് നിർബന്ധമാക്കുക"</string>
<string name="force_msaa" msgid="7920323238677284387">"4x MSAA നിർബന്ധമാക്കുക"</string>
- <string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 അപ്ലിക്കേഷനുകളിൽ 4x MSAA പ്രവർത്തനക്ഷമമാക്കുക"</string>
+ <string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 ആപ്പുകളിൽ 4x MSAA പ്രവർത്തനക്ഷമമാക്കൂ"</string>
<string name="show_non_rect_clip" msgid="505954950474595172">"ചതുരാകൃതിയിലല്ലാത്ത ക്ലിപ്പ്‌പ്രവർത്തനം ഡീബഗുചെയ്യൂ"</string>
<string name="track_frame_time" msgid="6094365083096851167">"HWUI റെൻഡറിംഗ് പ്രൊഫൈൽ"</string>
<string name="enable_gpu_debug_layers" msgid="3848838293793255097">"GPU ഡീബഗ് ലെയറുകൾ പ്രവർത്തനക്ഷമമാക്കൂ"</string>
@@ -325,7 +322,7 @@
<string name="debug_applications_category" msgid="4206913653849771549">"അപ്ലിക്കേഷനുകൾ"</string>
<string name="immediately_destroy_activities" msgid="1579659389568133959">"പ്രവർത്തനങ്ങൾ സൂക്ഷിക്കരുത്"</string>
<string name="immediately_destroy_activities_summary" msgid="3592221124808773368">"ഉപയോക്താവ് ഉപേക്ഷിക്കുന്നതിനനുസരിച്ച് എല്ലാ പ്രവർത്തനങ്ങളും നശിപ്പിക്കുക"</string>
- <string name="app_process_limit_title" msgid="4280600650253107163">"പശ്ചാത്തല പ്രോസ‌സ്സ് പരിധി"</string>
+ <string name="app_process_limit_title" msgid="4280600650253107163">"പശ്ചാത്തല പ്രോസ‌സ് പരിധി"</string>
<string name="show_all_anrs" msgid="4924885492787069007">"പശ്ചാത്തല ANR-കൾ കാണിക്കുക"</string>
<string name="show_all_anrs_summary" msgid="6636514318275139826">"പ‌ശ്ചാത്തല ആപ്പുകൾക്കായി \'ആപ്പ് പ്രതികരിക്കുന്നില്ല\' ഡയലോഗ് പ്രദര്‍ശിപ്പിക്കുക"</string>
<string name="show_notification_channel_warnings" msgid="1399948193466922683">"ചാനൽ മുന്നറിയിപ്പ് കാണിക്കൂ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"ഏകദേശം <xliff:g id="TIME">%1$s</xliff:g> വരെ നീണ്ടുനിൽക്കേണ്ടതാണ് (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"ഏകദേശം <xliff:g id="TIME">%1$s</xliff:g> വരെ നീണ്ടുനിൽക്കേണ്ടതാണ്"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> വരെ"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ബാറ്ററി ലൈഫ് <xliff:g id="TIME">%1$s</xliff:g>-ൽ കൂടുതൽ വർദ്ധിപ്പിക്കുക"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-ൽ കുറവ് സമയം ശേഷിക്കുന്നു"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-ൽ കുറവ് സമയം ശേഷിക്കുന്നു (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ൽ കൂടുതൽ സമയം ശേഷിക്കുന്നു (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -406,7 +402,7 @@
<string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"മുഴുവൻ ചാർജാകാൻ <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string>
<string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - ഫുൾ ചാർജാകാൻ <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="battery_info_status_unknown" msgid="196130600938058547">"അജ്ഞാതം"</string>
- <string name="battery_info_status_charging" msgid="1705179948350365604">"ചാർജ്ജുചെയ്യുന്നു"</string>
+ <string name="battery_info_status_charging" msgid="1705179948350365604">"ചാർജ് ചെയ്യുന്നു"</string>
<string name="battery_info_status_charging_lower" msgid="8689770213898117994">"ചാർജ് ചെയ്യുന്നു"</string>
<string name="battery_info_status_discharging" msgid="310932812698268588">"ചാർജ്ജുചെയ്യുന്നില്ല"</string>
<string name="battery_info_status_not_charging" msgid="8523453668342598579">"പ്ലഗ് ഇൻ ചെയ്‌തു, ഇപ്പോൾ ചാർജ് ചെയ്യാനാവില്ല"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"എപ്പോഴും ചോദിക്കുക"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"നിങ്ങൾ ഓഫാക്കുന്നത് വരെ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ഇപ്പോൾ"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ഈ ഉപകരണം"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index ec2cacf579e7..55ac9e6cea72 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s-р боломжтой"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Бүртгүүлэхийн тулд товшино уу"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Холбогдсон хэдий ч интернет алга"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Хязгаарлагдмал холболт"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Интернэт алга"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Нэвтрэх шаардлагатай"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Хандах цэг түр хугацаанд дүүрсэн байна"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Холбогдсон (медиа байхгүй), батерей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Холбогдсон (утас эсвэл медиа байхгүй), батерей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Идэвхтэй, батерей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Идэвхтэй, Зүүн: Батарей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Баруун: Батарей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Батерей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Зүүн: Батарей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Баруун: Батарей <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Идэвхтэй"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Медиа аудио"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Утасны дуудлага"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Ойролцоогоор <xliff:g id="TIME">%1$s</xliff:g> хүртэл барих ёстой (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Ойролцоогоор <xliff:g id="TIME">%1$s</xliff:g> хүртэл барих ёстой"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> хүртэл"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g>-с хойш батарейны ажиллах хугацааг сунгах"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-с бага хугацаа үлдсэн"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-с бага хугацаа үлдсэн (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-с их хугацаа үлдсэн (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -462,9 +458,8 @@
<string name="alarm_template" msgid="4996153414057676512">"<xliff:g id="WHEN">%1$s</xliff:g>-д"</string>
<string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g>-д"</string>
<string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Хугацаа"</string>
- <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Тухай бүрт асуух"</string>
+ <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Тухай бүрд асуух"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Таныг унтраах хүртэл"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Дөнгөж сая"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Энэ төхөөрөмж"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 82ed3d5f8422..b6654a1656d1 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s द्वारे उपलब्‍ध"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"साइन अप करण्यासाठी टॅप करा"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"कनेक्‍ट केले, इंटरनेट नाही"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"मर्यादित कनेक्शन"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"इंटरनेट नाही"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन करणे आवश्यक आहे"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"अॅक्सेस पॉइंट तात्पुरते भरलेले"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"कनेक्ट केले (मीडिया नाही), बॅटरी <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"कनेक्ट केले (फोन किंवा मीडिया नाही), बॅटरी <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"अॅक्टिव्ह, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"अॅक्टिव्ह, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बॅटरी"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बॅटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बॅटरी"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"अॅक्टिव्ह"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"मीडिया ऑडिओ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"फोन कॉल"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"सुमारे <xliff:g id="TIME">%1$s</xliff:g> पर्यंत टिकेल (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"सुमारे <xliff:g id="TIME">%1$s</xliff:g> पर्यंत टिकावी"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> पर्यंत"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g> नंतर वाढलेले बॅटरी लाइफ"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> पेक्षा कमी शिल्लक आहे"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> पेक्षा कमी वेळ शिल्लक आहे (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> पेक्षा जास्त वेळ शिल्लक आहे (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"प्रत्येक वेळी विचारा"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"तुम्ही बंद करेपर्यंत"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"आत्ताच"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"हे डिव्हाइस"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 59157af60c93..5a77a224bd9e 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Tersedia melalui %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Ketik untuk daftar"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Disambungkan, tiada Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Sambungan terhad"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Tiada Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Log masuk diperlukan"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Titik akses penuh buat sementara waktu"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Disambungkan (tiada media), bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Disambungkan (tiada telefon atau media), bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktif, bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktif, Ki: bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Ka: bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Ki: bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Ka: bateri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktif"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio media"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Panggilan telefon"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Seharusnya boleh digunakan hingga kira-kira <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Seharusnya boleh digunakan hingga kira-kira <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Hingga <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Lanjutkan hayat bateri melepasi <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Tinggal kurang daripada <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Kurang daripada <xliff:g id="THRESHOLD">%1$s</xliff:g> lagi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Lebih daripada <xliff:g id="TIME_REMAINING">%1$s</xliff:g> lagi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Tanya setiap kali"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Sehingga anda matikan"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Sebentar tadi"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Peranti ini"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 04d4a3bb028d..ee64ea4447ac 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s မှတစ်ဆင့်ရနိုင်သည်"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"အကောင့်ဖွင့်ရန် တို့ပါ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ချိတ်ဆက်ထားသည်၊ အင်တာနက်မရှိ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ချိတ်ဆက်မှု ကန့်သတ်ထားသည်"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"အင်တာနက် မရှိပါ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"လက်မှတ်ထိုးဝင်ရန် လိုအပ်သည်"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ကွန်ရက်ချိတ်ဆက်မှု ယာယီပြည့်နေသည်"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"ချိတ်ဆက်ပြီးပြီ (မီဒီယာ မရှိပါ)၊ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"ချိတ်ဆက်ပြီးပြီ (ဖုန်း (သို့) မီဒီယာ မရှိပါ)၊ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ဖွင့်ထားသည်၊ ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"သုံးနေသည်၊ L− ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>၊ R− ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L− ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>၊ R− ဘက်ထရီ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ဖွင့်ထားသည်"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"မီဒီယာ အသံ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ဖုန်းခေါ်ဆိုမှုများ"</string>
@@ -203,7 +200,7 @@
<string name="vpn_settings_not_available" msgid="956841430176985598">"ဤ အသုံးပြုသူ အတွက် VPN ဆက်တင်များကို မရယူနိုင်"</string>
<string name="tethering_settings_not_available" msgid="6765770438438291012">"ဤ အသုံးပြုသူ အတွက် ချိတ်တွဲရေး ဆက်တင်များကို မရယူနိုင်"</string>
<string name="apn_settings_not_available" msgid="7873729032165324000">"ဤ အသုံးပြုသူ အတွက် ဝင်လိုသည့် နေရာ အမည်၏ ဆက်တင်များကို မရယူနိုင်"</string>
- <string name="enable_adb" msgid="7982306934419797485">"ယူအက်စ်ဘီ အမှားရှာခြင်း"</string>
+ <string name="enable_adb" msgid="7982306934419797485">"USB အမှားရှာခြင်း"</string>
<string name="enable_adb_summary" msgid="4881186971746056635">"USBနှင့်ဆက်သွယ်ထားလျှင် အမှားရှာဖွေဖယ်ရှားမှုစနစ်စတင်ရန်"</string>
<string name="clear_adb_keys" msgid="4038889221503122743">"USB အမှားရှာပြင်ဆင်ခွင့်များ ပြန်ရုပ်သိမ်းခြင်း"</string>
<string name="bugreport_in_power" msgid="7923901846375587241">"ချွတ်ယွင်းမှု အစီရင်ခံရန် ဖြတ်လမ်း"</string>
@@ -254,7 +251,7 @@
<string name="select_logd_size_dialog_title" msgid="1206769310236476760">"လော့ ဘာဖားတွက် လော့ဂါးဆိုက် ရွေး"</string>
<string name="dev_logpersist_clear_warning_title" msgid="684806692440237967">"မှတ်တမ်းထိန်းသိမ်းပေးသည့် သိုလှောင်ခန်းကို ရှင်းလင်းမလား။"</string>
<string name="dev_logpersist_clear_warning_message" msgid="2256582531342994562">"အမြဲတမ်းမှတ်တမ်းတင်ခြင်းစနစ်ဖြင့် ကျွန်ုပ်တို့ကစောင့်ကြည့်ခြင်းမရှိတော့သည့်အခါ သင့်စက်ပစ္စည်းပေါ်ရှိ ဒေတာမှတ်တမ်းစနစ်ကို ကျွန်ုပ်တို့က ဖျက်ရပါလိမ့်မည်။"</string>
- <string name="select_logpersist_title" msgid="7530031344550073166">"စက်တွင် မှတ်တမ်းအြမဲသိမ်းရန်"</string>
+ <string name="select_logpersist_title" msgid="7530031344550073166">"စက်တွင် မှတ်တမ်းဒေတာ အမြဲသိမ်းရန်"</string>
<string name="select_logpersist_dialog_title" msgid="4003400579973269060">"စက်ပစ္စည်းပေါ်တွင် ထိန်းသိမ်းသိုမှီးရန် မှတ်တမ်းလျာထားချက်များကို ရွေးပါ"</string>
<string name="select_usb_configuration_title" msgid="2649938511506971843">"USB စီစဉ်ဖွဲ့စည်းမှု ရွေးရန်"</string>
<string name="select_usb_configuration_dialog_title" msgid="6385564442851599963">"USB စီစဉ်ဖွဲ့စည်းမှု ရွေးရန်"</string>
@@ -262,13 +259,13 @@
<string name="allow_mock_location_summary" msgid="317615105156345626">"ပုံစံတုတည်နေရာများကို ခွင့်ပြုရန်"</string>
<string name="debug_view_attributes" msgid="6485448367803310384">"အရည်အချင်းများ စူးစမ်းမှု မြင်ကွင်းကို ဖွင့်ရန်"</string>
<string name="mobile_data_always_on_summary" msgid="8149773901431697910">"Wi-Fi ဖွင့်ထားချိန်တွင်လည်း မိုဘိုင်းဒေတာ အမြဲတမ်းဖွင့်မည် (မြန်ဆန်သည့် ကွန်ရက် ပြောင်းခြင်းအတွက်)။"</string>
- <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"ဖုန်းကို မိုဒမ်အဖြစ်သုံးမှု စက်ပစ္စည်းဖြင့် အရှိမြှင့်တင်ခြင်းကို ရနိုင်လျှင် သုံးရန်"</string>
+ <string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"အရှိန်မြှင့်တင်ရန် မိုဘိုင်းဖုန်းသုံး ချိတ်ဆက်မျှဝေခြင်း စက်ပစ္စည်းကို ရနိုင်လျှင် သုံးပါ"</string>
<string name="adb_warning_title" msgid="6234463310896563253">"USB ပြသနာရှာခြင်း ခွင့်ပြုပါမလား?"</string>
<string name="adb_warning_message" msgid="7316799925425402244">"USBအမှားရှားခြင်းမှာ ဆော့ဝဲလ်ရေးသားရန်အတွက်သာ ရည်ရွယ်ပါသည်။ သင့်ကွန်ပြုတာနှင့်သင့်စက်ကြားတွင် ဒေတာများကိုကူးယူရန်၊ အကြောင်းမကြားပဲနှင့် သင့်စက်အတွင်းသို့ အပလီကေးရှင်းများထည့်သွင်းခြင်းနှင့် ဒေတာမှတ်တမ်းများဖတ်ရန်အတွက် အသုံးပြုပါ"</string>
<string name="adb_keys_warning_message" msgid="5659849457135841625">"သင် ယခင်က ခွင့်ပြုခဲ့သော ကွန်ပျူတာအားလုံးမှ ယူအက်စ်ဘီ အမှားစစ်ခွင့်ကို ရုတ်သိမ်းမည်လား ?"</string>
<string name="dev_settings_warning_title" msgid="7244607768088540165">"တည်ဆောက်ပြုပြင်ရန်ဆက်တင်များကို အသုံးပြုခွင့်ပေးမည်လား?"</string>
<string name="dev_settings_warning_message" msgid="2298337781139097964">"ဤဆက်တင်းများကို တည်ဆောက်ပြုပြင်ရာတွင် သုံးရန်အတွက်သာ ရည်ရွယ်သည်။ ၎င်းတို့သည် သင်၏စက်နှင့် အပလီကေးရှင်းများကို ရပ်စေခြင်း သို့ လုပ်ဆောင်ချက်မမှန်ကန်ခြင်းများ ဖြစ်ပေါ်စေနိုင်သည်။"</string>
- <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USBပေါ်မှ အပလီကေးရှင်းများကို အတည်ပြုစိစစ်ရန်"</string>
+ <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB ဖြင့် အက်ပ်များကို အတည်ပြုစိစစ်ရန်"</string>
<string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"ADB/ADT မှတစ်ဆင့် ထည့်သွင်းသော အက်ပ်များ အန္တရာယ်ဖြစ်နိုင်ခြင်း ရှိမရှိ စစ်ဆေးသည်။"</string>
<string name="bluetooth_show_devices_without_names_summary" msgid="2351196058115755520">"အမည်မရှိသော (MAC လိပ်စာများသာပါသော) ဘလူးတုသ်စက်ပစ္စည်းများကို ပြသပါမည်"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"ချိတ်ဆက်ထားသည့် ကိရိယာတွင် လက်မခံနိုင်လောက်အောင် ဆူညံ သို့မဟုတ် ထိန်းညှိမရနိုင်သော အသံပိုင်းပြဿနာ ရှိခဲ့လျှင် ဘလူးတုသ် ပကတိ အသံနှုန်းကို ပိတ်ပါ။"</string>
@@ -292,30 +289,30 @@
<string name="strict_mode" msgid="1938795874357830695">"တင်းကြပ်သောစနစ် ဖြစ်နေမည်"</string>
<string name="strict_mode_summary" msgid="142834318897332338">"အက်ပ်လုပ်ဆောင်မှု ရှည်ကြာလျှင် စကရင်ပြန်စပါ"</string>
<string name="pointer_location" msgid="6084434787496938001">"မြား၏တည်နေရာ"</string>
- <string name="pointer_location_summary" msgid="840819275172753713">"လက်ရှိထိတွေ့မှုဒေတာကို မှန်သားပေါ်မှထပ်ဆင့်ပြသမှု"</string>
+ <string name="pointer_location_summary" msgid="840819275172753713">"လက်ရှိထိတွေ့မှုဒေတာကို ဖန်သားပေါ်တွင်ထပ်၍ ပြသသည်"</string>
<string name="show_touches" msgid="2642976305235070316">"တို့ခြင်းများကို ပြပါ"</string>
<string name="show_touches_summary" msgid="6101183132903926324">"တို့ခြင်းများအတွက် အမြင်ဖြင့် တုံ့ပြန်မှုပြပါ"</string>
- <string name="show_screen_updates" msgid="5470814345876056420">"surface အဆင့်မြှင့်မှုများပြပါ"</string>
+ <string name="show_screen_updates" msgid="5470814345876056420">"မျက်နှာပြင်အပ်ဒိတ်များ ပြခြင်း"</string>
<string name="show_screen_updates_summary" msgid="2569622766672785529">"အပ်ဒိတ်လုပ်စဉ် ဝင်းဒိုးမျက်နှာပြင်တွင် အချက်ပြရန်"</string>
- <string name="show_hw_screen_updates" msgid="4117270979975470789">"အပ်ဒိတ်မြင်ကွင်း ပြရန်"</string>
- <string name="show_hw_screen_updates_summary" msgid="6506943466625875655">"ပုံရေးဆွဲစဉ် ဝင်းဒိုးအတွင်း လျှပ်တစ်ပြက်မြင်ကွင်းများ"</string>
+ <string name="show_hw_screen_updates" msgid="4117270979975470789">"မြင်ကွင်းအပ်ဒိတ်များ ပြခြင်း"</string>
+ <string name="show_hw_screen_updates_summary" msgid="6506943466625875655">"ပုံဆွဲစဉ် ဝင်းဒိုးအတွင်း တဒင်္ဂပြပါ"</string>
<string name="show_hw_layers_updates" msgid="5645728765605699821">"ဟာ့ဒ်ဝဲအလွှာ အပ်ဒိတ်များပြခြင်း"</string>
<string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"အပ်ဒိတ်လုပ်ချိန် ဟာ့ဒ်ဝဲအလွှာများ အစိမ်းရောင်ပြပါ"</string>
<string name="debug_hw_overdraw" msgid="2968692419951565417">"GPU ပိုသုံးစွဲမှု ပြင်ဆင်ခြင်း"</string>
- <string name="disable_overlays" msgid="2074488440505934665">"HWထပ်ဆင့်အရာများပိတ်ရန်"</string>
+ <string name="disable_overlays" msgid="2074488440505934665">"HW ထပ်ဆင့်ခြင်းများပိတ်ခြင်း"</string>
<string name="disable_overlays_summary" msgid="3578941133710758592">"GPU ကိုမျက်နှာပြင်ခင်းကျင်းရာတွင် အမြဲသုံးပါ။"</string>
- <string name="simulate_color_space" msgid="6745847141353345872">"အရောင်နေရာတူအောင် ဖန်တီးသည်"</string>
+ <string name="simulate_color_space" msgid="6745847141353345872">"အရောင်စနစ် ပြင်ဆင်ခြင်း"</string>
<string name="enable_opengl_traces_title" msgid="6790444011053219871">"OpenGL ခြေရာခံခြင်းဖွင့်ပါ။"</string>
<string name="usb_audio_disable_routing" msgid="8114498436003102671">"USB အသံလမ်းကြောင်း ပိတ်ခြင်း"</string>
<string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"USB အသံစက်ပစ္စည်းများသို့ အလိုအလျောက် ချိတ်ဆက်ခြင်းကို ပိတ်ရန်"</string>
- <string name="debug_layout" msgid="5981361776594526155">"ဖွဲ့စည်းပုံဘောင်များပြရန်"</string>
+ <string name="debug_layout" msgid="5981361776594526155">"ဖွဲ့စည်းပုံဘောင်များ ပြခြင်း"</string>
<string name="debug_layout_summary" msgid="2001775315258637682">"ဖြတ်ပိုင်းအနားသတ်များ၊ အနားများ စသဖြင့် ပြပါ။"</string>
- <string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"RTL ဖွဲ့စည်းပုံအညွှန်း မဖြစ်မနေလုပ်ပါ"</string>
- <string name="force_rtl_layout_all_locales_summary" msgid="9192797796616132534">"ဘာသာစကား အားလုံးအတွက် မျက်နှာပြင် ဖွဲ့စည်းပုံအညွှန်း မဖြစ်မနေလုပ်ရန်"</string>
- <string name="force_msaa" msgid="7920323238677284387">"တွန်းအား ၄× MSAA"</string>
- <string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 apps တွင် ၄×MSAA အသုံးပြုခွင့်ပေးရန်"</string>
+ <string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"RTL အပြင်အဆင်အတိုင်း ဖြစ်စေခြင်း"</string>
+ <string name="force_rtl_layout_all_locales_summary" msgid="9192797796616132534">"ဘာသာစကားအားလုံးအတွက် RTL အပြင်အဆင်အတိုင်း ဖြစ်စေသည်"</string>
+ <string name="force_msaa" msgid="7920323238677284387">"4x MSAA မဖြစ်မနေဖွင့်ခြင်း"</string>
+ <string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 အက်ပ်များတွင် 4x MSAA ဖွင့်သည်"</string>
<string name="show_non_rect_clip" msgid="505954950474595172">"စတုဂံပုံမကျသောဖြတ်ပိုင်း လုပ်ဆောင်ချက်များကို အမှားဖယ်ရှားသည်"</string>
- <string name="track_frame_time" msgid="6094365083096851167">"HWUI ပြင်ဆင်စဉ် ပရိုဖိုင်"</string>
+ <string name="track_frame_time" msgid="6094365083096851167">"HWUI ပရိုဖိုင် ဆောင်ရွက်ခြင်း"</string>
<string name="enable_gpu_debug_layers" msgid="3848838293793255097">"GPU အမှားရှာ အလွှာများဖွင့်ထားပါ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="8009136940671194940">"အမှားရှာအက်ပ်များအတွက် GPU အမှားရှာအလွှာများ ထည့်သွင်းခွင့်ပြုပါ"</string>
<string name="window_animation_scale_title" msgid="6162587588166114700">"လှုပ်ရှားသက်ဝင်ပုံစကေး"</string>
@@ -327,13 +324,13 @@
<string name="immediately_destroy_activities_summary" msgid="3592221124808773368">"အသုံးပြုသူထွက်ခွါသွားသည်နှင့် လုပ်ဆောင်ချက်များကို ဖျက်ပစ်မည်"</string>
<string name="app_process_limit_title" msgid="4280600650253107163">"နောက်ခံလုပ်ငန်းစဉ်ကန့်သတ်ခြင်း"</string>
<string name="show_all_anrs" msgid="4924885492787069007">"နောက်ခံ ANR များကို ပြရန်"</string>
- <string name="show_all_anrs_summary" msgid="6636514318275139826">"နောက်ခံ အပလီကေးရှင်းများ အတွက် \'အက်ပ်တုံ့ပြန်မှုမရှိ\' ဟု ပြရန်"</string>
+ <string name="show_all_anrs_summary" msgid="6636514318275139826">"နောက်ခံ အက်ပ်များအတွက် \'အက်ပ်တုံ့ပြန်မှုမရှိ\' ဟု ပြရန်"</string>
<string name="show_notification_channel_warnings" msgid="1399948193466922683">"ချန်နယ်သတိပေးချက်များပြပါ"</string>
<string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ချန်နယ်မရှိဘဲ အကြောင်းကြားလျှင် စကရင်တွင်သတိပေးသည်"</string>
<string name="force_allow_on_external" msgid="3215759785081916381">"ပြင်ပစက်တွင် အက်ပ်များခွင့်ပြုရန်"</string>
<string name="force_allow_on_external_summary" msgid="3640752408258034689">"တိကျစွာ သတ်မှတ်ထားသည့်တန်ဖိုးများရှိသော်လည်း၊ ပြင်ပသိုလှောင်ခန်းများသို့ မည်သည့်အက်ပ်ကိုမဆို ဝင်ရောက်ခွင့်ပြုပါ"</string>
<string name="force_resizable_activities" msgid="8615764378147824985">"လုပ်ဆောင်ချက်များ အရွယ်ပြောင်းနိုင်ခြင်း"</string>
- <string name="force_resizable_activities_summary" msgid="6667493494706124459">"မန်နီးဖက်စ်တန်ဖိုး မည်မျှပင်ရှိစေ၊ ဝင်းဒိုးများအတွက် လုပ်ဆောင်မှုအားလုံးကို အရွယ်အစားပြင်ပါ။"</string>
+ <string name="force_resizable_activities_summary" msgid="6667493494706124459">"သတ်မှတ်တန်ဖိုး မည်သို့ပင်ရှိစေ ဝင်းဒိုးများ၏ လုပ်ဆောင်မှုအားလုံးကို အရွယ်အစားပြင်သည်။"</string>
<string name="enable_freeform_support" msgid="1461893351278940416">"အခမဲ့ပုံစံ ဝင်းဒိုးကို ဖွင့်ပါ"</string>
<string name="enable_freeform_support_summary" msgid="8247310463288834487">"ပုံစံမျိုးစုံဝင်းဒိုးများစမ်းသပ်မှုအတွက် အထောက်အပံ့ကိုဖွင့်ပါ"</string>
<string name="local_backup_password_title" msgid="3860471654439418822">"ဒက်စ်တော့ အရန်စကားဝှက်"</string>
@@ -370,7 +367,7 @@
<string name="button_convert_fbe" msgid="5152671181309826405">"ရှင်းလင်းပြီး ပြောင်းလဲရန်…"</string>
<string name="picture_color_mode" msgid="4560755008730283695">"ဓာတ်ပုံအရောင်မုဒ်"</string>
<string name="picture_color_mode_desc" msgid="1141891467675548590">"sRGB ကို အသုံးပြုပါ"</string>
- <string name="daltonizer_mode_disabled" msgid="7482661936053801862">"သုံးမရအောင် ပိတ်ထားသည်"</string>
+ <string name="daltonizer_mode_disabled" msgid="7482661936053801862">"ပိတ်ထားသည်"</string>
<string name="daltonizer_mode_monochromacy" msgid="8485709880666106721">"တစ်ရောင်ထဲသာမြင်ခြင်း"</string>
<string name="daltonizer_mode_deuteranomaly" msgid="5475532989673586329">"Deuteranomaly (အနီ-အစိမ်း)"</string>
<string name="daltonizer_mode_protanomaly" msgid="8424148009038666065">"Protanomaly (အနီ-အစိမ်း)"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"<xliff:g id="TIME">%1$s</xliff:g> ခန့်အထိ သုံးနိုင်သည် (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"<xliff:g id="TIME">%1$s</xliff:g> ခန့်အထိ သုံးနိုင်သည်"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> အထိ"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ဘက်ထရီသက်တမ်း <xliff:g id="TIME">%1$s</xliff:g> ကျော်အထိ တိုးမြှင့်လိုက်ပါ"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ခန့်သာ ကျန်တော့သည်"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> အောက်သာ ကျန်သည် (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ကျော် ကျန်သည် (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"အမြဲမေးပါ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"သင်ပိတ်လိုက်သည် အထိ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ယခုလေးတင်"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ဤစက်ပစ္စည်း"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 361bc40b3a7a..7d4b3500fd4a 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Tilgjengelig via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Trykk for å registrere deg"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Tilkoblet – ingen Internett-tilgang"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Begrenset tilkobling"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ingen internettilkobling"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Pålogging kreves"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Tilgangspunktet er midlertidig fullt"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Koblet til (ingen medier), batteri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Koblet til (ingen telefon eller medier), batteri <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiv, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiv, V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri, H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiv"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medielyd"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonsamtaler"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Skal vare til omtrent <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Skal vare til omtrent <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Til <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Forleng batterilevetiden til etter <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Mindre enn <xliff:g id="THRESHOLD">%1$s</xliff:g> gjenstår"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Mindre enn <xliff:g id="THRESHOLD">%1$s</xliff:g> gjenstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mer enn <xliff:g id="TIME_REMAINING">%1$s</xliff:g> gjenstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Spør hver gang"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Til du slår av"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Nå nettopp"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Denne enheten"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index 5283e2d9c8f2..094f5ede2231 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s मार्फत उपलब्ध"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"साइन अप गर्न ट्याप गर्नुहोस्"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"जडान गरियो तर इन्टरनेट छैन"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"सीमित जडान"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"इन्टरनेटमाथिको पहुँच छैन"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन गर्न आवश्यक छ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"पहुँचसम्बन्धी स्थान अस्थायी रूपमा भरिएको छ"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"जडान गरियो (मिडियाबाहेक), ब्याट्री <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"जडान गरियो (फोन वा मिडियाबाहेक), ब्याट्री <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"सक्रिय, ब्याट्रीको स्तर: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"सक्रिय, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ब्याट्री, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ब्याट्री"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"ब्याट्रीको स्तर: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ब्याट्री, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ब्याट्री"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"सक्रिय"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"मिडिया अडियो"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"फोन कलहरू"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"ब्याट्री लगभग <xliff:g id="TIME">%1$s</xliff:g> सम्म टिक्नु पर्छ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"लगभग <xliff:g id="TIME">%1$s</xliff:g> सम्म टिक्नु पर्छ"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> सम्म"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ब्याट्रीको आयु <xliff:g id="TIME">%1$s</xliff:g> पछिसम्म विस्तार गरियो"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> भन्दा कम समय बाँकी छ"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> भन्दा कम समय बाँकी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> भन्दा बढी समय बाँकी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"प्रत्येक पटक सोध्नुहोस्"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"तपाईंले निष्क्रिय नपार्दासम्म"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"अहिले भर्खरै"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"यो यन्त्र"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 1949ff722327..dfb99f549cd1 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Beschikbaar via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tik om aan te melden"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Verbonden, geen internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Beperkte verbinding"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Geen internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Inloggen vereist"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Toegangspunt tijdelijk vol"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Verbonden: <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (geen media), batterij: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Verbonden: <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (geen telefoon of media), batterij: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Actief, batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Actief, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batterij, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batterij"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Batterijniveau <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batterij, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batterij"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Actief"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media-audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefoongesprekken"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Is nog genoeg tot ongeveer <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Is nog genoeg tot ongeveer <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Tot <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Batterijduur verlengen tot na <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Minder dan <xliff:g id="THRESHOLD">%1$s</xliff:g> resterend"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Minder dan <xliff:g id="THRESHOLD">%1$s</xliff:g> resterend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Meer dan <xliff:g id="TIME_REMAINING">%1$s</xliff:g> resterend (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Altijd vragen"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Totdat je uitschakelt"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Zojuist"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Dit apparaat"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 0523eabb2183..1d16a6398d9d 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ମାଧ୍ୟମରେ ଉପଲବ୍ଧ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ସାଇନ୍ ଅପ୍ ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ସଂଯୁକ୍ତ, ଇଣ୍ଟର୍‌ନେଟ୍‌ ନାହିଁ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ସୀମିତ ସଂଯୋଗ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"କୌଣସି ଇଣ୍ଟରନେଟ୍‌ ନାହିଁ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ସାଇନ୍-ଇନ୍ ଆବଶ୍ୟକ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ଆକ୍ସେସ୍ ପଏଣ୍ଟ ସାମୟିକ ଭାବେ ପୂର୍ଣ୍ଣ"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"ସଂଯୁକ୍ତ ହେଲା (ମିଡିଆ ନୁହେଁ), ବ୍ୟାଟେରୀ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"ସଂଯୁକ୍ତ ହେଲା (ଫୋନ୍ କିମ୍ବା ମେଡିଆ ନୁହେଁ), ବ୍ୟାଟେରୀ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ସକ୍ରିୟ, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବ୍ୟାଟେରୀ"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ସକ୍ରିୟ, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ବ୍ୟାଟେରୀ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ବ୍ୟାଟେରୀ"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବ୍ୟାଟେରୀ"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ବ୍ୟାଟେରୀ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ବ୍ୟାଟେରୀ"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ସକ୍ରିୟ"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ମିଡିଆ ଅଡିଓ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ଫୋନ୍‌ କଲ୍‌‌ଗୁଡ଼ିକ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"ବ୍ୟାଟେରୀ ପାଖାପାଖି <xliff:g id="TIME">%1$s</xliff:g> ଚାଲିବ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"ବ୍ୟାଟେରୀ <xliff:g id="TIME">%1$s</xliff:g> ପର୍ଯ୍ୟନ୍ତ ଚାଲିବ"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> ପର୍ଯ୍ୟନ୍ତ"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ବ୍ୟାଟେରୀ ଲାଇଫ୍‌କୁ <xliff:g id="TIME">%1$s</xliff:g>ରୁ ଅଧିକ କରନ୍ତୁ"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ରୁ କମ୍ ସମୟ ବଳକା ଅଛି"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ରୁ କମ୍ ସମୟ ବଳକା ଅଛି (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>ରୁ ଅଧିକ ସମୟ ବଳକା ଅଛି(<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"ଆପଣ ବନ୍ଦ ନକରିବା ପର୍ଯ୍ୟନ୍ତ DND ଅନ୍‌ ରହିବ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ଏହିକ୍ଷଣି"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ଏହି ଡିଭାଇସ୍‍"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 2505f2e73abf..3ec90b2e3e26 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ਰਾਹੀਂ ਉਪਲਬਧ"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ਸਾਈਨ-ਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"ਕਨੈਕਟ ਕੀਤਾ, ਕੋਈ ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"ਸੀਮਤ ਕਨੈਕਸ਼ਨ"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ਸਾਈਨ-ਇਨ ਲੋੜੀਂਦਾ ਹੈ"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ਐਕਸੈੱਸ ਪੁਆਇੰਟ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਸੰਪੂਰਨ ਰੁਝੇਂਵੇਂ ਵਿੱਚ ਹੈ"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"ਕਨੈਕਟ ਕੀਤਾ ਹੋਇਆ (ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ), ਬੈਟਰੀ ਦਾ ਪੱਧਰ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"ਕਨੈਕਟ ਕੀਤਾ ਹੋਇਆ (ਕੋਈ ਫ਼ੋਨ ਜਾਂ ਮੀਡੀਆ ਨਹੀਂ), ਬੈਟਰੀ ਦਾ ਪੱਧਰ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ਕਿਰਿਆਸ਼ੀਲ, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ਕਿਰਿਆਸ਼ੀਲ, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ਬੈਟਰੀ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ਬੈਟਰੀ"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ਬੈਟਰੀ"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ਬੈਟਰੀ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ਬੈਟਰੀ"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ਕਿਰਿਆਸ਼ੀਲ"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"ਮੀਡੀਆ ਆਡੀਓ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ਫ਼ੋਨ ਕਾਲਾਂ"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"ਲਗਭਗ <xliff:g id="TIME">%1$s</xliff:g> ਚੱਲੇਗਾ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"ਲਗਭਗ <xliff:g id="TIME">%1$s</xliff:g> ਚੱਲੇਗਾ"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> ਤੱਕ"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ਬੈਟਰੀ ਲਾਈਫ਼ <xliff:g id="TIME">%1$s</xliff:g> ਤੋਂ ਬਾਅਦ ਤੱਕ ਵਧਾਓ"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ਤੋਂ ਘੱਟ ਸਮਾਂ ਬਾਕੀ"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ਤੋਂ ਘੱਟ ਸਮਾਂ ਬਾਕੀ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ਤੋਂ ਵੱਧ ਸਮਾਂ ਬਾਕੀ (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਬੰਦ ਨਹੀਂ ਕਰਦੇ"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ਹੁਣੇ ਹੀ"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ਇਹ ਡੀਵਾਈਸ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 211c09780aff..0fdd8c5d2d93 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Dostępne przez %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Kliknij, by się zarejestrować"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Połączono, brak internetu"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ograniczone połączenie"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Brak internetu"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Musisz się zalogować"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punkt dostępu jest tymczasowo zajęty"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Połączono (bez multimediów), bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> – <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Połączono (bez telefonu i multimediów), bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> – <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktywne, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktywna, L: bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P: bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> naładowania baterii"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, P: bateria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Urządzenie aktywne"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Dźwięk multimediów"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Połączenia telefoniczne"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Powinno wystarczyć do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Powinno wystarczyć do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Wydłuż czas pracy na baterii ponad <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Pozostało mniej niż <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Pozostało mniej niż <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Pozostało ponad: <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -423,7 +419,7 @@
<item msgid="1286113608943010849">"100%"</item>
</string-array>
<string name="charge_length_format" msgid="8978516217024434156">"<xliff:g id="ID_1">%1$s</xliff:g> temu"</string>
- <string name="remaining_length_format" msgid="7886337596669190587">"Pozostało <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="remaining_length_format" msgid="7886337596669190587">"Pozostało: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="screen_zoom_summary_small" msgid="5867245310241621570">"Mały"</string>
<string name="screen_zoom_summary_default" msgid="2247006805614056507">"Domyślny"</string>
<string name="screen_zoom_summary_large" msgid="4835294730065424084">"Duży"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Zawsze pytaj"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dopóki nie wyłączysz"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Przed chwilą"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"To urządzenie"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 7adcdf626674..ffaed3737ee9 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponível via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toque para se inscrever"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectada, sem Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Conexão limitada"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sem Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É necessário fazer login"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Conectado (sem mídia), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> de bateria"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Conectado (sem telefone ou mídia), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> de bateria"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Ativo, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Ativo, E: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"E: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Ativo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Áudio da mídia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Chamadas telefônicas"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Até <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Estender duração da bateria depois de <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s)"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mais de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Perguntar sempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Até você desativar"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Agora"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 5b3bb4e789b5..aaa6a027ef6f 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponível através de %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toque para se inscrever"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ligado, sem Internet."</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ligação limitada"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sem Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É necessário iniciar sessão"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Ligado (sem multimédia), bateria a <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Ligado (sem telemóvel nem multimédia), bateria a <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Ativo, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Ativo, E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"E: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> de bateria, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> de bateria"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Ativo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Áudio de multimédia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Chamadas telefónicas"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Deve durar até cerca da(s) <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Deve durar até cerca da(s) <xliff:g id="TIME">%1$s</xliff:g>."</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Até à(s) <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Prolongar a autonomia da bateria após <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Resta(m) menos de <xliff:g id="THRESHOLD">%1$s</xliff:g>."</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Resta(m) menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Resta(m) mais de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Perguntar sempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Até ser desativado"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Agora mesmo"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 7adcdf626674..ffaed3737ee9 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponível via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Toque para se inscrever"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectada, sem Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Conexão limitada"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Sem Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"É necessário fazer login"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Ponto de acesso temporariamente cheio"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Conectado (sem mídia), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> de bateria"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Conectado (sem telefone ou mídia), <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> de bateria"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Ativo, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Ativo, E: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de bateria"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"E: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: Bateria do <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Ativo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Áudio da mídia"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Chamadas telefônicas"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Deve durar até cerca de <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Até <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Estender duração da bateria depois de <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s)"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Menos de <xliff:g id="THRESHOLD">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mais de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> restante(s) (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Perguntar sempre"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Até você desativar"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Agora"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Este dispositivo"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 24911e59ec2e..4b3ec9941744 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Disponibilă prin %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Atingeți pentru a vă înscrie"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Conectată, fără internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Conexiune limitată"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Fără conexiune la internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Trebuie să vă conectați"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Punctul de acces este temporar plin"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Conectat (fără conținut media), baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Conectat (fără telefon sau conținut media), baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Activ, baterie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Activ, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterie, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterie"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Nivelul bateriei: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterie, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterie"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Activ"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Conținut media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Apeluri telefonice"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Ar trebui să reziste până la <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Ar trebui să reziste până la <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Până la <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Extindeți autonomia bateriei după <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"a mai rămas mai puțin de <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"A mai rămas mai puțin de <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"A mai rămas mai mult de <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -466,6 +462,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Întreabă de fiecare dată"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Până când dezactivați"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Chiar acum"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Acest dispozitiv"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index abe3ea22e0c3..4943a82e4b85 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Доступно через %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Нажмите, чтобы зарегистрироваться"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Подключено, без доступа к Интернету"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Подключение к сети ограничено."</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Нет подключения к Интернету"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Требуется выполнить вход."</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"К точке доступа подключено слишком много устройств"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Подключено (кроме аудио), уровень заряда батареи: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Подключено (кроме звонков и аудио), уровень заряда батареи: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Активно. Уровень заряда: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>."</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Активно. Л: батарея <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; П: батарея <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Уровень заряда: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Л: батарея <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>; П: батарея <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>."</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Активно"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Профиль A2DP"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Звонки"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Заряда (<xliff:g id="LEVEL">%2$s</xliff:g>) хватит примерно до <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Заряда хватит примерно до <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"До <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Продлите время работы от батареи <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Осталось менее <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Уровень заряда батареи: <xliff:g id="LEVEL">%2$s</xliff:g> (хватит менее чем на <xliff:g id="THRESHOLD">%1$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Уровень заряда батареи: <xliff:g id="LEVEL">%2$s</xliff:g> (хватит более чем на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Всегда спрашивать"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Пока вы не отключите"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Только что"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Это устройство"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 29524a176079..4806487f2b8a 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s හරහා ලබා ගැනීමට හැකිය"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"ලියාපදිංචි වීමට තට්ටු කරන්න"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"සම්බන්ධයි, අන්තර්ජාලය නැත"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"සීමිත සම්බන්ධතාව"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"අන්තර්ජාලය නැත"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"පිරීම අවශ්‍යයි"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ප්‍රවේශ ලක්ෂ්‍ය තාවකාලිකව පිරී ඇත"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"සම්බන්ධිතයි (මාධ්‍ය නැත), බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"සම්බන්ධිතයි (දුරකථනය හෝ මාධ්‍ය නැත), බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ක්‍රියාකාරී, බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ක්‍රියාත්මක, ව: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ද: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"ව: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, ද: බැටරිය <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ක්‍රියාකාරී"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"මාධ්‍ය ශ්‍රව්‍ය"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"දුරකථන ඇමතුම්"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) පමණ වන තෙක් තිබිය යුතුය"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"<xliff:g id="TIME">%1$s</xliff:g> පමණ වන තෙක් තිබිය යුතුය"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> දක්වා"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"බැටරි ආයු කාලය <xliff:g id="TIME">%1$s</xliff:g> ට වඩා දීර්ඝ කරන්න"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ට වඩා අඩුවෙන් ඉතිරිව ඇත"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g>ට වඩා අඩුවෙන් ඉතිරිය (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>ට වඩා වැඩියෙන් ඉතිරිය (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"සෑම විටම ඉල්ලන්න"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"ඔබ ක්‍රියාවිරහිත කරන තුරු"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"මේ දැන්"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"මෙම උපාංගය"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 1f6337427e47..871f20ea69fa 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"K dispozícii prostredníctvom %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Prihláste sa klepnutím"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Pripojené, žiadny internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Obmedzené pripojenie"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Žiadny internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Vyžaduje sa prihlásenie"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Prístupový bod je dočasne plný"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Pripojené k zariadeniu <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (bez médií), úroveň batérie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Pripojené k zariadeniu <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> (bez telefónu a médií), úroveň batérie <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktívne, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batérie"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktívne, Ľ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batérie, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batérie"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Batéria: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Ľ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batérie, P: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batérie"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktívne"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvuk medií"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonické hovory"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Mal by vydržať približne <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Mal by vydržať približne do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Predĺžiť výdrž batérie minimálne do <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Zostáva menej ako <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Zostáva menej ako <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Zostáva viac ako <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vždy sa opýtať"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dokiaľ túto funkciu nevypnete"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Teraz"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Toto zariadenie"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 132e9d0bbef3..f3a28f171413 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Na voljo prek: %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Dotaknite se, če se želite registrirati"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Vzpostavljena povezava, brez interneta"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Omejena povezava"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Brez internetne povezave"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Zahtevana je prijava"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Dostopna točka je trenutno zasedena"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Povezano (brez predstavnosti), raven napolnjenosti akumulatorja je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Povezano (brez telefona ali predstavnosti), raven napolnjenosti akumulatorja je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktivna, akumulator na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktivno, L: napolnjenost akumulatorja je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: napolnjenost akumulatorja je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Akumulator na <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: napolnjenost akumulatorja je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, D: napolnjenost akumulatorja je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktivna"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Zvok predstavnosti"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonski klici"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Naprava bi morala delovati do približno <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Naprava bi morala delovati do približno <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Podaljšanje časa delovanja akumulatorja za dlje kot <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Preostalo manj kot <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Preostanek: manj kot <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Preostali čas delovanja: manj kot <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -422,7 +418,7 @@
<item msgid="8934126114226089439">"50 %"</item>
<item msgid="1286113608943010849">"100 %"</item>
</string-array>
- <string name="charge_length_format" msgid="8978516217024434156">"Pred toliko časa: <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="charge_length_format" msgid="8978516217024434156">"Pred <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="remaining_length_format" msgid="7886337596669190587">"Še <xliff:g id="ID_1">%1$s</xliff:g>"</string>
<string name="screen_zoom_summary_small" msgid="5867245310241621570">"Majhno"</string>
<string name="screen_zoom_summary_default" msgid="2247006805614056507">"Privzeto"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Vedno vprašaj"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Dokler ne izklopite"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Pravkar"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ta naprava"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml
index 4dab74c04245..219c57f09efd 100644
--- a/packages/SettingsLib/res/values-sq/arrays.xml
+++ b/packages/SettingsLib/res/values-sq/arrays.xml
@@ -254,7 +254,7 @@
<item msgid="7899496259191969307">"Maksimumi 4 procese"</item>
</string-array>
<string-array name="usb_configuration_titles">
- <item msgid="488237561639712799">"Po ngarkohet"</item>
+ <item msgid="488237561639712799">"Po karikohet"</item>
<item msgid="5220695614993094977">"MTP (Protokolli i Transferimit të Medias)"</item>
<item msgid="2086000968159047375">"PTP (Protokolli i Transferimit të Fotografive)"</item>
<item msgid="7398830860950841822">"RNDIS (USB Eternet)"</item>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index fa0eb830ceba..25e650309ed7 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"E mundshme përmes %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Trokit për t\'u regjistruar"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"U lidh, por nuk ka internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Lidhje e kufizuar"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Nuk ka internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Kërkohet identifikimi"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pika e qasjes është përkohësisht plot"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"E lidhur (pa media), bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"E lidhur (pa telefon ose media), bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiv, bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiv, L: Bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: Bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: Bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: Bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiv"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audioja e klipit \"media\""</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonatat"</string>
@@ -209,7 +206,7 @@
<string name="bugreport_in_power" msgid="7923901846375587241">"Shkurtorja e raportit të defektit në kod"</string>
<string name="bugreport_in_power_summary" msgid="1778455732762984579">"Shfaq një buton në menynë e fikjes për marrjen e raportit të defekteve"</string>
<string name="keep_screen_on" msgid="1146389631208760344">"Qëndro zgjuar"</string>
- <string name="keep_screen_on_summary" msgid="2173114350754293009">"Ekrani nuk do të kalojë asnjëherë në gjendje gjumi gjatë ngarkimit"</string>
+ <string name="keep_screen_on_summary" msgid="2173114350754293009">"Ekrani nuk do të kalojë asnjëherë në gjendje gjumi gjatë karikimit"</string>
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"Aktivizo regjistrin testues të paketave HCI të Bluetooth-it"</string>
<string name="bt_hci_snoop_log_summary" msgid="8857606786588106495">"Regjistro paketat e Bluetooth-it. (Ndrysho Bluetooth-in pas ndryshimit të këtij cilësimi)"</string>
<string name="oem_unlock_enable" msgid="6040763321967327691">"Shkyçja e OEM-së"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Duhet të zgjasë deri në rreth <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Duhet të zgjasë deri në rreth <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Deri në <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Rrite kohëzgjatjen e baterisë pas orës <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Më pak se <xliff:g id="THRESHOLD">%1$s</xliff:g> të mbetura"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Mbeten më pak se <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mbeten më shumë se <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -406,9 +402,9 @@
<string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> të mbetura deri në ngarkimin e plotë"</string>
<string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> derisa të mbushet plotësisht"</string>
<string name="battery_info_status_unknown" msgid="196130600938058547">"I panjohur"</string>
- <string name="battery_info_status_charging" msgid="1705179948350365604">"Po ngarkohet"</string>
- <string name="battery_info_status_charging_lower" msgid="8689770213898117994">"po ngarkohet"</string>
- <string name="battery_info_status_discharging" msgid="310932812698268588">"Nuk po ngarkohet"</string>
+ <string name="battery_info_status_charging" msgid="1705179948350365604">"Po karikohet"</string>
+ <string name="battery_info_status_charging_lower" msgid="8689770213898117994">"po karikohet"</string>
+ <string name="battery_info_status_discharging" msgid="310932812698268588">"Nuk po karikohet"</string>
<string name="battery_info_status_not_charging" msgid="8523453668342598579">"Në prizë, por nuk mund të ngarkohet për momentin"</string>
<string name="battery_info_status_full" msgid="2824614753861462808">"E mbushur"</string>
<string name="disabled_by_admin_summary_text" msgid="6750513964908334617">"Kontrolluar nga administratori"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Pyet çdo herë"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Deri sa ta çaktivizosh"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Pikërisht tani"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Kjo pajisje"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml
index 3ed9cd933c51..d0f8a127d6dd 100644
--- a/packages/SettingsLib/res/values-sr/arrays.xml
+++ b/packages/SettingsLib/res/values-sr/arrays.xml
@@ -254,7 +254,7 @@
<item msgid="7899496259191969307">"Највише четири процеса"</item>
</string-array>
<string-array name="usb_configuration_titles">
- <item msgid="488237561639712799">"Пуњење"</item>
+ <item msgid="488237561639712799">"Пуни се"</item>
<item msgid="5220695614993094977">"MTP (протокол за трансфер медија)"</item>
<item msgid="2086000968159047375">"PTP (протокол за пренос слика)"</item>
<item msgid="7398830860950841822">"RNDIS (USB етернет)"</item>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 574b216be79c..38b16936947a 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Доступна је преко приступне тачке %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Додирните да бисте се регистровали"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Веза је успостављена, нема интернета"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Ограничена веза"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Нема интернета"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Треба да се пријавите"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Приступна тачка је привремено заузета"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Повезано (без медија), ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Повезано (без телефона или медија), ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Активан, ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Активно, Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерије, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерије, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Активан"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Звук медија"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Телефонски позиви"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"До <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Продужи трајање батерије у односу на период од <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Преостало је мање од <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Преостало је мање од <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Преостало је више од <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -406,7 +402,7 @@
<string name="power_remaining_charging_duration_only" msgid="1421102457410268886">"<xliff:g id="TIME">%1$s</xliff:g> до потпуног пуњења"</string>
<string name="power_charging_duration" msgid="4676999980973411875">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до потпуног пуњења"</string>
<string name="battery_info_status_unknown" msgid="196130600938058547">"Непознато"</string>
- <string name="battery_info_status_charging" msgid="1705179948350365604">"Пуњење"</string>
+ <string name="battery_info_status_charging" msgid="1705179948350365604">"Пуни се"</string>
<string name="battery_info_status_charging_lower" msgid="8689770213898117994">"пуни се"</string>
<string name="battery_info_status_discharging" msgid="310932812698268588">"Не пуни се"</string>
<string name="battery_info_status_not_charging" msgid="8523453668342598579">"Прикључено је, али пуњење тренутно није могуће"</string>
@@ -466,6 +462,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Увек питај"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Док не искључите"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Управо"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Овај уређај"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 1a5fbf9e75b9..5125909eebdc 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Tillgängligt via %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Tryck för att logga in"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ansluten, inget internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Begränsad anslutning"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Inget internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Inloggning krävs"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Åtkomstpunkten har inga platser över för tillfället"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Ansluten (inga medier), batterinivå <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Ansluten (ingen mobil och inga medier), batterinivå <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktiv. <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktiv, V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri. H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"V: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> batteri. H: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> batteri"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktiv"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medialjud"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonsamtal"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Bör räcka ungefär till klockan <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Bör räcka ungefär till klockan <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Till kl. <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Förläng batteritiden tills efter <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Mindre än <xliff:g id="THRESHOLD">%1$s</xliff:g> återstår"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Mindre än <xliff:g id="THRESHOLD">%1$s</xliff:g> återstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mer än <xliff:g id="TIME_REMAINING">%1$s</xliff:g> återstår (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Fråga varje gång"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Tills du inaktiverar funktionen"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Nyss"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Den här enheten"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 42837adce1c7..668b7feac962 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Inapatikana kupitia %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Gusa ili ujisajili"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Imeunganishwa, hakuna intaneti"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Muunganisho hafifu"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Hakuna intaneti"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Unahitaji kuingia katika akaunti"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Lango la mtandao lina shughuli nyingi kwa sasa"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Imeunganishwa (hamna kifaa cha sauti), kiasi cha chaji ni <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Imeunganishwa (hamna simu au kifaa cha sauti), kiasi cha chaji ni <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Inatumika, chaji ya betri ni <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Inatumika, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ya betri, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ya betri"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Chaji ya betri ni <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ya betri, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ya betri"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Unaendelea"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media ya sauti"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Simu"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Inapaswa kudumu kwa takribani <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Inapaswa kudumu hadi <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Hadi <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Ongeza muda wa matumizi ya betri upite <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Zimesalia chini ya <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Zimesalia chini ya <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Zimesalia zaidi ya <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Uliza kila wakati"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Hadi utakapoizima"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Sasa hivi"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Kifaa hiki"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 359513676091..1db9af408644 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ద్వారా అందుబాటులో ఉంది"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"సైన్ అప్ చేయడానికి నొక్కండి"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"కనెక్ట్ చేయబడింది, ఇంటర్నెట్ లేదు"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"పరిమిత కనెక్షన్"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ఇంటర్నెట్ లేదు"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"సైన్ ఇన్ చేయాలి"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"యాక్సెస్ పాయింట్ తాత్కాలికంగా నిండుకుంది"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"కనెక్ట్ చేయబడింది (మీడియా కాదు), బ్యాటరీ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"కనెక్ట్ చేయబడింది (ఫోన్ లేదా మీడియా కాదు), బ్యాటరీ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"యాక్టివ్‌గా ఉంది, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"యాక్టివ్, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> బ్యాటరీ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> బ్యాటరీ"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> బ్యాటరీ"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> బ్యాటరీ, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> బ్యాటరీ"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"యాక్టివ్‌గా ఉంది"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"మీడియా ఆడియో"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ఫోన్ కాల్‌లు"</string>
@@ -216,11 +213,11 @@
<string name="oem_unlock_enable_summary" msgid="4720281828891618376">"బూట్‌లోడర్ అన్‌లాక్ కావడానికి అనుమతించు"</string>
<string name="confirm_enable_oem_unlock_title" msgid="4802157344812385674">"OEM అన్‌లాకింగ్‌ను అనుమతించాలా?"</string>
<string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"హెచ్చరిక: ఈ సెట్టింగ్ ఆన్ చేయబడినప్పుడు పరికరం రక్షణ లక్షణాలు ఈ పరికరంలో పని చేయవు."</string>
- <string name="mock_location_app" msgid="7966220972812881854">"అనుకృత స్థాన యాప్‌ను ఎంచుకోండి"</string>
+ <string name="mock_location_app" msgid="7966220972812881854">"కృత్రిమ స్థాన యాప్‌ను ఎంచుకోండి"</string>
<string name="mock_location_app_not_set" msgid="809543285495344223">"అనుకృత స్థాన యాప్ ఏదీ సెట్ చేయబడలేదు"</string>
<string name="mock_location_app_set" msgid="8966420655295102685">"అనుకృత స్థాన యాప్: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="debug_networking_category" msgid="7044075693643009662">"నెట్‌వర్కింగ్"</string>
- <string name="wifi_display_certification" msgid="8611569543791307533">"వైర్‌లెస్ ప్రదర్శన ప్రమాణీకరణ"</string>
+ <string name="wifi_display_certification" msgid="8611569543791307533">"వైర్‌లెస్ ప్రదర్శన ప్రామాణీకరణ"</string>
<string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi విశదీకృత లాగింగ్‌ను ప్రారంభించండి"</string>
<string name="mobile_data_always_on" msgid="8774857027458200434">"మొబైల్ డేటాని ఎల్లప్పుడూ యాక్టివ్‌గా ఉంచు"</string>
<string name="tethering_hardware_offload" msgid="7470077827090325814">"టెథెరింగ్ హార్డ్‌వేర్ వేగవృద్ధి"</string>
@@ -292,7 +289,7 @@
<string name="strict_mode" msgid="1938795874357830695">"ఖచ్చితమైన మోడ్ ప్రారంభించబడింది"</string>
<string name="strict_mode_summary" msgid="142834318897332338">"యాప్‌లు ప్రధాన థ్రెడ్‌లో సుదీర్ఘ చర్యలు చేసేటప్పుడు స్క్రీన్‌ను ఫ్లాష్ చేయండి"</string>
<string name="pointer_location" msgid="6084434787496938001">"పాయింటర్ స్థానం"</string>
- <string name="pointer_location_summary" msgid="840819275172753713">"ప్రస్తుత స్పర్శ డేటాను చూపేలా స్క్రీన్ అతివ్యాప్తి చేయండి"</string>
+ <string name="pointer_location_summary" msgid="840819275172753713">"ప్రస్తుత స్పర్శ డేటాను చూపుతోన్న స్క్రీన్"</string>
<string name="show_touches" msgid="2642976305235070316">"నొక్కినవి చూపు"</string>
<string name="show_touches_summary" msgid="6101183132903926324">"నొక్కినప్పుడు దృశ్యపరమైన ప్రతిస్పందన చూపు"</string>
<string name="show_screen_updates" msgid="5470814345876056420">"సర్ఫేస్ అప్‌డేట్‌లను చూపండి"</string>
@@ -302,7 +299,7 @@
<string name="show_hw_layers_updates" msgid="5645728765605699821">"హార్డ్‌వేర్ లేయర్‌ల అప్‌డేట్‌లను చూపు"</string>
<string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"హార్డ్‌వేర్ లేయర్‌లు అప్‌డేట్‌ చేయబడినప్పుడు వాటిని ఆకుపచ్చ రంగులో ఫ్లాష్ చేయి"</string>
<string name="debug_hw_overdraw" msgid="2968692419951565417">"GPU ఓవర్‌డ్రాను డీబగ్ చేయండి"</string>
- <string name="disable_overlays" msgid="2074488440505934665">"HW అతివ్యాప్తులను నిలిపివేయి"</string>
+ <string name="disable_overlays" msgid="2074488440505934665">"HW ప్రదర్శనలను నిలిపివేయి"</string>
<string name="disable_overlays_summary" msgid="3578941133710758592">"స్క్రీన్ కంపాజిటింగ్‌కు ఎల్లప్పుడూ GPUని ఉపయోగించు"</string>
<string name="simulate_color_space" msgid="6745847141353345872">"రంగు అంతరాన్ని అనుకరించు"</string>
<string name="enable_opengl_traces_title" msgid="6790444011053219871">"OpenGL ట్రేస్‌లను ప్రారంభించండి"</string>
@@ -310,7 +307,7 @@
<string name="usb_audio_disable_routing_summary" msgid="980282760277312264">"USB ఆడియో పరికరాలకు ఆటో. రూటింగ్‌ను నిలిపివేయండి"</string>
<string name="debug_layout" msgid="5981361776594526155">"లేఅవుట్ బౌండ్‌లు చూపు"</string>
<string name="debug_layout_summary" msgid="2001775315258637682">"క్లిప్ సరిహద్దులు, అంచులు మొ. చూపు"</string>
- <string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"RTL లేఅవుట్ దిశను నిర్భందం చేయండి"</string>
+ <string name="force_rtl_layout_all_locales" msgid="2259906643093138978">"RTL లేఅవుట్ దిశను నిర్బంధం చేయండి"</string>
<string name="force_rtl_layout_all_locales_summary" msgid="9192797796616132534">"అన్ని లొకేల్‌ల కోసం RTLకి స్క్రీన్ లేఅవుట్ దిశను నిర్భందించు"</string>
<string name="force_msaa" msgid="7920323238677284387">"నిర్భందం 4x MSAA"</string>
<string name="force_msaa_summary" msgid="9123553203895817537">"OpenGL ES 2.0 యాప్‌లలో 4x MSAAను ప్రారంభించండి"</string>
@@ -325,8 +322,8 @@
<string name="debug_applications_category" msgid="4206913653849771549">"యాప్‌లు"</string>
<string name="immediately_destroy_activities" msgid="1579659389568133959">"కార్యకలాపాలను ఉంచవద్దు"</string>
<string name="immediately_destroy_activities_summary" msgid="3592221124808773368">"ప్రతి కార్యకలాపాన్ని వినియోగదారు నిష్క్రమించిన వెంటనే తొలగించండి"</string>
- <string name="app_process_limit_title" msgid="4280600650253107163">"నేపథ్య ప్రాసెస్ పరిమితి"</string>
- <string name="show_all_anrs" msgid="4924885492787069007">"నేపథ్య ANRలను చూపు"</string>
+ <string name="app_process_limit_title" msgid="4280600650253107163">"బ్యాక్‌గ్రౌండ్ ప్రాసెస్ పరిమితి"</string>
+ <string name="show_all_anrs" msgid="4924885492787069007">"బ్యాక్‌గ్రౌండ్ ANRలను చూపు"</string>
<string name="show_all_anrs_summary" msgid="6636514318275139826">"నేపథ్య యాప్‌ల కోసం యాప్ ప్రతిస్పందించడం లేదు అనే డైలాగ్‌ను చూపు"</string>
<string name="show_notification_channel_warnings" msgid="1399948193466922683">"ఛానెల్ హెచ్చరికల నోటిఫికేషన్‌‌ను చూపు"</string>
<string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"చెల్లుబాటు అయ్యే ఛానెల్ లేకుండా యాప్ నోటిఫికేషన్‌ను పోస్ట్ చేస్తున్నప్పుడు స్క్రీన్‌పై హెచ్చరికను చూపిస్తుంది"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> వరకు"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"గత <xliff:g id="TIME">%1$s</xliff:g> కంటే ఎక్కువ ఉండేలా బ్యాటరీ జీవిత కాలాన్ని పెంచుకోండి"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> కంటే తక్కువ సమయం మిగిలి ఉంది"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> కంటే తక్కువ సమయం మిగిలి ఉంది (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> కంటే ఎక్కువ సమయం మిగిలి ఉంది (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ప్రతిసారి అడుగు"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"మీరు ఆఫ్‌ చేసే వరకు"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"ఇప్పుడే"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"ఈ పరికరం"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 2edf1a9473f7..62879d200674 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"พร้อมใช้งานผ่านทาง %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"แตะเพื่อลงชื่อสมัครใช้"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"เชื่อมต่อแล้ว ไม่พบอินเทอร์เน็ต"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"การเชื่อมต่อที่จำกัด"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"ไม่มีอินเทอร์เน็ต"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"ต้องลงชื่อเข้าใช้"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"จุดเข้าใช้งานเต็มชั่วคราว"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"เชื่อมต่อแล้ว (ไม่รวมสื่อ) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"เชื่อมต่อแล้ว (ไม่รวมโทรศัพท์หรือสื่อ) แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"ใช้งานอยู่ แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"ใช้งานอยู่ L: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: แบตเตอรี่ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"ใช้งานอยู่"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"เสียงของสื่อ"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"โทรศัพท์"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"น่าจะใช้งานได้ถึงเวลาประมาณ <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"น่าจะใช้งานได้ถึงเวลาประมาณ <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"จนถึง <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"ยืดอายุการใช้งานแบตเตอรี่หลังเวลา <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"เหลืออีกไม่ถึง <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"เหลือเวลาอีกไม่ถึง <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"เหลือเวลามากกว่า <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ถามทุกครั้ง"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"จนกว่าคุณจะปิด"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"เมื่อสักครู่"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"อุปกรณ์นี้"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 763a45d2318e..c26ec600b767 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Available sa pamamagitan ng %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"I-tap para mag-sign up"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Nakakonekta, walang internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Limitadong koneksyon"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Walang internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Kinakailangang mag-sign in"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Pansamantalang puno ang access point"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Nakakonekta (walang media), baterya <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Nakakonekta (walang telepono o media), baterya <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Aktibo, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Aktibo, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterya, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterya"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> baterya"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterya, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterya"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Aktibo"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Audio ng media"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Mga tawag sa telepono"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Tatagal dapat nang hanggang humigit-kumulang <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Tatagal hanggang mga <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Hanggang <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Patagalin ang baterya nang lampas <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Wala nang <xliff:g id="THRESHOLD">%1$s</xliff:g> ang natitira"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Wala nang <xliff:g id="THRESHOLD">%1$s</xliff:g> ang natitira (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Mahigit <xliff:g id="TIME_REMAINING">%1$s</xliff:g> pa ang natitira (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Magtanong palagi"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Hanggang sa i-off mo"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Ngayon lang"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Ang device na ito"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 8da091c50c46..7ba5c5e03a15 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s üzerinden kullanılabilir"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Kaydolmak için dokunun"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Bağlı, internet yok"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Sınırlı bağlantı"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"İnternet yok"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Oturum açılması gerekiyor"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Erişim noktası geçici olarak dolu"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> cihazına bağlandı (medya yok), pil <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> cihazına bağlandı (telefon veya medya yok), pil seviyesi <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Etkin, pil düzeyi <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Etkin, Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> pil, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pil"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Pil düzeyi <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> pil, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pil"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Etkin"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Medya sesi"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefon çağrıları"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Saat yaklaşık <xliff:g id="TIME">%1$s</xliff:g> olana kadar kullanılabilmelidir (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Saat yaklaşık <xliff:g id="TIME">%1$s</xliff:g> olana kadar kullanılabilmelidir"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Şu saate kadar: <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Şu saatten sonra pil ömrünü uzat: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"En fazla <xliff:g id="THRESHOLD">%1$s</xliff:g> kaldı"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"En çok <xliff:g id="THRESHOLD">%1$s</xliff:g> kaldı (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"En az <xliff:g id="TIME_REMAINING">%1$s</xliff:g> kaldı (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Her zaman sor"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Siz kapatana kadar"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Az önce"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Bu cihaz"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 54d39c6a999c..b04765433f9d 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Доступ через %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Торкніться, щоб увійти"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Під’єднано, але немає доступу до Інтернету"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Обмежене з’єднання"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Немає Інтернету"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Потрібно ввійти в обліковий запис"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Точка доступу тимчасово переповнена"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> під’єднано (без медіа), заряд акумулятора – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> під’єднано (без телефона й медіа), заряд акумулятора – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Активовано, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Активний. Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> заряду акумулятора, П: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> заряду акумулятора"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> заряду акумулятора"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> заряду акумулятора, П: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> заряду акумулятора"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Активовано"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Звук медіа-файлів"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Телефонні дзвінки"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Вистачить приблизно до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Вистачить приблизно до <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"До <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Подовжити час роботи акумулятора до <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Залишилося менше ніж <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Залишилося менше ніж <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Залишилося понад <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -467,6 +463,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Запитувати щоразу"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Доки ви не вимкнете"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Щойно"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Цей пристрій"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 40333806ce99..ccd6a09adce4 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s orqali ishlaydi"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Yozilish uchun bosing"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Ulangan, lekin internet aloqasi yo‘q"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Cheklangan aloqa"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Internet yo‘q"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Hisob bilan kirish zarur"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Internet kirish nuqtasi vaqtinchalik to‘lgan"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> ulandi (mediadan tashqari), batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"<xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g> ulandi (telefon yoki mediadan tashqari), batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Faol, batariya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Faol, L: batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, R: batareya quvvati: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Faol"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Media audio"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefon chaqiruvlari"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Taxminan <xliff:g id="TIME">%1$s</xliff:g> gacha davom etadi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Taxminan <xliff:g id="TIME">%1$s</xliff:g> gacha davom etadi"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> gacha"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"<xliff:g id="TIME">%1$s</xliff:g> oʻtgach batareya quvvatini oshirish"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g>dan kamroq vaqt qoldi"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g>dan kamroq vaqt qoldi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>dan ko‘proq vaqt qoldi (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Har safar so‘ralsin"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Bekor qilinmaguncha"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Hozir"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Shu qurilma"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 65e3c17f308d..005fceabba8b 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Có sẵn qua %1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Nhấn để đăng ký"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Đã kết nối, không có Internet"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Kết nối giới hạn"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Không có Internet"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Yêu cầu đăng nhập"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Điểm truy cập tạm thời đã đạt đến giới hạn số lượng thiết bị truy cập."</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Đã kết nối (không có phương tiện), mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Đã kết nối (không có điện thoại hoặc phương tiện), mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Đang hoạt động, mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Đang hoạt động, Trái: Mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Phải: Mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"Mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"Trái: Mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>, Phải: Mức pin <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Đang hoạt động"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Âm thanh của phương tiện"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Cuộc gọi điện thoại"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Sẽ hết pin cho tới khoảng <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Sẽ hết pin cho tới khoảng <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Cho đến <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Kéo dài thời lượng pin qua <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Còn lại không đến <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Còn lại không đến <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Còn lại hơn <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Luôn hỏi"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Cho đến khi bạn tắt"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Vừa xong"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Thiết bị này"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index e9b8c93f447b..198baf6d5589 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"可通过%1$s连接"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"点按即可注册"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"已连接,但无法访问互联网"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"网络连接受限"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"无法访问互联网"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"必须登录"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"接入点暂时满载"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"已连接(无媒体信号),电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"已连接(无手机或媒体信号),电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> <xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"使用中,电池电量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"已启用,左:目前电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>;右:目前电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"电池电量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"左:目前电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>;右:目前电量为 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"使用中"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"媒体音频"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"通话"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"目前电量为 <xliff:g id="LEVEL">%2$s</xliff:g>,估计能用到<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"估计能用到<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"直到<xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"在<xliff:g id="TIME">%1$s</xliff:g> 之后延长电池续航时间"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"剩余电池续航时间不到 <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"电量剩余使用时间不到 <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"电量剩余使用时间超过 <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"每次都询问"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"直到您将其关闭"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"刚刚"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"此设备"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index f431c8b354af..c24724a595bd 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"可透過 %1$s 連線"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"輕按即可登入"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"已連線,但沒有互聯網"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"連線受限"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"沒有互聯網連線"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"必須登入"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"存取點暫時已滿"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"已連接 (無媒體音訊),電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"已連接 (無手機或媒體音訊),電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"使用中,電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"已啟用,左:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> 電量,右:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> 電量"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"左:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> 電量,右:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> 電量"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"使用中"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"媒體音效"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"通話"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"電量剩餘約 <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"電量剩餘約 <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"還可用到<xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"將電池壽命延長至 <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"剩餘電量時間少於 <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"還有少於 <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"還有超過 <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"每次都詢問"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"直至您關閉為止"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"剛剛"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"此裝置"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 33f18b7a7657..70818fa8dc66 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"可透過 %1$s 使用"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"輕觸即可註冊"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"已連線,沒有網際網路"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"連線能力受限"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"沒有網際網路連線"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"必須登入"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"存取點暫時滿載"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"已連線 (無媒體音訊),電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"已連線 (無手機或媒體音訊),電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"使用中,電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"已啟用,左:目前電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右:目前電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"電量:<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"左:目前電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g>,右:目前電量為 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g>"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"使用中"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"媒體音訊"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"通話"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"目前電量 <xliff:g id="LEVEL">%2$s</xliff:g>,預估還能持續使用到<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"預估還能持續使用到<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"還能持續使用到<xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"在 <xliff:g id="TIME">%1$s</xliff:g>後延長電池續航力"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"電池可用時間不到 <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"電池可用時間不到 <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"電池可用時間超過 <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"每次都詢問"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"直到你關閉為止"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"剛剛"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"這個裝置"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 364ac8c45200..83ea4c07cece 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -42,8 +42,7 @@
<string name="available_via_passpoint" msgid="1617440946846329613">"Iyatholakala nge-%1$s"</string>
<string name="tap_to_sign_up" msgid="6449724763052579434">"Thepha ukuze ubhalisele"</string>
<string name="wifi_connected_no_internet" msgid="8202906332837777829">"Kuxhunyiwe, ayikho i-inthanethi"</string>
- <!-- no translation found for wifi_limited_connection (7717855024753201527) -->
- <skip />
+ <string name="wifi_limited_connection" msgid="7717855024753201527">"Iqoqo elikhawulelwe"</string>
<string name="wifi_status_no_internet" msgid="5784710974669608361">"Ayikho i-inthanethi"</string>
<string name="wifi_status_sign_in_required" msgid="123517180404752756">"Ukungena ngemvume kuyadingeka"</string>
<string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"Iphoyinti lokufinyelela ligcwele okwesikhashana"</string>
@@ -75,11 +74,9 @@
<string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"Ixhunyiwe (ayikho imidiya), ibhethri iku-<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"Ixhunyiwe (ayikho ifoni noma imidiya), ibhethri ngu-<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
<string name="bluetooth_active_battery_level" msgid="3149689299296462009">"Kuyasebenza, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri"</string>
- <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) -->
- <skip />
+ <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"Kuyasebenza, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ibhethri, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ibhethri"</string>
<string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ibhethri"</string>
- <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) -->
- <skip />
+ <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> ibhethri, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> ibhethri"</string>
<string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"Iyasebenza"</string>
<string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"Umsindo wemidiya"</string>
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"Amakholi efoni"</string>
@@ -390,8 +387,7 @@
<string name="power_discharge_by" msgid="6453537733650125582">"Kumele ihlale cishe kube ngu-<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_discharge_by_only" msgid="107616694963545745">"Kumele ihlale cishe kube ngu-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_discharge_by_only_short" msgid="1372817269546888804">"Kuze kube ngu-<xliff:g id="TIME">%1$s</xliff:g>"</string>
- <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) -->
- <skip />
+ <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"Nweba impilo yebhethri idlule okungu-<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"Kusele okungaphansi kunokungu-<xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
<string name="power_remaining_less_than_duration" msgid="5751885147712659423">"Ngaphansi kuka-<xliff:g id="THRESHOLD">%1$s</xliff:g> osele (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"Ngaphezu kuka-<xliff:g id="TIME_REMAINING">%1$s</xliff:g> osele (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
@@ -465,6 +461,5 @@
<string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Buza njalo"</string>
<string name="zen_mode_forever" msgid="2704305038191592967">"Uze uvale isikrini"</string>
<string name="time_unit_just_now" msgid="6363336622778342422">"Khona manje"</string>
- <!-- no translation found for media_transfer_this_device_name (1636276898262571213) -->
- <skip />
+ <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Le divayisi"</string>
</resources>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index c6a995cb25f7..8a39b82c0bd9 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -34,6 +34,8 @@
<string name="wifi_security_short_eap" translatable="false">802.1x</string>
<!-- Do not translate. Concise terminology for wifi with WPA3 security -->
<string name="wifi_security_short_sae" translatable="false">WPA3</string>
+ <!-- Do not translate. Concise terminology for wifi with WPA2/WPA3 transition security -->
+ <string name="wifi_security_short_psk_sae" translatable="false">WPA2/WPA3</string>
<!-- Do not translate. Concise terminology for wifi with OWE security -->
<string name="wifi_security_short_owe" translatable="false">OWE</string>
<!-- Do not translate. Concise terminology for wifi with 802.1x EAP Suite-B security -->
@@ -58,6 +60,8 @@
<string name="wifi_security_passpoint" translatable="false">Passpoint</string>
<!-- Do not translate. Terminology for wifi with WPA3 security -->
<string name="wifi_security_sae" translatable="false">WPA3-Personal</string>
+ <!-- Do not translate. Terminology for wifi with WPA2/WPA3 Transition mode security -->
+ <string name="wifi_security_psk_sae" translatable="false">WPA2/WPA3-Personal</string>
<!-- Do not translate. Terminology for wifi with OWE security -->
<string name="wifi_security_owe" translatable="false">Enhanced Open</string>
<!-- Do not translate. Concise terminology for wifi with 802.1x EAP Suite-B security -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index d4d0519fcc5f..e02709e10e83 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -83,17 +83,18 @@ import java.util.regex.Pattern;
* as needed.
*/
public class ApplicationsState {
- static final String TAG = "ApplicationsState";
- static final boolean DEBUG = false;
- static final boolean DEBUG_LOCKING = false;
+ private static final String TAG = "ApplicationsState";
public static final int SIZE_UNKNOWN = -1;
public static final int SIZE_INVALID = -2;
- static final Pattern REMOVE_DIACRITICALS_PATTERN
+ private static final boolean DEBUG = false;
+ private static final boolean DEBUG_LOCKING = false;
+ private static final Object sLock = new Object();
+ private static final Pattern REMOVE_DIACRITICALS_PATTERN
= Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
- static final Object sLock = new Object();
+ @VisibleForTesting
static ApplicationsState sInstance;
public static ApplicationsState getInstance(Application app) {
@@ -126,13 +127,12 @@ public class ApplicationsState {
// Information about all applications. Synchronize on mEntriesMap
// to protect access to these.
- final ArrayList<Session> mSessions = new ArrayList<Session>();
- final ArrayList<Session> mRebuildingSessions = new ArrayList<Session>();
+ final ArrayList<Session> mSessions = new ArrayList<>();
+ final ArrayList<Session> mRebuildingSessions = new ArrayList<>();
private InterestingConfigChanges mInterestingConfigChanges = new InterestingConfigChanges();
// Map: userid => (Map: package name => AppEntry)
- final SparseArray<HashMap<String, AppEntry>> mEntriesMap =
- new SparseArray<HashMap<String, AppEntry>>();
- final ArrayList<AppEntry> mAppEntries = new ArrayList<AppEntry>();
+ final SparseArray<HashMap<String, AppEntry>> mEntriesMap = new SparseArray<>();
+ final ArrayList<AppEntry> mAppEntries = new ArrayList<>();
List<ApplicationInfo> mApplications = new ArrayList<>();
long mCurId = 1;
UUID mCurComputingSizeUuid;
@@ -182,9 +182,10 @@ public class ApplicationsState {
mInterestingConfigChanges = interestingConfigChanges;
}
- public static final @SessionFlags int DEFAULT_SESSION_FLAGS =
+ @SessionFlags
+ public static final int DEFAULT_SESSION_FLAGS =
FLAG_SESSION_REQUEST_HOME_APP | FLAG_SESSION_REQUEST_ICONS |
- FLAG_SESSION_REQUEST_SIZES | FLAG_SESSION_REQUEST_LAUNCHER;
+ FLAG_SESSION_REQUEST_SIZES | FLAG_SESSION_REQUEST_LAUNCHER;
private ApplicationsState(Application app, IPackageManager iPackageManager) {
mContext = app;
@@ -194,7 +195,7 @@ public class ApplicationsState {
mUm = mContext.getSystemService(UserManager.class);
mStats = mContext.getSystemService(StorageStatsManager.class);
for (int userId : mUm.getProfileIdsWithDisabled(UserHandle.myUserId())) {
- mEntriesMap.put(userId, new HashMap<String, AppEntry>());
+ mEntriesMap.put(userId, new HashMap<>());
}
mThread = new HandlerThread("ApplicationsState.Loader",
@@ -683,9 +684,16 @@ public class ApplicationsState {
private AppEntry getEntryLocked(ApplicationInfo info) {
int userId = UserHandle.getUserId(info.uid);
AppEntry entry = mEntriesMap.get(userId).get(info.packageName);
- if (DEBUG) Log.i(TAG, "Looking up entry of pkg " + info.packageName + ": " + entry);
+ if (DEBUG) {
+ Log.i(TAG, "Looking up entry of pkg " + info.packageName + ": " + entry);
+ }
if (entry == null) {
- if (DEBUG) Log.i(TAG, "Creating AppEntry for " + info.packageName);
+ if (mHiddenModules.contains(info.packageName)) {
+ return null;
+ }
+ if (DEBUG) {
+ Log.i(TAG, "Creating AppEntry for " + info.packageName);
+ }
entry = new AppEntry(mContext, info, mCurId++);
mEntriesMap.get(userId).put(info.packageName, entry);
mAppEntries.add(entry);
@@ -759,7 +767,8 @@ public class ApplicationsState {
boolean mRebuildForeground;
private final boolean mHasLifecycle;
- @SessionFlags private int mFlags = DEFAULT_SESSION_FLAGS;
+ @SessionFlags
+ private int mFlags = DEFAULT_SESSION_FLAGS;
Session(Callbacks callbacks, Lifecycle lifecycle) {
mCallbacks = callbacks;
@@ -771,7 +780,8 @@ public class ApplicationsState {
}
}
- public @SessionFlags int getSessionFlags() {
+ @SessionFlags
+ public int getSessionFlags() {
return mFlags;
}
@@ -863,25 +873,32 @@ public class ApplicationsState {
filter.init(mContext);
}
- List<AppEntry> apps;
+ final List<AppEntry> apps;
synchronized (mEntriesMap) {
apps = new ArrayList<>(mAppEntries);
}
- ArrayList<AppEntry> filteredApps = new ArrayList<AppEntry>();
- if (DEBUG) Log.i(TAG, "Rebuilding...");
- for (int i = 0; i < apps.size(); i++) {
- AppEntry entry = apps.get(i);
+ ArrayList<AppEntry> filteredApps = new ArrayList<>();
+ if (DEBUG) {
+ Log.i(TAG, "Rebuilding...");
+ }
+ for (AppEntry entry : apps) {
if (entry != null && (filter == null || filter.filterApp(entry))) {
synchronized (mEntriesMap) {
- if (DEBUG_LOCKING) Log.v(TAG, "rebuild acquired lock");
+ if (DEBUG_LOCKING) {
+ Log.v(TAG, "rebuild acquired lock");
+ }
if (comparator != null) {
// Only need the label if we are going to be sorting.
entry.ensureLabel(mContext);
}
- if (DEBUG) Log.i(TAG, "Using " + entry.info.packageName + ": " + entry);
+ if (DEBUG) {
+ Log.i(TAG, "Using " + entry.info.packageName + ": " + entry);
+ }
filteredApps.add(entry);
- if (DEBUG_LOCKING) Log.v(TAG, "rebuild releasing lock");
+ if (DEBUG_LOCKING) {
+ Log.v(TAG, "rebuild releasing lock");
+ }
}
}
}
@@ -1290,7 +1307,8 @@ public class ApplicationsState {
}
}
- private @SessionFlags int getCombinedSessionFlags(List<Session> sessions) {
+ @SessionFlags
+ private int getCombinedSessionFlags(List<Session> sessions) {
synchronized (mEntriesMap) {
int flags = 0;
for (Session session : sessions) {
@@ -1601,7 +1619,7 @@ public class ApplicationsState {
}
if (object1.info != null && object2.info != null) {
compareResult =
- sCollator.compare(object1.info.packageName, object2.info.packageName);
+ sCollator.compare(object1.info.packageName, object2.info.packageName);
if (compareResult != 0) {
return compareResult;
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java b/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java
index 74057be8434b..ff40d8e00603 100644
--- a/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java
+++ b/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java
@@ -20,14 +20,12 @@ import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageItemInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
-import android.graphics.drawable.Drawable;
import android.location.SettingInjectorService;
import android.os.Bundle;
import android.os.Handler;
@@ -37,9 +35,9 @@ import android.os.Messenger;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.AttributeSet;
-import android.util.IconDrawableFactory;
import android.util.Log;
import android.util.Xml;
@@ -56,8 +54,8 @@ import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -157,22 +155,8 @@ public class SettingsInjector {
* Adds the InjectedSetting information to a Preference object
*/
private void populatePreference(Preference preference, InjectedSetting setting) {
- final PackageManager pm = mContext.getPackageManager();
- Drawable appIcon = null;
- try {
- final PackageItemInfo itemInfo = new PackageItemInfo();
- itemInfo.icon = setting.iconId;
- itemInfo.packageName = setting.packageName;
- final ApplicationInfo appInfo = pm.getApplicationInfo(setting.packageName,
- PackageManager.GET_META_DATA);
- appIcon = IconDrawableFactory.newInstance(mContext)
- .getBadgedIcon(itemInfo, appInfo, setting.mUserHandle.getIdentifier());
- } catch (PackageManager.NameNotFoundException e) {
- Log.e(TAG, "Can't get ApplicationInfo for " + setting.packageName, e);
- }
preference.setTitle(setting.title);
preference.setSummary(R.string.loading_injected_setting_summary);
- preference.setIcon(appIcon);
preference.setOnPreferenceClickListener(new ServiceSettingClickedListener(setting));
}
@@ -182,13 +166,15 @@ public class SettingsInjector {
* @param profileId Identifier of the user/profile to obtain the injected settings for or
* UserHandle.USER_CURRENT for all profiles associated with current user.
*/
- public List<Preference> getInjectedSettings(Context prefContext, final int profileId) {
+ public Map<Integer, List<Preference>> getInjectedSettings(Context prefContext,
+ final int profileId) {
final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
final List<UserHandle> profiles = um.getUserProfiles();
- ArrayList<Preference> prefs = new ArrayList<>();
+ final ArrayMap<Integer, List<Preference>> result = new ArrayMap<>();
mSettings.clear();
for (UserHandle userHandle : profiles) {
if (profileId == UserHandle.USER_CURRENT || profileId == userHandle.getIdentifier()) {
+ final List<Preference> prefs = new ArrayList<>();
Iterable<InjectedSetting> settings = getSettings(userHandle);
for (InjectedSetting setting : settings) {
Preference preference = createPreference(prefContext, setting);
@@ -196,12 +182,14 @@ public class SettingsInjector {
prefs.add(preference);
mSettings.add(new Setting(setting, preference));
}
+ if (!prefs.isEmpty()) {
+ result.put(userHandle.getIdentifier(), prefs);
+ }
}
}
reloadStatusMessages();
-
- return prefs;
+ return result;
}
/**
@@ -303,28 +291,6 @@ public class SettingsInjector {
}
/**
- * Checks wheteher there is any preference that other apps have injected.
- *
- * @param profileId Identifier of the user/profile to obtain the injected settings for or
- * UserHandle.USER_CURRENT for all profiles associated with current user.
- */
- public boolean hasInjectedSettings(final int profileId) {
- final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
- final List<UserHandle> profiles = um.getUserProfiles();
- final int profileCount = profiles.size();
- for (int i = 0; i < profileCount; ++i) {
- final UserHandle userHandle = profiles.get(i);
- if (profileId == UserHandle.USER_CURRENT || profileId == userHandle.getIdentifier()) {
- Iterable<InjectedSetting> settings = getSettings(userHandle);
- for (InjectedSetting setting : settings) {
- return true;
- }
- }
- }
- return false;
- }
-
- /**
* Reloads the status messages for all the preference items.
*/
public void reloadStatusMessages() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
index 2711e3175957..3a53d29f7618 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
@@ -22,6 +22,7 @@ import android.graphics.drawable.Drawable;
import android.util.Log;
import android.util.Pair;
+import com.android.settingslib.R;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
@@ -47,7 +48,9 @@ public class BluetoothMediaDevice extends MediaDevice {
@Override
public String getSummary() {
- return mCachedDevice.getConnectionSummary();
+ return isConnected() || mCachedDevice.isBusy()
+ ? mCachedDevice.getConnectionSummary()
+ : mContext.getString(R.string.bluetooth_disconnected);
}
@Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 8a88a4c64d0a..1976ec45bf45 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -184,6 +184,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
private static final int PSK_WPA = 1;
private static final int PSK_WPA2 = 2;
private static final int PSK_WPA_WPA2 = 3;
+ private static final int PSK_SAE = 4;
/**
* The number of distinct wifi levels.
@@ -764,7 +765,7 @@ public class AccessPoint implements Comparable<AccessPoint> {
ssid = bestResult.SSID;
bssid = bestResult.BSSID;
security = getSecurity(bestResult);
- if (security == SECURITY_PSK) {
+ if (security == SECURITY_PSK || security == SECURITY_SAE) {
pskType = getPskType(bestResult);
}
mIsCarrierAp = bestResult.isCarrierAp;
@@ -826,8 +827,13 @@ public class AccessPoint implements Comparable<AccessPoint> {
return concise ? context.getString(R.string.wifi_security_short_wep) :
context.getString(R.string.wifi_security_wep);
case SECURITY_SAE:
- return concise ? context.getString(R.string.wifi_security_short_sae) :
- context.getString(R.string.wifi_security_sae);
+ if (pskType == PSK_SAE) {
+ return concise ? context.getString(R.string.wifi_security_short_psk_sae) :
+ context.getString(R.string.wifi_security_psk_sae);
+ } else {
+ return concise ? context.getString(R.string.wifi_security_short_sae) :
+ context.getString(R.string.wifi_security_sae);
+ }
case SECURITY_OWE:
return concise ? context.getString(R.string.wifi_security_short_owe) :
context.getString(R.string.wifi_security_owe);
@@ -1460,15 +1466,22 @@ public class AccessPoint implements Comparable<AccessPoint> {
private static int getPskType(ScanResult result) {
boolean wpa = result.capabilities.contains("WPA-PSK");
- boolean wpa2 = result.capabilities.contains("WPA2-PSK");
- if (wpa2 && wpa) {
+ boolean wpa2 = result.capabilities.contains("RSN-PSK");
+ boolean wpa3TransitionMode = result.capabilities.contains("PSK+SAE");
+ boolean wpa3 = result.capabilities.contains("RSN-SAE");
+ if (wpa3TransitionMode) {
+ return PSK_SAE;
+ } else if (wpa2 && wpa) {
return PSK_WPA_WPA2;
} else if (wpa2) {
return PSK_WPA2;
} else if (wpa) {
return PSK_WPA;
} else {
- Log.w(TAG, "Received abnormal flag string: " + result.capabilities);
+ if (!wpa3) {
+ // Suppress warning for WPA3 only networks
+ Log.w(TAG, "Received abnormal flag string: " + result.capabilities);
+ }
return PSK_UNKNOWN;
}
}
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index d1b7c7572361..314b74a69147 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -154,6 +154,7 @@
<uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
<!-- Permission needed to rename bugreport notifications (so they're not shown as Shell) -->
<uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
+ <uses-permission android:name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE" />
<!-- Permission needed to hold a wakelock in dumpstate.cpp (drop_root_user()) -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Permission needed to enable/disable overlays -->
@@ -194,6 +195,9 @@
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
+ <!-- Permission required to test ContentResolver caching. -->
+ <uses-permission android:name="android.permission.CACHE_CONTENT" />
+
<application android:label="@string/app_label"
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="true">
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
index 42600c157387..834f4fc75dce 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
@@ -117,6 +117,7 @@ public interface QSTile {
public String expandedAccessibilityClassName;
public SlashState slash;
public boolean handlesLongClick = true;
+ public boolean showRippleEffect = true;
public boolean copyTo(State other) {
if (other == null) throw new IllegalArgumentException();
@@ -135,7 +136,8 @@ public interface QSTile {
|| !Objects.equals(other.isTransient, isTransient)
|| !Objects.equals(other.dualTarget, dualTarget)
|| !Objects.equals(other.slash, slash)
- || !Objects.equals(other.handlesLongClick, handlesLongClick);
+ || !Objects.equals(other.handlesLongClick, handlesLongClick)
+ || !Objects.equals(other.showRippleEffect, showRippleEffect);
other.icon = icon;
other.iconSupplier = iconSupplier;
other.label = label;
@@ -149,6 +151,7 @@ public interface QSTile {
other.isTransient = isTransient;
other.slash = slash != null ? slash.copy() : null;
other.handlesLongClick = handlesLongClick;
+ other.showRippleEffect = showRippleEffect;
return changed;
}
diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml
index 2e081f70791d..ad4523ca9a38 100644
--- a/packages/SystemUI/res-keyguard/values-af/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-af/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"uur"</item>
- <item msgid="8837126587669001578">"Een"</item>
- <item msgid="4294343372940455660">"Twee"</item>
- <item msgid="7129166637707421536">"Drie"</item>
- <item msgid="7579404865008788673">"Vier"</item>
- <item msgid="3873924689207380586">"Vyf"</item>
- <item msgid="4849565597850069377">"Ses"</item>
- <item msgid="4404219424523572364">"Sewe"</item>
- <item msgid="8740481214764087329">"Agt"</item>
- <item msgid="1713216865806811237">"Nege"</item>
+ <item msgid="2091812961809760681">"Nul een"</item>
+ <item msgid="1496435384877290709">"Nul twee"</item>
+ <item msgid="881846472976674129">"Nul drie"</item>
+ <item msgid="2784477043911540584">"Nul vier"</item>
+ <item msgid="1610928853656700614">"Nul vyf"</item>
+ <item msgid="2317806244043886658">"Nul ses"</item>
+ <item msgid="3318687539120971327">"Nul sewe"</item>
+ <item msgid="5701600693712102348">"Nul agt"</item>
+ <item msgid="3247381605947372495">"Nul nege"</item>
<item msgid="3508406095411245038">"Tien"</item>
<item msgid="7161996337755311711">"Elf"</item>
<item msgid="4044549963329624197">"Twaalf"</item>
diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml
index 1f6b3ca4fbd9..a5f33dfc27cf 100644
--- a/packages/SystemUI/res-keyguard/values-am/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-am/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"ሰዓት"</item>
- <item msgid="8837126587669001578">"አንድ"</item>
- <item msgid="4294343372940455660">"ሁለት"</item>
- <item msgid="7129166637707421536">"ሶስት"</item>
- <item msgid="7579404865008788673">"አራት"</item>
- <item msgid="3873924689207380586">"አምስት"</item>
- <item msgid="4849565597850069377">"ስድስት"</item>
- <item msgid="4404219424523572364">"ሰባት"</item>
- <item msgid="8740481214764087329">"ስምንት"</item>
- <item msgid="1713216865806811237">"ዘጠኝ"</item>
+ <item msgid="2091812961809760681">"ኦ አንድ"</item>
+ <item msgid="1496435384877290709">"ኦ ሁለት"</item>
+ <item msgid="881846472976674129">"ኦ ሦስት"</item>
+ <item msgid="2784477043911540584">"ኦ አራት"</item>
+ <item msgid="1610928853656700614">"ኦ አምስት"</item>
+ <item msgid="2317806244043886658">"ኦ ስድስት"</item>
+ <item msgid="3318687539120971327">"ኦ ሰባት"</item>
+ <item msgid="5701600693712102348">"ኦ ስምንት"</item>
+ <item msgid="3247381605947372495">"ኦ ዘጠኝ"</item>
<item msgid="3508406095411245038">"አስር"</item>
<item msgid="7161996337755311711">"አስራ አንድ"</item>
<item msgid="4044549963329624197">"አስራ ሁለት"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index c7b6ccdcd80d..dbc7d48dbf9f 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -205,13 +205,66 @@
<item msgid="2233497913571137419">"العاشرة"</item>
<item msgid="5621554266768657830">"الحادية عشرة"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"بالضبط"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
+ <item msgid="3508406095411245038">"عَشر"</item>
+ <item msgid="7161996337755311711">"إحدى عشرة"</item>
+ <item msgid="4044549963329624197">"اثنتا عشرة"</item>
+ <item msgid="333373157917379088">"ثلاث عشرة"</item>
+ <item msgid="2631202907124819385">"أربع عشرة"</item>
+ <item msgid="6472396076858033453">"خمس عشرة"</item>
+ <item msgid="8656981856181581643">"ست عشرة"</item>
+ <item msgid="7289026608562030619">"سبع عشرة"</item>
+ <item msgid="3881477602692646573">"ثمان عشرة"</item>
+ <item msgid="3358129827772984226">"تسع عشرة"</item>
+ <item msgid="3308575407402865807">"عشرون"</item>
+ <item msgid="5346560955382229629">"إحدى\nوعشرون"</item>
+ <item msgid="226750304761473436">"اثنتان\nوعشرون"</item>
+ <item msgid="616811325336838734">"ثلاث\nوعشرون"</item>
+ <item msgid="616346116869053440">"أربع\nوعشرون"</item>
+ <item msgid="4642996410384042830">"خمس\nوعشرون"</item>
+ <item msgid="7506092849993571465">"ست\nوعشرون"</item>
+ <item msgid="1915078191101042031">"سبع\nوعشرون"</item>
+ <item msgid="4292378641900520252">"ثمانٍ\nوعشرون"</item>
+ <item msgid="5339513901773103696">"تسع\nوعشرون"</item>
+ <item msgid="3574673250891657607">"ثلاثون"</item>
+ <item msgid="5796923836589110940">"إحدى\nوثلاثون"</item>
+ <item msgid="5859323597571702052">"اثنتا\nوثلاثون"</item>
+ <item msgid="5133326723148876507">"ثلاث\nوثلاثون"</item>
+ <item msgid="2693999494655663096">"أربع\nوثلاثون"</item>
+ <item msgid="3316754944962836197">"خمس\nوثلاثون"</item>
+ <item msgid="816891008836796723">"ست\nوثلاثون"</item>
+ <item msgid="9158890488666520078">"سبع\nوثلاثون"</item>
+ <item msgid="1894769703213894011">"ثمانٍ\nوثلاثون"</item>
+ <item msgid="5638820345598572399">"تسع\nوثلاثون"</item>
+ <item msgid="8838304023017895439">"أربعون"</item>
+ <item msgid="1834742948932559597">"واحد\nوأربعون"</item>
+ <item msgid="6573707308847773944">"اثنتان\nوأربعون"</item>
+ <item msgid="2450149950652678001">"ثلاث\nوأربعون"</item>
+ <item msgid="2874667401318178036">"أربع\nوأربعون"</item>
+ <item msgid="3391101532763048862">"خمس\nوأربعون"</item>
+ <item msgid="1671489330863254362">"ست\nوأربعون"</item>
+ <item msgid="5916017359554531038">"سبع\nوأربعون"</item>
+ <item msgid="8205413177993059967">"ثمانٍ\nوأربعون"</item>
+ <item msgid="6607867415142171302">"تسع\nوأربعون"</item>
+ <item msgid="8358850748472089162">"خمسون"</item>
+ <item msgid="3551313125255080234">"إحدى\nوخمسون"</item>
+ <item msgid="1559678130725716542">"اثنتان\nوخمسون"</item>
+ <item msgid="431441994725492377">"ثلاث\nوخمسون"</item>
+ <item msgid="6345774640539623024">"أربع\nوخمسون"</item>
+ <item msgid="8018192990793931120">"خمس\nوخمسون"</item>
+ <item msgid="6187650843754604534">"ست\nوخمسون"</item>
+ <item msgid="8727240174015993259">"سبع\nوخمسون"</item>
+ <item msgid="848339003778952950">"ثمانٍ\nوخمسون"</item>
+ <item msgid="5798985802835423618">"تسع\nوخمسون"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml
index 21a06137bff7..a3e061c0e098 100644
--- a/packages/SystemUI/res-keyguard/values-as/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-as/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"বাজিছে"</item>
- <item msgid="8837126587669001578">"এক"</item>
- <item msgid="4294343372940455660">"দুই"</item>
- <item msgid="7129166637707421536">"তিনি"</item>
- <item msgid="7579404865008788673">"চাৰি"</item>
- <item msgid="3873924689207380586">"পাঁচ"</item>
- <item msgid="4849565597850069377">"ছয়"</item>
- <item msgid="4404219424523572364">"সাত"</item>
- <item msgid="8740481214764087329">"আঠ"</item>
- <item msgid="1713216865806811237">"ন"</item>
+ <item msgid="2091812961809760681">"এক"</item>
+ <item msgid="1496435384877290709">"দুই"</item>
+ <item msgid="881846472976674129">"তিনি"</item>
+ <item msgid="2784477043911540584">"চাৰি"</item>
+ <item msgid="1610928853656700614">"পাঁচ"</item>
+ <item msgid="2317806244043886658">"ছয়"</item>
+ <item msgid="3318687539120971327">"সাত"</item>
+ <item msgid="5701600693712102348">"আঠ"</item>
+ <item msgid="3247381605947372495">"ন"</item>
<item msgid="3508406095411245038">"দহ"</item>
<item msgid="7161996337755311711">"এঘাৰ"</item>
<item msgid="4044549963329624197">"বাৰ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml
index 39e3b7bd45f4..c6c52c64a6e6 100644
--- a/packages/SystemUI/res-keyguard/values-az/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-az/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Saat"</item>
- <item msgid="8837126587669001578">"Bir"</item>
- <item msgid="4294343372940455660">"İki"</item>
- <item msgid="7129166637707421536">"Üç"</item>
- <item msgid="7579404865008788673">"Dörd"</item>
- <item msgid="3873924689207380586">"Beş"</item>
- <item msgid="4849565597850069377">"Altı"</item>
- <item msgid="4404219424523572364">"Yeddi"</item>
- <item msgid="8740481214764087329">"Səkkiz"</item>
- <item msgid="1713216865806811237">"doqquz"</item>
+ <item msgid="2091812961809760681">"Bir"</item>
+ <item msgid="1496435384877290709">"İki"</item>
+ <item msgid="881846472976674129">"Üç"</item>
+ <item msgid="2784477043911540584">"Dörd"</item>
+ <item msgid="1610928853656700614">"Beş"</item>
+ <item msgid="2317806244043886658">"Altı"</item>
+ <item msgid="3318687539120971327">"Yeddi"</item>
+ <item msgid="5701600693712102348">"Səkkiz"</item>
+ <item msgid="3247381605947372495">"Doqquz"</item>
<item msgid="3508406095411245038">"On"</item>
<item msgid="7161996337755311711">"On bir"</item>
<item msgid="4044549963329624197">"On iki"</item>
diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
index fb2c4f672165..b802dadc106e 100644
--- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
@@ -180,15 +180,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"sata(i)"</item>
- <item msgid="8837126587669001578">"jedan"</item>
- <item msgid="4294343372940455660">"dva"</item>
- <item msgid="7129166637707421536">"tri"</item>
- <item msgid="7579404865008788673">"četiri"</item>
- <item msgid="3873924689207380586">"pet"</item>
- <item msgid="4849565597850069377">"šest"</item>
- <item msgid="4404219424523572364">"sedam"</item>
- <item msgid="8740481214764087329">"osam"</item>
- <item msgid="1713216865806811237">"devet"</item>
+ <item msgid="2091812961809760681">"jedan"</item>
+ <item msgid="1496435384877290709">"dva"</item>
+ <item msgid="881846472976674129">"tri"</item>
+ <item msgid="2784477043911540584">"četiri"</item>
+ <item msgid="1610928853656700614">"pet"</item>
+ <item msgid="2317806244043886658">"šest"</item>
+ <item msgid="3318687539120971327">"sedam"</item>
+ <item msgid="5701600693712102348">"osam"</item>
+ <item msgid="3247381605947372495">"devet"</item>
<item msgid="3508406095411245038">"deset"</item>
<item msgid="7161996337755311711">"jedanaest"</item>
<item msgid="4044549963329624197">"dvanaest"</item>
diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml
index b6099ea7c9b8..b29b1b7a1cfa 100644
--- a/packages/SystemUI/res-keyguard/values-be/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-be/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"нуль нуль"</item>
- <item msgid="8837126587669001578">"нуль адна"</item>
- <item msgid="4294343372940455660">"нуль дзве"</item>
- <item msgid="7129166637707421536">"нуль тры"</item>
- <item msgid="7579404865008788673">"нуль чатыры"</item>
- <item msgid="3873924689207380586">"нуль пяць"</item>
- <item msgid="4849565597850069377">"нуль шэсць"</item>
- <item msgid="4404219424523572364">"нуль сем"</item>
- <item msgid="8740481214764087329">"нуль восем"</item>
- <item msgid="1713216865806811237">"нуль дзевяць"</item>
+ <item msgid="2091812961809760681">"Адна"</item>
+ <item msgid="1496435384877290709">"Дзве"</item>
+ <item msgid="881846472976674129">"Тры"</item>
+ <item msgid="2784477043911540584">"Чатыры"</item>
+ <item msgid="1610928853656700614">"Пяць"</item>
+ <item msgid="2317806244043886658">"Шэсць"</item>
+ <item msgid="3318687539120971327">"Сем"</item>
+ <item msgid="5701600693712102348">"Восем"</item>
+ <item msgid="3247381605947372495">"Дзевяць"</item>
<item msgid="3508406095411245038">"дзесяць"</item>
<item msgid="7161996337755311711">"адзінаццаць"</item>
<item msgid="4044549963329624197">"дванаццаць"</item>
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index b8c36c71ee50..2d3cf6f97088 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"часа"</item>
- <item msgid="8837126587669001578">"и една"</item>
- <item msgid="4294343372940455660">"и две"</item>
- <item msgid="7129166637707421536">"и три"</item>
- <item msgid="7579404865008788673">"и четири"</item>
- <item msgid="3873924689207380586">"и пет"</item>
- <item msgid="4849565597850069377">"и шест"</item>
- <item msgid="4404219424523572364">"и седем"</item>
- <item msgid="8740481214764087329">"и осем"</item>
- <item msgid="1713216865806811237">"и девет"</item>
+ <item msgid="2091812961809760681">"и една"</item>
+ <item msgid="1496435384877290709">"и две"</item>
+ <item msgid="881846472976674129">"и три"</item>
+ <item msgid="2784477043911540584">"и четири"</item>
+ <item msgid="1610928853656700614">"и пет"</item>
+ <item msgid="2317806244043886658">"и шест"</item>
+ <item msgid="3318687539120971327">"и седем"</item>
+ <item msgid="5701600693712102348">"и осем"</item>
+ <item msgid="3247381605947372495">"и девет"</item>
<item msgid="3508406095411245038">"десет"</item>
<item msgid="7161996337755311711">"единайсет"</item>
<item msgid="4044549963329624197">"дванайсет"</item>
diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml
index f3dcf82e66ff..375b74cc262c 100644
--- a/packages/SystemUI/res-keyguard/values-bn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"বাজচ্ছে"</item>
- <item msgid="8837126587669001578">"এক"</item>
- <item msgid="4294343372940455660">"দুই"</item>
- <item msgid="7129166637707421536">"তিন"</item>
- <item msgid="7579404865008788673">"চার"</item>
- <item msgid="3873924689207380586">"পাঁচ"</item>
- <item msgid="4849565597850069377">"ছয়"</item>
- <item msgid="4404219424523572364">"সাত"</item>
- <item msgid="8740481214764087329">"আট"</item>
- <item msgid="1713216865806811237">"নয়"</item>
+ <item msgid="2091812961809760681">"এক"</item>
+ <item msgid="1496435384877290709">"দুই"</item>
+ <item msgid="881846472976674129">"তিন"</item>
+ <item msgid="2784477043911540584">"চার"</item>
+ <item msgid="1610928853656700614">"পাঁচ"</item>
+ <item msgid="2317806244043886658">"ছয়"</item>
+ <item msgid="3318687539120971327">"সাত"</item>
+ <item msgid="5701600693712102348">"আট"</item>
+ <item msgid="3247381605947372495">"নয়"</item>
<item msgid="3508406095411245038">"দশ"</item>
<item msgid="7161996337755311711">"ইলেভেন"</item>
<item msgid="4044549963329624197">"বারো"</item>
diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml
index 5d60b9208f74..3258ec71b5c6 100644
--- a/packages/SystemUI/res-keyguard/values-bs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml
@@ -180,15 +180,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"sata(i)"</item>
- <item msgid="8837126587669001578">"Jedna"</item>
- <item msgid="4294343372940455660">"Dvije"</item>
- <item msgid="7129166637707421536">"Tri"</item>
- <item msgid="7579404865008788673">"Četiri"</item>
- <item msgid="3873924689207380586">"Pet"</item>
- <item msgid="4849565597850069377">"Šest"</item>
- <item msgid="4404219424523572364">"Sedam"</item>
- <item msgid="8740481214764087329">"Osam"</item>
- <item msgid="1713216865806811237">"Devet"</item>
+ <item msgid="2091812961809760681">"Jedan"</item>
+ <item msgid="1496435384877290709">"Dva"</item>
+ <item msgid="881846472976674129">"Tri"</item>
+ <item msgid="2784477043911540584">"Četiri"</item>
+ <item msgid="1610928853656700614">"Pet"</item>
+ <item msgid="2317806244043886658">"Šest"</item>
+ <item msgid="3318687539120971327">"Sedam"</item>
+ <item msgid="5701600693712102348">"Osam"</item>
+ <item msgid="3247381605947372495">"Devet"</item>
<item msgid="3508406095411245038">"Deset"</item>
<item msgid="7161996337755311711">"Jedanaest"</item>
<item msgid="4044549963329624197">"Dvanaest"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml
index 62c313c4e054..a74373fa7fc7 100644
--- a/packages/SystemUI/res-keyguard/values-ca/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml
@@ -112,7 +112,7 @@
<item quantity="other">El codi PUK de la SIM no és correcte. Et queden <xliff:g id="NUMBER_1">%d</xliff:g> intents; si els esgotes tots, la SIM no es podrà tornar a fer servir.</item>
<item quantity="one">El codi PUK de la SIM no és correcte. Et queda <xliff:g id="NUMBER_0">%d</xliff:g> intent; si no l\'encertes, la SIM no es podrà tornar a fer servir.</item>
</plurals>
- <string name="kg_password_pin_failed" msgid="8769990811451236223">"No s\'ha pogut desbloquejar la SIM amb el codi PIN."</string>
+ <string name="kg_password_pin_failed" msgid="8769990811451236223">"Ha fallat l\'operació del PIN de la SIM"</string>
<string name="kg_password_puk_failed" msgid="1331621440873439974">"No s\'ha pogut desbloquejar la SIM amb el codi PUK."</string>
<string name="kg_pin_accepted" msgid="7637293533973802143">"S\'ha acceptat el codi."</string>
<string name="keyguard_carrier_default" msgid="4274828292998453695">"Sense servei"</string>
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Deu"</item>
<item msgid="5621554266768657830">"i onze"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"en punt"</item>
+ <item msgid="2091812961809760681">"I un"</item>
+ <item msgid="1496435384877290709">"I dos"</item>
+ <item msgid="881846472976674129">"I tres"</item>
+ <item msgid="2784477043911540584">"I quatre"</item>
+ <item msgid="1610928853656700614">"I cinc"</item>
+ <item msgid="2317806244043886658">"I sis"</item>
+ <item msgid="3318687539120971327">"I set"</item>
+ <item msgid="5701600693712102348">"I vuit"</item>
+ <item msgid="3247381605947372495">"I nou"</item>
+ <item msgid="3508406095411245038">"i deu"</item>
+ <item msgid="7161996337755311711">"i onze"</item>
+ <item msgid="4044549963329624197">"i dotze"</item>
+ <item msgid="333373157917379088">"i tretze"</item>
+ <item msgid="2631202907124819385">"i catorze"</item>
+ <item msgid="6472396076858033453">"i quinze"</item>
+ <item msgid="8656981856181581643">"i setze"</item>
+ <item msgid="7289026608562030619">"i disset"</item>
+ <item msgid="3881477602692646573">"i divuit"</item>
+ <item msgid="3358129827772984226">"i dinou"</item>
+ <item msgid="3308575407402865807">"i vint"</item>
+ <item msgid="5346560955382229629">"i vint-i-\nu"</item>
+ <item msgid="226750304761473436">"i vint-i-\ndos"</item>
+ <item msgid="616811325336838734">"i vint-i-\ntres"</item>
+ <item msgid="616346116869053440">"i vint-i-\nquatre"</item>
+ <item msgid="4642996410384042830">"i vint-i-\ncinc"</item>
+ <item msgid="7506092849993571465">"i vint-i-\nsis"</item>
+ <item msgid="1915078191101042031">"i vint-i-\nset"</item>
+ <item msgid="4292378641900520252">"i vint-i-\nvuit"</item>
+ <item msgid="5339513901773103696">"i vint-i-\nnou"</item>
+ <item msgid="3574673250891657607">"i trenta"</item>
+ <item msgid="5796923836589110940">"i trenta-\nu"</item>
+ <item msgid="5859323597571702052">"i trenta-\ndos"</item>
+ <item msgid="5133326723148876507">"i trenta-\ntres"</item>
+ <item msgid="2693999494655663096">"i trenta-\nquatre"</item>
+ <item msgid="3316754944962836197">"i trenta-\ncinc"</item>
+ <item msgid="816891008836796723">"i trenta-\nsis"</item>
+ <item msgid="9158890488666520078">"i trenta-\nset"</item>
+ <item msgid="1894769703213894011">"i trenta-\nvuit"</item>
+ <item msgid="5638820345598572399">"i trenta-\nnou"</item>
+ <item msgid="8838304023017895439">"i quaranta"</item>
+ <item msgid="1834742948932559597">"i quaranta-\nu"</item>
+ <item msgid="6573707308847773944">"i quaranta-\ndos"</item>
+ <item msgid="2450149950652678001">"i quaranta-\ntres"</item>
+ <item msgid="2874667401318178036">"quaranta-\nquatre"</item>
+ <item msgid="3391101532763048862">"i quaranta-\ncinc"</item>
+ <item msgid="1671489330863254362">"i quaranta-\nsis"</item>
+ <item msgid="5916017359554531038">"i quaranta-\nset"</item>
+ <item msgid="8205413177993059967">"i quaranta-\nvuit"</item>
+ <item msgid="6607867415142171302">"i quaranta-\nnou"</item>
+ <item msgid="8358850748472089162">"i cinquanta"</item>
+ <item msgid="3551313125255080234">"i cinquanta-\nun"</item>
+ <item msgid="1559678130725716542">"i cinquanta-\ndos"</item>
+ <item msgid="431441994725492377">"i cinquanta-\ntres"</item>
+ <item msgid="6345774640539623024">"cinquanta-\nquatre"</item>
+ <item msgid="8018192990793931120">"i cinquanta-\ncinc"</item>
+ <item msgid="6187650843754604534">"i cinquanta-\nsis"</item>
+ <item msgid="8727240174015993259">"i cinquanta-\nset"</item>
+ <item msgid="848339003778952950">"i cinquanta-\nvuit"</item>
+ <item msgid="5798985802835423618">"i cinquanta-\nnou"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml
index beb94f326702..4a7f95b7f226 100644
--- a/packages/SystemUI/res-keyguard/values-cs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985"></item>
- <item msgid="8837126587669001578">"Jedna"</item>
- <item msgid="4294343372940455660">"Dvě"</item>
- <item msgid="7129166637707421536">"Tři"</item>
- <item msgid="7579404865008788673">"Čtyři"</item>
- <item msgid="3873924689207380586">"Pět"</item>
- <item msgid="4849565597850069377">"Šest"</item>
- <item msgid="4404219424523572364">"Sedm"</item>
- <item msgid="8740481214764087329">"Osm"</item>
- <item msgid="1713216865806811237">"Devět"</item>
+ <item msgid="2091812961809760681">"Nula jedna"</item>
+ <item msgid="1496435384877290709">"Nula dva"</item>
+ <item msgid="881846472976674129">"Nula tři"</item>
+ <item msgid="2784477043911540584">"Nula čtyři"</item>
+ <item msgid="1610928853656700614">"Nula pět"</item>
+ <item msgid="2317806244043886658">"Nula šest"</item>
+ <item msgid="3318687539120971327">"Nula sedm"</item>
+ <item msgid="5701600693712102348">"Nula osm"</item>
+ <item msgid="3247381605947372495">"Nula devět"</item>
<item msgid="3508406095411245038">"Deset"</item>
<item msgid="7161996337755311711">"Jedenáct"</item>
<item msgid="4044549963329624197">"Dvanáct"</item>
diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml
index 6924b5fbf799..3ade21a69b90 100644
--- a/packages/SystemUI/res-keyguard/values-da/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-da/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"-"</item>
- <item msgid="8837126587669001578">"Et"</item>
- <item msgid="4294343372940455660">"To"</item>
- <item msgid="7129166637707421536">"Tre"</item>
- <item msgid="7579404865008788673">"Fire"</item>
- <item msgid="3873924689207380586">"Fem"</item>
- <item msgid="4849565597850069377">"Seks"</item>
- <item msgid="4404219424523572364">"Syv"</item>
- <item msgid="8740481214764087329">"Otte"</item>
- <item msgid="1713216865806811237">"Ni"</item>
+ <item msgid="2091812961809760681">"Et"</item>
+ <item msgid="1496435384877290709">"To"</item>
+ <item msgid="881846472976674129">"Tre"</item>
+ <item msgid="2784477043911540584">"Fire"</item>
+ <item msgid="1610928853656700614">"Fem"</item>
+ <item msgid="2317806244043886658">"Seks"</item>
+ <item msgid="3318687539120971327">"Syv"</item>
+ <item msgid="5701600693712102348">"Otte"</item>
+ <item msgid="3247381605947372495">"Ni"</item>
<item msgid="3508406095411245038">"Ti"</item>
<item msgid="7161996337755311711">"Elleve"</item>
<item msgid="4044549963329624197">"Tolv"</item>
diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml
index 84603200b90b..6e7d909f7133 100644
--- a/packages/SystemUI/res-keyguard/values-de/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-de/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"zehn Uhr"</item>
<item msgid="5621554266768657830">"elf Uhr"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985"></item>
+ <item msgid="2091812961809760681">"Eins"</item>
+ <item msgid="1496435384877290709">"Zwei"</item>
+ <item msgid="881846472976674129">"Drei"</item>
+ <item msgid="2784477043911540584">"Vier"</item>
+ <item msgid="1610928853656700614">"Fünf"</item>
+ <item msgid="2317806244043886658">"Sechs"</item>
+ <item msgid="3318687539120971327">"Sieben"</item>
+ <item msgid="5701600693712102348">"Acht"</item>
+ <item msgid="3247381605947372495">"Neun"</item>
+ <item msgid="3508406095411245038">"zehn"</item>
+ <item msgid="7161996337755311711">"elf"</item>
+ <item msgid="4044549963329624197">"zwölf"</item>
+ <item msgid="333373157917379088">"dreizehn"</item>
+ <item msgid="2631202907124819385">"vierzehn"</item>
+ <item msgid="6472396076858033453">"fünfzehn"</item>
+ <item msgid="8656981856181581643">"sechzehn"</item>
+ <item msgid="7289026608562030619">"siebzehn"</item>
+ <item msgid="3881477602692646573">"achtzehn"</item>
+ <item msgid="3358129827772984226">"neunzehn"</item>
+ <item msgid="3308575407402865807">"zwanzig"</item>
+ <item msgid="5346560955382229629">"einund-\nzwanzig"</item>
+ <item msgid="226750304761473436">"zweiund-\nzwanzig"</item>
+ <item msgid="616811325336838734">"dreiund-\nzwanzig"</item>
+ <item msgid="616346116869053440">"vierund-\nzwanzig"</item>
+ <item msgid="4642996410384042830">"fünfund-\nzwanzig"</item>
+ <item msgid="7506092849993571465">"sechsund-\nzwanzig"</item>
+ <item msgid="1915078191101042031">"siebenund-\nzwanzig"</item>
+ <item msgid="4292378641900520252">"achtund-\nzwanzig"</item>
+ <item msgid="5339513901773103696">"neunund-\nzwanzig"</item>
+ <item msgid="3574673250891657607">"dreißig"</item>
+ <item msgid="5796923836589110940">"einund-\ndreißig"</item>
+ <item msgid="5859323597571702052">"zweiund-\ndreißig"</item>
+ <item msgid="5133326723148876507">"dreiund-\ndreißig"</item>
+ <item msgid="2693999494655663096">"vierund-\ndreißig"</item>
+ <item msgid="3316754944962836197">"fünfund-\ndreißig"</item>
+ <item msgid="816891008836796723">"sechsund-\ndreißig"</item>
+ <item msgid="9158890488666520078">"siebenund-\ndreißig"</item>
+ <item msgid="1894769703213894011">"achtund-\ndreißig"</item>
+ <item msgid="5638820345598572399">"neunund-\ndreißig"</item>
+ <item msgid="8838304023017895439">"vierzig"</item>
+ <item msgid="1834742948932559597">"einund-\nvierzig"</item>
+ <item msgid="6573707308847773944">"zweiund-\nvierzig"</item>
+ <item msgid="2450149950652678001">"dreiund-\nvierzig"</item>
+ <item msgid="2874667401318178036">"vierund-\nvierzig"</item>
+ <item msgid="3391101532763048862">"fünfund-\nvierzig"</item>
+ <item msgid="1671489330863254362">"sechsund-\nvierzig"</item>
+ <item msgid="5916017359554531038">"siebenund-\nvierzig"</item>
+ <item msgid="8205413177993059967">"achtund-\nvierzig"</item>
+ <item msgid="6607867415142171302">"neunund-\nvierzig"</item>
+ <item msgid="8358850748472089162">"fünfzig"</item>
+ <item msgid="3551313125255080234">"einund-\nfünfzig"</item>
+ <item msgid="1559678130725716542">"zweiund-\nfünfzig"</item>
+ <item msgid="431441994725492377">"dreiund-\nfünfzig"</item>
+ <item msgid="6345774640539623024">"vierund-\nfünfzig"</item>
+ <item msgid="8018192990793931120">"fünfund-\nfünfzig"</item>
+ <item msgid="6187650843754604534">"sechsund-\nfünfzig"</item>
+ <item msgid="8727240174015993259">"siebenund-\nfünfzig"</item>
+ <item msgid="848339003778952950">"achtund-\nfünfzig"</item>
+ <item msgid="5798985802835423618">"neunund-\nfünfzig"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml
index df0cc7d9f2e0..e1f52d947e14 100644
--- a/packages/SystemUI/res-keyguard/values-el/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-el/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Ακριβώς"</item>
- <item msgid="8837126587669001578">"Ένα"</item>
- <item msgid="4294343372940455660">"Δύο"</item>
- <item msgid="7129166637707421536">"Τρεις"</item>
- <item msgid="7579404865008788673">"Τέσσερα"</item>
- <item msgid="3873924689207380586">"Πέντε"</item>
- <item msgid="4849565597850069377">"Έξι"</item>
- <item msgid="4404219424523572364">"Επτά"</item>
- <item msgid="8740481214764087329">"Οκτώ"</item>
- <item msgid="1713216865806811237">"Εννέα"</item>
+ <item msgid="2091812961809760681">"Ένα"</item>
+ <item msgid="1496435384877290709">"Δύο"</item>
+ <item msgid="881846472976674129">"Τρία"</item>
+ <item msgid="2784477043911540584">"Τέσσερα"</item>
+ <item msgid="1610928853656700614">"Πέντε"</item>
+ <item msgid="2317806244043886658">"Έξι"</item>
+ <item msgid="3318687539120971327">"Επτά"</item>
+ <item msgid="5701600693712102348">"Οκτώ"</item>
+ <item msgid="3247381605947372495">"Εννέα"</item>
<item msgid="3508406095411245038">"Δέκα"</item>
<item msgid="7161996337755311711">"Έντεκα"</item>
<item msgid="4044549963329624197">"Δώδεκα"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
index 9709d72b81b9..15823e404e98 100644
--- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"O’Clock"</item>
- <item msgid="8837126587669001578">"O’One"</item>
- <item msgid="4294343372940455660">"O’Two"</item>
- <item msgid="7129166637707421536">"O’Three"</item>
- <item msgid="7579404865008788673">"O’Four"</item>
- <item msgid="3873924689207380586">"O’Five"</item>
- <item msgid="4849565597850069377">"O’Six"</item>
- <item msgid="4404219424523572364">"O’Seven"</item>
- <item msgid="8740481214764087329">"O’Eight"</item>
- <item msgid="1713216865806811237">"O’Nine"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
<item msgid="3508406095411245038">"Ten"</item>
<item msgid="7161996337755311711">"Eleven"</item>
<item msgid="4044549963329624197">"Twelve"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
index 3328f1b0c89b..d8a85c1aa856 100644
--- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"O’Clock"</item>
- <item msgid="8837126587669001578">"O’One"</item>
- <item msgid="4294343372940455660">"O’Two"</item>
- <item msgid="7129166637707421536">"O’Three"</item>
- <item msgid="7579404865008788673">"O’Four"</item>
- <item msgid="3873924689207380586">"O’Five"</item>
- <item msgid="4849565597850069377">"O’Six"</item>
- <item msgid="4404219424523572364">"O’Seven"</item>
- <item msgid="8740481214764087329">"O’Eight"</item>
- <item msgid="1713216865806811237">"O’Nine"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
<item msgid="3508406095411245038">"Ten"</item>
<item msgid="7161996337755311711">"Eleven"</item>
<item msgid="4044549963329624197">"Twelve"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
index 9709d72b81b9..15823e404e98 100644
--- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"O’Clock"</item>
- <item msgid="8837126587669001578">"O’One"</item>
- <item msgid="4294343372940455660">"O’Two"</item>
- <item msgid="7129166637707421536">"O’Three"</item>
- <item msgid="7579404865008788673">"O’Four"</item>
- <item msgid="3873924689207380586">"O’Five"</item>
- <item msgid="4849565597850069377">"O’Six"</item>
- <item msgid="4404219424523572364">"O’Seven"</item>
- <item msgid="8740481214764087329">"O’Eight"</item>
- <item msgid="1713216865806811237">"O’Nine"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
<item msgid="3508406095411245038">"Ten"</item>
<item msgid="7161996337755311711">"Eleven"</item>
<item msgid="4044549963329624197">"Twelve"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
index 9709d72b81b9..15823e404e98 100644
--- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"O’Clock"</item>
- <item msgid="8837126587669001578">"O’One"</item>
- <item msgid="4294343372940455660">"O’Two"</item>
- <item msgid="7129166637707421536">"O’Three"</item>
- <item msgid="7579404865008788673">"O’Four"</item>
- <item msgid="3873924689207380586">"O’Five"</item>
- <item msgid="4849565597850069377">"O’Six"</item>
- <item msgid="4404219424523572364">"O’Seven"</item>
- <item msgid="8740481214764087329">"O’Eight"</item>
- <item msgid="1713216865806811237">"O’Nine"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
<item msgid="3508406095411245038">"Ten"</item>
<item msgid="7161996337755311711">"Eleven"</item>
<item msgid="4044549963329624197">"Twelve"</item>
diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
index d2551aad74f1..cd51dd87836e 100644
--- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‏‎O’Clock‎‏‎‎‏‎"</item>
- <item msgid="8837126587669001578">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎O’One‎‏‎‎‏‎"</item>
- <item msgid="4294343372940455660">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎‎O’Two‎‏‎‎‏‎"</item>
- <item msgid="7129166637707421536">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‎‎‎‎O’Three‎‏‎‎‏‎"</item>
- <item msgid="7579404865008788673">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‏‎‎‎‎‎‏‎O’Four‎‏‎‎‏‎"</item>
- <item msgid="3873924689207380586">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‏‎‏‎‏‎‎O’Five‎‏‎‎‏‎"</item>
- <item msgid="4849565597850069377">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎O’Six‎‏‎‎‏‎"</item>
- <item msgid="4404219424523572364">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎O’Seven‎‏‎‎‏‎"</item>
- <item msgid="8740481214764087329">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‎O’Eight‎‏‎‎‏‎"</item>
- <item msgid="1713216865806811237">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‏‏‎‎‏‎‏‎O’Nine‎‏‎‎‏‎"</item>
+ <item msgid="2091812961809760681">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‎‎‏‎Oh One‎‏‎‎‏‎"</item>
+ <item msgid="1496435384877290709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‏‎‏‎‏‎Oh Two‎‏‎‎‏‎"</item>
+ <item msgid="881846472976674129">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‏‎‏‎‏‎‎‎‏‎Oh Three‎‏‎‎‏‎"</item>
+ <item msgid="2784477043911540584">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‏‎‎‏‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎Oh Four‎‏‎‎‏‎"</item>
+ <item msgid="1610928853656700614">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‎Oh Five‎‏‎‎‏‎"</item>
+ <item msgid="2317806244043886658">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‏‎‏‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎‏‎‎Oh Six‎‏‎‎‏‎"</item>
+ <item msgid="3318687539120971327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎Oh Seven‎‏‎‎‏‎"</item>
+ <item msgid="5701600693712102348">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‏‏‏‎‎‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎Oh Eight‎‏‎‎‏‎"</item>
+ <item msgid="3247381605947372495">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎Oh Nine‎‏‎‎‏‎"</item>
<item msgid="3508406095411245038">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎Ten‎‏‎‎‏‎"</item>
<item msgid="7161996337755311711">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‏‎‎‏‎‎‏‎‏‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎Eleven‎‏‎‎‏‎"</item>
<item msgid="4044549963329624197">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‏‎‎‏‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎Twelve‎‏‎‎‏‎"</item>
diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
index e1f7660622f2..f51a9af0f694 100644
--- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"En punto"</item>
- <item msgid="8837126587669001578">"y uno"</item>
- <item msgid="4294343372940455660">"y dos"</item>
- <item msgid="7129166637707421536">"y tres"</item>
- <item msgid="7579404865008788673">"y cuatro"</item>
- <item msgid="3873924689207380586">"y cinco"</item>
- <item msgid="4849565597850069377">"y seis"</item>
- <item msgid="4404219424523572364">"y siete"</item>
- <item msgid="8740481214764087329">"y ocho"</item>
- <item msgid="1713216865806811237">"y nueve"</item>
+ <item msgid="2091812961809760681">"Cero uno"</item>
+ <item msgid="1496435384877290709">"Cero dos"</item>
+ <item msgid="881846472976674129">"Cero tres"</item>
+ <item msgid="2784477043911540584">"Cero cuatro"</item>
+ <item msgid="1610928853656700614">"Cero cinco"</item>
+ <item msgid="2317806244043886658">"Cero seis"</item>
+ <item msgid="3318687539120971327">"Cero siete"</item>
+ <item msgid="5701600693712102348">"Cero ocho"</item>
+ <item msgid="3247381605947372495">"Cero nueve"</item>
<item msgid="3508406095411245038">"Diez"</item>
<item msgid="7161996337755311711">"Once"</item>
<item msgid="4044549963329624197">"Doce"</item>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index 9db0c6af1d41..481367e46700 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Diez"</item>
<item msgid="5621554266768657830">"Once"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"En punto"</item>
+ <item msgid="2091812961809760681">"Uno"</item>
+ <item msgid="1496435384877290709">"Dos"</item>
+ <item msgid="881846472976674129">"Tres"</item>
+ <item msgid="2784477043911540584">"Cuatro"</item>
+ <item msgid="1610928853656700614">"Cinco"</item>
+ <item msgid="2317806244043886658">"Seis"</item>
+ <item msgid="3318687539120971327">"Siete"</item>
+ <item msgid="5701600693712102348">"Ocho"</item>
+ <item msgid="3247381605947372495">"Nueve"</item>
+ <item msgid="3508406095411245038">"Diez"</item>
+ <item msgid="7161996337755311711">"Once"</item>
+ <item msgid="4044549963329624197">"Doce"</item>
+ <item msgid="333373157917379088">"Trece"</item>
+ <item msgid="2631202907124819385">"Catorce"</item>
+ <item msgid="6472396076858033453">"Quince"</item>
+ <item msgid="8656981856181581643">"Dieciséis"</item>
+ <item msgid="7289026608562030619">"Diecisiete"</item>
+ <item msgid="3881477602692646573">"Dieciocho"</item>
+ <item msgid="3358129827772984226">"Diecinueve"</item>
+ <item msgid="3308575407402865807">"Veinte"</item>
+ <item msgid="5346560955382229629">"Veintiuno\n"</item>
+ <item msgid="226750304761473436">"Veintidós\n"</item>
+ <item msgid="616811325336838734">"Veintitrés\n"</item>
+ <item msgid="616346116869053440">"Veinticuatro\n"</item>
+ <item msgid="4642996410384042830">"Veinticinco\n"</item>
+ <item msgid="7506092849993571465">"Veintiséis\n"</item>
+ <item msgid="1915078191101042031">"Veintisiete\n"</item>
+ <item msgid="4292378641900520252">"Veintiocho\n"</item>
+ <item msgid="5339513901773103696">"Veintinueve\n"</item>
+ <item msgid="3574673250891657607">"Treinta"</item>
+ <item msgid="5796923836589110940">"Treinta\ny uno"</item>
+ <item msgid="5859323597571702052">"Treinta\ny dos"</item>
+ <item msgid="5133326723148876507">"Treinta\ny tres"</item>
+ <item msgid="2693999494655663096">"Treinta\ny cuatro"</item>
+ <item msgid="3316754944962836197">"Treinta\ny cinco"</item>
+ <item msgid="816891008836796723">"Treinta\ny seis"</item>
+ <item msgid="9158890488666520078">"Treinta\ny siete"</item>
+ <item msgid="1894769703213894011">"Treinta\ny ocho"</item>
+ <item msgid="5638820345598572399">"Treinta\ny nueve"</item>
+ <item msgid="8838304023017895439">"Cuarenta"</item>
+ <item msgid="1834742948932559597">"Cuarenta\ny uno"</item>
+ <item msgid="6573707308847773944">"Cuarenta\ny dos"</item>
+ <item msgid="2450149950652678001">"Cuarenta\ny tres"</item>
+ <item msgid="2874667401318178036">"Cuarenta\ny cuatro"</item>
+ <item msgid="3391101532763048862">"Cuarenta\ny cinco"</item>
+ <item msgid="1671489330863254362">"Cuarenta\n y seis"</item>
+ <item msgid="5916017359554531038">"Cuarenta\ny siete"</item>
+ <item msgid="8205413177993059967">"Cuarenta\ny ocho"</item>
+ <item msgid="6607867415142171302">"Cuarenta\ny nueve"</item>
+ <item msgid="8358850748472089162">"Cincuenta"</item>
+ <item msgid="3551313125255080234">"Cincuenta\ny uno"</item>
+ <item msgid="1559678130725716542">"Cincuenta\ny dos"</item>
+ <item msgid="431441994725492377">"Cincuenta\ny tres"</item>
+ <item msgid="6345774640539623024">"Cincuenta\ny cuatro"</item>
+ <item msgid="8018192990793931120">"Cincuenta\ny cinco"</item>
+ <item msgid="6187650843754604534">"Cincuenta\ny seis"</item>
+ <item msgid="8727240174015993259">"Cincuenta\ny siete"</item>
+ <item msgid="848339003778952950">"Cincuenta\ny ocho"</item>
+ <item msgid="5798985802835423618">"Cincuenta\ny nueve"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml
index 04e4386e310c..eb7f943396a3 100644
--- a/packages/SystemUI/res-keyguard/values-et/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-et/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"null üks"</item>
- <item msgid="8837126587669001578">"null üks"</item>
- <item msgid="4294343372940455660">"null kaks"</item>
- <item msgid="7129166637707421536">"null kolm"</item>
- <item msgid="7579404865008788673">"null neli"</item>
- <item msgid="3873924689207380586">"null viis"</item>
- <item msgid="4849565597850069377">"null kuus"</item>
- <item msgid="4404219424523572364">"null seitse"</item>
- <item msgid="8740481214764087329">"null kaheksa"</item>
- <item msgid="1713216865806811237">"null üheksa"</item>
+ <item msgid="2091812961809760681">"null üks"</item>
+ <item msgid="1496435384877290709">"null kaks"</item>
+ <item msgid="881846472976674129">"null kolm"</item>
+ <item msgid="2784477043911540584">"null neli"</item>
+ <item msgid="1610928853656700614">"null viis"</item>
+ <item msgid="2317806244043886658">"null kuus"</item>
+ <item msgid="3318687539120971327">"null seitse"</item>
+ <item msgid="5701600693712102348">"null kaheksa"</item>
+ <item msgid="3247381605947372495">"null üheksa"</item>
<item msgid="3508406095411245038">"Kümme"</item>
<item msgid="7161996337755311711">"Üksteist"</item>
<item msgid="4044549963329624197">"Kaksteist"</item>
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index b69a57651940..12db5338893c 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Hamarrak"</item>
<item msgid="5621554266768657830">"Hamaikak"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"dira"</item>
+ <item msgid="2091812961809760681">"eta bat"</item>
+ <item msgid="1496435384877290709">"eta bi"</item>
+ <item msgid="881846472976674129">"eta hiru"</item>
+ <item msgid="2784477043911540584">"eta lau"</item>
+ <item msgid="1610928853656700614">"eta bost"</item>
+ <item msgid="2317806244043886658">"eta sei"</item>
+ <item msgid="3318687539120971327">"eta zazpi"</item>
+ <item msgid="5701600693712102348">"eta zortzi"</item>
+ <item msgid="3247381605947372495">"eta bederatzi"</item>
+ <item msgid="3508406095411245038">"hamar"</item>
+ <item msgid="7161996337755311711">"hamaika"</item>
+ <item msgid="4044549963329624197">"hamabi"</item>
+ <item msgid="333373157917379088">"hamahiru"</item>
+ <item msgid="2631202907124819385">"hamalau"</item>
+ <item msgid="6472396076858033453">"hamabost"</item>
+ <item msgid="8656981856181581643">"hamasei"</item>
+ <item msgid="7289026608562030619">"hamazazpi"</item>
+ <item msgid="3881477602692646573">"hemezortzi"</item>
+ <item msgid="3358129827772984226">"hemeretzi"</item>
+ <item msgid="3308575407402865807">"hogei"</item>
+ <item msgid="5346560955382229629">"hogeita\nbat"</item>
+ <item msgid="226750304761473436">"hogeita\nbi"</item>
+ <item msgid="616811325336838734">"hogeita\nhiru"</item>
+ <item msgid="616346116869053440">"hogeita\nlau"</item>
+ <item msgid="4642996410384042830">"hogeita\nbost"</item>
+ <item msgid="7506092849993571465">"hogeita\nsei"</item>
+ <item msgid="1915078191101042031">"hogeita\nzazpi"</item>
+ <item msgid="4292378641900520252">"hogeita\nzortzi"</item>
+ <item msgid="5339513901773103696">"hogeita\nbederatzi"</item>
+ <item msgid="3574673250891657607">"hogeita hamar"</item>
+ <item msgid="5796923836589110940">"hogeita\nhamaika"</item>
+ <item msgid="5859323597571702052">"hogeita\nhamabi"</item>
+ <item msgid="5133326723148876507">"hogeita\nhamahiru"</item>
+ <item msgid="2693999494655663096">"hogeita\nhamalau"</item>
+ <item msgid="3316754944962836197">"hogeita\nhamabost"</item>
+ <item msgid="816891008836796723">"hogeita\nhamasei"</item>
+ <item msgid="9158890488666520078">"hogeita\nhamazazpi"</item>
+ <item msgid="1894769703213894011">"hogeita\nhemezortzi"</item>
+ <item msgid="5638820345598572399">"hogeita\nhemeretzi"</item>
+ <item msgid="8838304023017895439">"berrogei"</item>
+ <item msgid="1834742948932559597">"berrogeita\nbat"</item>
+ <item msgid="6573707308847773944">"berrogeita\nbi"</item>
+ <item msgid="2450149950652678001">"berrogeita\nhiru"</item>
+ <item msgid="2874667401318178036">"berrogeita\nlau"</item>
+ <item msgid="3391101532763048862">"berrogeita\nbost"</item>
+ <item msgid="1671489330863254362">"berrogeita\nsei"</item>
+ <item msgid="5916017359554531038">"berrogeita\nzazpi"</item>
+ <item msgid="8205413177993059967">"berrogeita\nzortzi"</item>
+ <item msgid="6607867415142171302">"berrogeita\nbederatzi"</item>
+ <item msgid="8358850748472089162">"berrogeita hamar"</item>
+ <item msgid="3551313125255080234">"berrogeita\nhamaika"</item>
+ <item msgid="1559678130725716542">"berrogeita\nhamabi"</item>
+ <item msgid="431441994725492377">"berrogeita\nhamahiru"</item>
+ <item msgid="6345774640539623024">"berrogeita\nhamalau"</item>
+ <item msgid="8018192990793931120">"berrogeita\nhamabost"</item>
+ <item msgid="6187650843754604534">"berrogeita\nhamasei"</item>
+ <item msgid="8727240174015993259">"berrogeita\nhamazazpi"</item>
+ <item msgid="848339003778952950">"berrogeita\nhemezortzi"</item>
+ <item msgid="5798985802835423618">"berrogeita\nhemeretzi"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml
index 6c47f161837d..c9bb7c9a86b5 100644
--- a/packages/SystemUI/res-keyguard/values-fa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"ساعت"</item>
- <item msgid="8837126587669001578">"یک"</item>
- <item msgid="4294343372940455660">"دو"</item>
- <item msgid="7129166637707421536">"سه"</item>
- <item msgid="7579404865008788673">"چهار"</item>
- <item msgid="3873924689207380586">"پنج"</item>
- <item msgid="4849565597850069377">"شش"</item>
- <item msgid="4404219424523572364">"هفت"</item>
- <item msgid="8740481214764087329">"هشت"</item>
- <item msgid="1713216865806811237">"نه"</item>
+ <item msgid="2091812961809760681">"و یک"</item>
+ <item msgid="1496435384877290709">"و دو"</item>
+ <item msgid="881846472976674129">"و سه"</item>
+ <item msgid="2784477043911540584">"و چهار"</item>
+ <item msgid="1610928853656700614">"و پنج"</item>
+ <item msgid="2317806244043886658">"و شش"</item>
+ <item msgid="3318687539120971327">"و هفت"</item>
+ <item msgid="5701600693712102348">"و هشت"</item>
+ <item msgid="3247381605947372495">"و نُه"</item>
<item msgid="3508406095411245038">"ده"</item>
<item msgid="7161996337755311711">"یازده"</item>
<item msgid="4044549963329624197">"دوازده"</item>
diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml
index 5bbb3386769f..ff61966e299b 100644
--- a/packages/SystemUI/res-keyguard/values-fi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Nolla nolla"</item>
- <item msgid="8837126587669001578">"Nolla yksi"</item>
- <item msgid="4294343372940455660">"Nolla kaksi"</item>
- <item msgid="7129166637707421536">"Nolla kolme"</item>
- <item msgid="7579404865008788673">"Nolla neljä"</item>
- <item msgid="3873924689207380586">"Nolla viisi"</item>
- <item msgid="4849565597850069377">"Nolla kuusi"</item>
- <item msgid="4404219424523572364">"Nolla seitsemän"</item>
- <item msgid="8740481214764087329">"Nolla kahdeksan"</item>
- <item msgid="1713216865806811237">"Nolla yhdeksän"</item>
+ <item msgid="2091812961809760681">"Nolla yksi"</item>
+ <item msgid="1496435384877290709">"Nolla kaksi"</item>
+ <item msgid="881846472976674129">"Nolla kolme"</item>
+ <item msgid="2784477043911540584">"Nolla neljä"</item>
+ <item msgid="1610928853656700614">"Nolla viisi"</item>
+ <item msgid="2317806244043886658">"Nolla kuusi"</item>
+ <item msgid="3318687539120971327">"Nolla seitsemän"</item>
+ <item msgid="5701600693712102348">"Nolla kahdeksan"</item>
+ <item msgid="3247381605947372495">"Nolla yhdeksän"</item>
<item msgid="3508406095411245038">"Kymmenen"</item>
<item msgid="7161996337755311711">"Yksitoista"</item>
<item msgid="4044549963329624197">"Kaksitoista"</item>
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index a8771287aec6..c2226a2e6feb 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Dix h."</item>
<item msgid="5621554266768657830">"Onze h."</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"heures"</item>
+ <item msgid="2091812961809760681">"et un"</item>
+ <item msgid="1496435384877290709">"et deux"</item>
+ <item msgid="881846472976674129">"et trois"</item>
+ <item msgid="2784477043911540584">"et quatre"</item>
+ <item msgid="1610928853656700614">"et cinq"</item>
+ <item msgid="2317806244043886658">"et six"</item>
+ <item msgid="3318687539120971327">"et sept"</item>
+ <item msgid="5701600693712102348">"et huit"</item>
+ <item msgid="3247381605947372495">"et neuf"</item>
+ <item msgid="3508406095411245038">"dix"</item>
+ <item msgid="7161996337755311711">"onze"</item>
+ <item msgid="4044549963329624197">"douze"</item>
+ <item msgid="333373157917379088">"treize"</item>
+ <item msgid="2631202907124819385">"quatorze"</item>
+ <item msgid="6472396076858033453">"quinze"</item>
+ <item msgid="8656981856181581643">"seize"</item>
+ <item msgid="7289026608562030619">"dix-sept"</item>
+ <item msgid="3881477602692646573">"dix-huit"</item>
+ <item msgid="3358129827772984226">"dix-neuf"</item>
+ <item msgid="3308575407402865807">"vingt"</item>
+ <item msgid="5346560955382229629">"vingt\n-et-un"</item>
+ <item msgid="226750304761473436">"vingt\n-deux"</item>
+ <item msgid="616811325336838734">"vingt\n-trois"</item>
+ <item msgid="616346116869053440">"vingt\n-quatre"</item>
+ <item msgid="4642996410384042830">"vingt\n-cinq"</item>
+ <item msgid="7506092849993571465">"vingt\n-six"</item>
+ <item msgid="1915078191101042031">"vingt\n-sept"</item>
+ <item msgid="4292378641900520252">"vingt\n-huit"</item>
+ <item msgid="5339513901773103696">"vingt\n-neuf"</item>
+ <item msgid="3574673250891657607">"trente"</item>
+ <item msgid="5796923836589110940">"trente\n-et-un"</item>
+ <item msgid="5859323597571702052">"trente\n-deux"</item>
+ <item msgid="5133326723148876507">"trente\n-trois"</item>
+ <item msgid="2693999494655663096">"trente\n-quatre"</item>
+ <item msgid="3316754944962836197">"trente\n-cinq"</item>
+ <item msgid="816891008836796723">"trente\n-six"</item>
+ <item msgid="9158890488666520078">"trente\n-sept"</item>
+ <item msgid="1894769703213894011">"trente\n-huit"</item>
+ <item msgid="5638820345598572399">"trente\n-neuf"</item>
+ <item msgid="8838304023017895439">"quarante"</item>
+ <item msgid="1834742948932559597">"quarante\n-et-un"</item>
+ <item msgid="6573707308847773944">"quarante\n-deux"</item>
+ <item msgid="2450149950652678001">"quarante\n-trois"</item>
+ <item msgid="2874667401318178036">"quarante\n-quatre"</item>
+ <item msgid="3391101532763048862">"quarante\n-cinq"</item>
+ <item msgid="1671489330863254362">"quarante\n-six"</item>
+ <item msgid="5916017359554531038">"quarante\n-sept"</item>
+ <item msgid="8205413177993059967">"quarante\n-huit"</item>
+ <item msgid="6607867415142171302">"quarante\n-neuf"</item>
+ <item msgid="8358850748472089162">"cinquante"</item>
+ <item msgid="3551313125255080234">"cinquante\n-et-un"</item>
+ <item msgid="1559678130725716542">"cinquante\n-deux"</item>
+ <item msgid="431441994725492377">"cinquante\n-trois"</item>
+ <item msgid="6345774640539623024">"cinquante\n-quatre"</item>
+ <item msgid="8018192990793931120">"cinquante\n-cinq"</item>
+ <item msgid="6187650843754604534">"cinquante\n-six"</item>
+ <item msgid="8727240174015993259">"cinquante\n-sept"</item>
+ <item msgid="848339003778952950">"cinquante\n-huit"</item>
+ <item msgid="5798985802835423618">"cinquante\n-neuf"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml
index 197e9e18e037..bfe7ec98a4f0 100644
--- a/packages/SystemUI/res-keyguard/values-fr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"dix heures"</item>
<item msgid="5621554266768657830">"onze heures"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985"></item>
+ <item msgid="2091812961809760681">"Une"</item>
+ <item msgid="1496435384877290709">"Deux"</item>
+ <item msgid="881846472976674129">"Trois"</item>
+ <item msgid="2784477043911540584">"Quatre"</item>
+ <item msgid="1610928853656700614">"Cinq"</item>
+ <item msgid="2317806244043886658">"Six"</item>
+ <item msgid="3318687539120971327">"Sept"</item>
+ <item msgid="5701600693712102348">"Huit"</item>
+ <item msgid="3247381605947372495">"Neuf"</item>
+ <item msgid="3508406095411245038">"dix"</item>
+ <item msgid="7161996337755311711">"onze"</item>
+ <item msgid="4044549963329624197">"douze"</item>
+ <item msgid="333373157917379088">"treize"</item>
+ <item msgid="2631202907124819385">"quatorze"</item>
+ <item msgid="6472396076858033453">"quinze"</item>
+ <item msgid="8656981856181581643">"seize"</item>
+ <item msgid="7289026608562030619">"dix-sept"</item>
+ <item msgid="3881477602692646573">"dix-huit"</item>
+ <item msgid="3358129827772984226">"dix-neuf"</item>
+ <item msgid="3308575407402865807">"vingt"</item>
+ <item msgid="5346560955382229629">"vingt\net un"</item>
+ <item msgid="226750304761473436">"vingt-\ndeux"</item>
+ <item msgid="616811325336838734">"vingt-\ntrois"</item>
+ <item msgid="616346116869053440">"vingt-\nquatre"</item>
+ <item msgid="4642996410384042830">"vingt-\ncinq"</item>
+ <item msgid="7506092849993571465">"vingt-\nsix"</item>
+ <item msgid="1915078191101042031">"vingt-\nsept"</item>
+ <item msgid="4292378641900520252">"vingt-\nhuit"</item>
+ <item msgid="5339513901773103696">"vingt-\nneuf"</item>
+ <item msgid="3574673250891657607">"trente"</item>
+ <item msgid="5796923836589110940">"trente\net un"</item>
+ <item msgid="5859323597571702052">"trente-\ndeux"</item>
+ <item msgid="5133326723148876507">"trente-\ntrois"</item>
+ <item msgid="2693999494655663096">"trente-\nquatre"</item>
+ <item msgid="3316754944962836197">"trente-\ncinq"</item>
+ <item msgid="816891008836796723">"trente-\nsix"</item>
+ <item msgid="9158890488666520078">"trente-\nsept"</item>
+ <item msgid="1894769703213894011">"trente-\nhuit"</item>
+ <item msgid="5638820345598572399">"trente-\nneuf"</item>
+ <item msgid="8838304023017895439">"quarante"</item>
+ <item msgid="1834742948932559597">"quarante\net un"</item>
+ <item msgid="6573707308847773944">"quarante-\ndeux"</item>
+ <item msgid="2450149950652678001">"quarante-\ntrois"</item>
+ <item msgid="2874667401318178036">"quarante-\nquatre"</item>
+ <item msgid="3391101532763048862">"quarante-\ncinq"</item>
+ <item msgid="1671489330863254362">"quarante-\nsix"</item>
+ <item msgid="5916017359554531038">"quarante-\nsept"</item>
+ <item msgid="8205413177993059967">"quarante-\nhuit"</item>
+ <item msgid="6607867415142171302">"quarante-\nneuf"</item>
+ <item msgid="8358850748472089162">"cinquante"</item>
+ <item msgid="3551313125255080234">"cinquante\net un"</item>
+ <item msgid="1559678130725716542">"cinquante-\ndeux"</item>
+ <item msgid="431441994725492377">"cinquante-\ntrois"</item>
+ <item msgid="6345774640539623024">"cinquante-\nquatre"</item>
+ <item msgid="8018192990793931120">"cinquante-\ncinq"</item>
+ <item msgid="6187650843754604534">"cinquante-\nsix"</item>
+ <item msgid="8727240174015993259">"cinquante-\nsept"</item>
+ <item msgid="848339003778952950">"cinquante-\nhuit"</item>
+ <item msgid="5798985802835423618">"cinquante-\nneuf"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 06319d17c7fe..369306329455 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"En punto"</item>
- <item msgid="8837126587669001578">"E un"</item>
- <item msgid="4294343372940455660">"E dous"</item>
- <item msgid="7129166637707421536">"E tres"</item>
- <item msgid="7579404865008788673">"E catro"</item>
- <item msgid="3873924689207380586">"E cinco"</item>
- <item msgid="4849565597850069377">"E seis"</item>
- <item msgid="4404219424523572364">"E sete"</item>
- <item msgid="8740481214764087329">"E oito"</item>
- <item msgid="1713216865806811237">"E nove"</item>
+ <item msgid="2091812961809760681">"Un"</item>
+ <item msgid="1496435384877290709">"Dous"</item>
+ <item msgid="881846472976674129">"Tres"</item>
+ <item msgid="2784477043911540584">"Catro"</item>
+ <item msgid="1610928853656700614">"Cinco"</item>
+ <item msgid="2317806244043886658">"Seis"</item>
+ <item msgid="3318687539120971327">"Sete"</item>
+ <item msgid="5701600693712102348">"Oito"</item>
+ <item msgid="3247381605947372495">"Nove"</item>
<item msgid="3508406095411245038">"Dez"</item>
<item msgid="7161996337755311711">"Once"</item>
<item msgid="4044549963329624197">"Doce"</item>
diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml
index 33f35f9b0d14..0a966c16296d 100644
--- a/packages/SystemUI/res-keyguard/values-gu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"વાગ્યે"</item>
- <item msgid="8837126587669001578">"એક"</item>
- <item msgid="4294343372940455660">"બે"</item>
- <item msgid="7129166637707421536">"ત્રણ"</item>
- <item msgid="7579404865008788673">"ચાર"</item>
- <item msgid="3873924689207380586">"પાંચ"</item>
- <item msgid="4849565597850069377">"છ"</item>
- <item msgid="4404219424523572364">"સાત"</item>
- <item msgid="8740481214764087329">"આઠ"</item>
- <item msgid="1713216865806811237">"નવ"</item>
+ <item msgid="2091812961809760681">"ઓહ એક"</item>
+ <item msgid="1496435384877290709">"ઓહ બે"</item>
+ <item msgid="881846472976674129">"ઓહ ત્રણ"</item>
+ <item msgid="2784477043911540584">"ઓહ ચાર"</item>
+ <item msgid="1610928853656700614">"ઓહ પાંચ"</item>
+ <item msgid="2317806244043886658">"ઓહ છ"</item>
+ <item msgid="3318687539120971327">"ઓહ સાત"</item>
+ <item msgid="5701600693712102348">"ઓહ આઠ"</item>
+ <item msgid="3247381605947372495">"ઓહ નવ"</item>
<item msgid="3508406095411245038">"દસ"</item>
<item msgid="7161996337755311711">"અગિયાર"</item>
<item msgid="4044549963329624197">"બાર"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index 333e4009eed6..0197e7df69c0 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -169,66 +169,13 @@
<item msgid="2233497913571137419">"दस"</item>
<item msgid="5621554266768657830">"ग्यारह"</item>
</string-array>
- <string-array name="type_clock_minutes">
- <item msgid="8322049385467207985">"बजे"</item>
- <item msgid="8837126587669001578">"एक"</item>
- <item msgid="4294343372940455660">"दो"</item>
- <item msgid="7129166637707421536">"तीन"</item>
- <item msgid="7579404865008788673">"चार"</item>
- <item msgid="3873924689207380586">"पाँच"</item>
- <item msgid="4849565597850069377">"छह"</item>
- <item msgid="4404219424523572364">"सात"</item>
- <item msgid="8740481214764087329">"आठ"</item>
- <item msgid="1713216865806811237">"नौ"</item>
- <item msgid="3508406095411245038">"दस"</item>
- <item msgid="7161996337755311711">"ग्यारह"</item>
- <item msgid="4044549963329624197">"बारह"</item>
- <item msgid="333373157917379088">"तेरह"</item>
- <item msgid="2631202907124819385">"चौदह"</item>
- <item msgid="6472396076858033453">"पंद्रह"</item>
- <item msgid="8656981856181581643">"सोलह"</item>
- <item msgid="7289026608562030619">"सत्रह"</item>
- <item msgid="3881477602692646573">"अठारह"</item>
- <item msgid="3358129827772984226">"उन्नीस"</item>
- <item msgid="3308575407402865807">"बीस"</item>
- <item msgid="5346560955382229629">"इक्कीस\n"</item>
- <item msgid="226750304761473436">"बाईस\n"</item>
- <item msgid="616811325336838734">"तेईस\n"</item>
- <item msgid="616346116869053440">"चौबीस\n"</item>
- <item msgid="4642996410384042830">"पच्चीस\n"</item>
- <item msgid="7506092849993571465">"छब्बीस\n"</item>
- <item msgid="1915078191101042031">"सत्ताईस\n"</item>
- <item msgid="4292378641900520252">"अट्ठाइस\n"</item>
- <item msgid="5339513901773103696">"उनतीस\n"</item>
- <item msgid="3574673250891657607">"तीस"</item>
- <item msgid="5796923836589110940">"इकत्तीस\n"</item>
- <item msgid="5859323597571702052">"बत्तीस\n"</item>
- <item msgid="5133326723148876507">"तैंतीस\n"</item>
- <item msgid="2693999494655663096">"चौंतीस\n"</item>
- <item msgid="3316754944962836197">"पैंतीस\n"</item>
- <item msgid="816891008836796723">"छत्तीस\n"</item>
- <item msgid="9158890488666520078">"सैंतीस\n"</item>
- <item msgid="1894769703213894011">"अड़तीस\n"</item>
- <item msgid="5638820345598572399">"उनतालीस\n"</item>
- <item msgid="8838304023017895439">"चालीस"</item>
- <item msgid="1834742948932559597">"इकतालीस\n"</item>
- <item msgid="6573707308847773944">"बयालीस\n"</item>
- <item msgid="2450149950652678001">"तैंतालीस\n"</item>
- <item msgid="2874667401318178036">"चवालीस\n"</item>
- <item msgid="3391101532763048862">"पैंतालीस\n"</item>
- <item msgid="1671489330863254362">"छियालीस\n"</item>
- <item msgid="5916017359554531038">"सैंतालीस\n"</item>
- <item msgid="8205413177993059967">"अड़तालीस\n"</item>
- <item msgid="6607867415142171302">"उनचास\n"</item>
- <item msgid="8358850748472089162">"पचास"</item>
- <item msgid="3551313125255080234">"इक्यावन\n"</item>
- <item msgid="1559678130725716542">"बावन\n"</item>
- <item msgid="431441994725492377">"तिरेपन\n"</item>
- <item msgid="6345774640539623024">"चौवन\n"</item>
- <item msgid="8018192990793931120">"पचपन\n"</item>
- <item msgid="6187650843754604534">"छप्पन\n"</item>
- <item msgid="8727240174015993259">"सत्तावन\n"</item>
- <item msgid="848339003778952950">"अट्ठावन\n"</item>
- <item msgid="5798985802835423618">"उनसठ\n"</item>
- </string-array>
+ <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
+ <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
+ <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
+ <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
+ <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
+ <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
+ <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
+ <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
+ <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml
index 5ad991b2b60e..b13d7c370541 100644
--- a/packages/SystemUI/res-keyguard/values-hr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml
@@ -180,15 +180,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985"></item>
- <item msgid="8837126587669001578">"Jedan"</item>
- <item msgid="4294343372940455660">"Dva"</item>
- <item msgid="7129166637707421536">"Tri"</item>
- <item msgid="7579404865008788673">"Četiri"</item>
- <item msgid="3873924689207380586">"Pet"</item>
- <item msgid="4849565597850069377">"Šest"</item>
- <item msgid="4404219424523572364">"Sedam"</item>
- <item msgid="8740481214764087329">"Osam"</item>
- <item msgid="1713216865806811237">"Devet"</item>
+ <item msgid="2091812961809760681">"Nula jedan"</item>
+ <item msgid="1496435384877290709">"Nula dva"</item>
+ <item msgid="881846472976674129">"Nula tri"</item>
+ <item msgid="2784477043911540584">"Nula četiri"</item>
+ <item msgid="1610928853656700614">"Nula pet"</item>
+ <item msgid="2317806244043886658">"Nula šest"</item>
+ <item msgid="3318687539120971327">"Nula sedam"</item>
+ <item msgid="5701600693712102348">"Nula osam"</item>
+ <item msgid="3247381605947372495">"Nula devet"</item>
<item msgid="3508406095411245038">"Deset"</item>
<item msgid="7161996337755311711">"Jedanaest"</item>
<item msgid="4044549963329624197">"Dvanaest"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml
index 808a36c323c5..fcb396fdb10a 100644
--- a/packages/SystemUI/res-keyguard/values-hu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"óra"</item>
- <item msgid="8837126587669001578">"Egy"</item>
- <item msgid="4294343372940455660">"Kettő"</item>
- <item msgid="7129166637707421536">"Három"</item>
- <item msgid="7579404865008788673">"Négy"</item>
- <item msgid="3873924689207380586">"Öt"</item>
- <item msgid="4849565597850069377">"Hat"</item>
- <item msgid="4404219424523572364">"Hét"</item>
- <item msgid="8740481214764087329">"Nyolc"</item>
- <item msgid="1713216865806811237">"Kilenc"</item>
+ <item msgid="2091812961809760681">"Nulla egy"</item>
+ <item msgid="1496435384877290709">"Nulla kettő"</item>
+ <item msgid="881846472976674129">"Nulla három"</item>
+ <item msgid="2784477043911540584">"Nulla négy"</item>
+ <item msgid="1610928853656700614">"Nulla öt"</item>
+ <item msgid="2317806244043886658">"Nulla hat"</item>
+ <item msgid="3318687539120971327">"Nulla hét"</item>
+ <item msgid="5701600693712102348">"Nulla nyolc"</item>
+ <item msgid="3247381605947372495">"Nulla kilenc"</item>
<item msgid="3508406095411245038">"Tíz"</item>
<item msgid="7161996337755311711">"Tizenegy"</item>
<item msgid="4044549963329624197">"Tizenkettő"</item>
diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml
index b1c2c783110c..658d8db61adb 100644
--- a/packages/SystemUI/res-keyguard/values-hy/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"տասը"</item>
<item msgid="5621554266768657830">"տասնմեկ"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"ուղիղ"</item>
+ <item msgid="2091812961809760681">"զրո մեկ"</item>
+ <item msgid="1496435384877290709">"զրո երկու"</item>
+ <item msgid="881846472976674129">"զրո երեք"</item>
+ <item msgid="2784477043911540584">"զրո չորս"</item>
+ <item msgid="1610928853656700614">"զրո հինգ"</item>
+ <item msgid="2317806244043886658">"զրո վեց"</item>
+ <item msgid="3318687539120971327">"զրո յոթ"</item>
+ <item msgid="5701600693712102348">"զրո ութ"</item>
+ <item msgid="3247381605947372495">"զրո ինը"</item>
+ <item msgid="3508406095411245038">"տասը"</item>
+ <item msgid="7161996337755311711">"տասնմեկ"</item>
+ <item msgid="4044549963329624197">"տասներկու"</item>
+ <item msgid="333373157917379088">"տասներեք"</item>
+ <item msgid="2631202907124819385">"տասնչորս"</item>
+ <item msgid="6472396076858033453">"տասնհինգ"</item>
+ <item msgid="8656981856181581643">"տասնվեց"</item>
+ <item msgid="7289026608562030619">"տասնյոթ"</item>
+ <item msgid="3881477602692646573">"տասնութ"</item>
+ <item msgid="3358129827772984226">"տասնինը"</item>
+ <item msgid="3308575407402865807">"քսան"</item>
+ <item msgid="5346560955382229629">"քսան\nմեկ"</item>
+ <item msgid="226750304761473436">"քսան\nերկու"</item>
+ <item msgid="616811325336838734">"քսան\nերեք"</item>
+ <item msgid="616346116869053440">"քսան\nչորս"</item>
+ <item msgid="4642996410384042830">"քսան\nհինգ"</item>
+ <item msgid="7506092849993571465">"քսան\nվեց"</item>
+ <item msgid="1915078191101042031">"քսան\nյոթ"</item>
+ <item msgid="4292378641900520252">"քսան\nութ"</item>
+ <item msgid="5339513901773103696">"քսան\nինը"</item>
+ <item msgid="3574673250891657607">"երեսուն"</item>
+ <item msgid="5796923836589110940">"երեսուն\nմեկ"</item>
+ <item msgid="5859323597571702052">"երեսուն\nերկու"</item>
+ <item msgid="5133326723148876507">"երեսուն\nերեք"</item>
+ <item msgid="2693999494655663096">"երեսուն\nչորս"</item>
+ <item msgid="3316754944962836197">"երեսուն\nհինգ"</item>
+ <item msgid="816891008836796723">"երեսուն\nվեց"</item>
+ <item msgid="9158890488666520078">"երեսուն\nյոթ"</item>
+ <item msgid="1894769703213894011">"երեսուն\nութ"</item>
+ <item msgid="5638820345598572399">"երեսուն\nինը"</item>
+ <item msgid="8838304023017895439">"քառասուն"</item>
+ <item msgid="1834742948932559597">"քառասուն\nմեկ"</item>
+ <item msgid="6573707308847773944">"քառասուն\nերկու"</item>
+ <item msgid="2450149950652678001">"քառասուն\nերեք"</item>
+ <item msgid="2874667401318178036">"քառասուն\nչորս"</item>
+ <item msgid="3391101532763048862">"քառասուն\nհինգ"</item>
+ <item msgid="1671489330863254362">"քառասուն\nվեց"</item>
+ <item msgid="5916017359554531038">"քառասուն\nյոթ"</item>
+ <item msgid="8205413177993059967">"քառասուն\nութ"</item>
+ <item msgid="6607867415142171302">"քառասուն\nինը"</item>
+ <item msgid="8358850748472089162">"հիսուն"</item>
+ <item msgid="3551313125255080234">"հիսուն\nմեկ"</item>
+ <item msgid="1559678130725716542">"հիսուն\nերկու"</item>
+ <item msgid="431441994725492377">"հիսուն\nերեք"</item>
+ <item msgid="6345774640539623024">"հիսուն\nչորս"</item>
+ <item msgid="8018192990793931120">"հիսուն\nհինգ"</item>
+ <item msgid="6187650843754604534">"հիսուն\nվեց"</item>
+ <item msgid="8727240174015993259">"հիսուն\nյոթ"</item>
+ <item msgid="848339003778952950">"հիսուն\nութ"</item>
+ <item msgid="5798985802835423618">"հիսուն\nինը"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml
index 781c7838869b..d58168b6167f 100644
--- a/packages/SystemUI/res-keyguard/values-in/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-in/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Tepat"</item>
- <item msgid="8837126587669001578">"Satu"</item>
- <item msgid="4294343372940455660">"Dua"</item>
- <item msgid="7129166637707421536">"Tiga"</item>
- <item msgid="7579404865008788673">"Empat"</item>
- <item msgid="3873924689207380586">"Lima"</item>
- <item msgid="4849565597850069377">"Enam"</item>
- <item msgid="4404219424523572364">"Tujuh"</item>
- <item msgid="8740481214764087329">"Delapan"</item>
- <item msgid="1713216865806811237">"Sembilan"</item>
+ <item msgid="2091812961809760681">"Oh Satu"</item>
+ <item msgid="1496435384877290709">"Oh Dua"</item>
+ <item msgid="881846472976674129">"Oh Tiga"</item>
+ <item msgid="2784477043911540584">"Oh Empat"</item>
+ <item msgid="1610928853656700614">"Oh Lima"</item>
+ <item msgid="2317806244043886658">"Oh Enam"</item>
+ <item msgid="3318687539120971327">"Oh Tujuh"</item>
+ <item msgid="5701600693712102348">"Oh Delapan"</item>
+ <item msgid="3247381605947372495">"Oh Sembilan"</item>
<item msgid="3508406095411245038">"Sepuluh"</item>
<item msgid="7161996337755311711">"Sebelas"</item>
<item msgid="4044549963329624197">"Dua Belas"</item>
diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml
index a007d05cd082..4526a4f303ad 100644
--- a/packages/SystemUI/res-keyguard/values-it/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-it/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"in punto"</item>
- <item msgid="8837126587669001578">"e uno"</item>
- <item msgid="4294343372940455660">"e due"</item>
- <item msgid="7129166637707421536">"e tre"</item>
- <item msgid="7579404865008788673">"e quattro"</item>
- <item msgid="3873924689207380586">"e cinque"</item>
- <item msgid="4849565597850069377">"e sei"</item>
- <item msgid="4404219424523572364">"e sette"</item>
- <item msgid="8740481214764087329">"e otto"</item>
- <item msgid="1713216865806811237">"e nove"</item>
+ <item msgid="2091812961809760681">"Uno"</item>
+ <item msgid="1496435384877290709">"Due"</item>
+ <item msgid="881846472976674129">"Tre"</item>
+ <item msgid="2784477043911540584">"Quattro"</item>
+ <item msgid="1610928853656700614">"Cinque"</item>
+ <item msgid="2317806244043886658">"Sei"</item>
+ <item msgid="3318687539120971327">"Sette"</item>
+ <item msgid="5701600693712102348">"Otto"</item>
+ <item msgid="3247381605947372495">"Nove"</item>
<item msgid="3508406095411245038">"Dieci"</item>
<item msgid="7161996337755311711">"Undici"</item>
<item msgid="4044549963329624197">"Dodici"</item>
diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml
index e8e1dd319138..f9556e1b2a3e 100644
--- a/packages/SystemUI/res-keyguard/values-iw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"בדיוק"</item>
- <item msgid="8837126587669001578">"ודקה"</item>
- <item msgid="4294343372940455660">"ושתי דקות"</item>
- <item msgid="7129166637707421536">"ושלוש דקות"</item>
- <item msgid="7579404865008788673">"וארבע דקות"</item>
- <item msgid="3873924689207380586">"וחמש דקות"</item>
- <item msgid="4849565597850069377">"ושש דקות"</item>
- <item msgid="4404219424523572364">"ושבע דקות"</item>
- <item msgid="8740481214764087329">"ושמונה דקות"</item>
- <item msgid="1713216865806811237">"ותשע דקות"</item>
+ <item msgid="2091812961809760681">"אפס אחת"</item>
+ <item msgid="1496435384877290709">"אפס שתיים"</item>
+ <item msgid="881846472976674129">"אפס שלוש"</item>
+ <item msgid="2784477043911540584">"אפס ארבע"</item>
+ <item msgid="1610928853656700614">"אפס חמש"</item>
+ <item msgid="2317806244043886658">"אפס שש"</item>
+ <item msgid="3318687539120971327">"אפס שבע"</item>
+ <item msgid="5701600693712102348">"אפס שמונה"</item>
+ <item msgid="3247381605947372495">"אפס תשע"</item>
<item msgid="3508406095411245038">"עשר"</item>
<item msgid="7161996337755311711">"אחת-עשרה"</item>
<item msgid="4044549963329624197">"שתים-עשרה"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml
index 4c0069afab67..c8177062e1bc 100644
--- a/packages/SystemUI/res-keyguard/values-ja/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml
@@ -52,7 +52,7 @@
<string name="keyguard_sim_puk_locked_message" msgid="1772789643694942073">"SIM カードは PUK でロックされています。"</string>
<string name="keyguard_sim_unlock_progress_dialog_message" msgid="3586601150825821675">"SIM カードのロックを解除しています…"</string>
<string name="keyguard_accessibility_pin_area" msgid="703175752097279029">"PIN エリア"</string>
- <string name="keyguard_accessibility_password" msgid="7695303207740941101">"端末のパスワード"</string>
+ <string name="keyguard_accessibility_password" msgid="7695303207740941101">"デバイスのパスワード"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="912702510825058921">"SIM PIN エリア"</string>
<string name="keyguard_accessibility_sim_puk_area" msgid="136979425761438705">"SIM PUK エリア"</string>
<string name="keyguard_accessibility_next_alarm" msgid="5835196989158584991">"次のアラームを <xliff:g id="ALARM">%1$s</xliff:g> に設定しました"</string>
@@ -72,7 +72,7 @@
<string name="kg_pattern_instructions" msgid="5547646893001491340">"パターンを入力してください"</string>
<string name="kg_sim_pin_instructions" msgid="6389000973113699187">"SIM PIN を入力してください。"</string>
<string name="kg_sim_pin_instructions_multi" msgid="1643757228644271861">"「<xliff:g id="CARRIER">%1$s</xliff:g>」の SIM PIN を入力してください。"</string>
- <string name="kg_sim_lock_esim_instructions" msgid="4416732549172148542">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g>モバイル サービスなしで端末を使用するには eSIM を無効にしてください。"</string>
+ <string name="kg_sim_lock_esim_instructions" msgid="4416732549172148542">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g>モバイル サービスなしでデバイスを使用するには eSIM を無効にしてください。"</string>
<string name="kg_pin_instructions" msgid="4069609316644030034">"PIN を入力してください"</string>
<string name="kg_password_instructions" msgid="136952397352976538">"パスワードを入力してください"</string>
<string name="kg_puk_enter_puk_hint" msgid="2288964170039899277">"SIM が無効になりました。続行するには PUK コードを入力してください。詳しくは携帯通信会社にお問い合わせください。"</string>
@@ -102,10 +102,10 @@
<string name="kg_failed_attempts_now_erasing_profile" product="default" msgid="8476407539834855">"スマートフォンのロック解除に <xliff:g id="NUMBER">%d</xliff:g> 回失敗しました。仕事用プロファイルは削除され、プロファイルのデータはすべて消去されます。"</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="956706236554092172">"ロック解除パターンの入力を <xliff:g id="NUMBER_0">%1$d</xliff:g> 回間違えました。あと <xliff:g id="NUMBER_1">%2$d</xliff:g> 回間違えると、タブレットのロック解除にメール アカウントが必要になります。\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> 秒後にもう一度お試しください。"</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="8364140853305528449">"ロック解除パターンの入力を <xliff:g id="NUMBER_0">%1$d</xliff:g> 回間違えました。あと <xliff:g id="NUMBER_1">%2$d</xliff:g> 回間違えると、スマートフォンのロック解除にメール アカウントが必要になります。\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> 秒後にもう一度お試しください。"</string>
- <string name="kg_password_wrong_pin_code_pukked" msgid="3389829202093674267">"SIM PIN コードが無効です。お使いの端末をロック解除するには携帯通信会社にお問い合わせいただく必要があります。"</string>
+ <string name="kg_password_wrong_pin_code_pukked" msgid="3389829202093674267">"SIM PIN コードが無効です。お使いのデバイスをロック解除するには携帯通信会社にお問い合わせいただく必要があります。"</string>
<plurals name="kg_password_wrong_pin_code" formatted="false" msgid="4314341367727055967">
<item quantity="other">SIM PIN コードが無効です。入力できるのはあと <xliff:g id="NUMBER_1">%d</xliff:g> 回です。</item>
- <item quantity="one">SIM PIN コードが無効です。入力できるのはあと <xliff:g id="NUMBER_0">%d</xliff:g> 回です。この回数を超えると、お使いの端末をロック解除するのに携帯通信会社にお問い合わせいただく必要があります。</item>
+ <item quantity="one">SIM PIN コードが無効です。入力できるのはあと <xliff:g id="NUMBER_0">%d</xliff:g> 回です。この回数を超えると、お使いのデバイスをロック解除するのに携帯通信会社にお問い合わせいただく必要があります。</item>
</plurals>
<string name="kg_password_wrong_puk_code_dead" msgid="3329017604125179374">"SIM は使用できません。携帯通信会社にお問い合わせください。"</string>
<plurals name="kg_password_wrong_puk_code" formatted="false" msgid="2287504898931957513">
@@ -118,28 +118,28 @@
<string name="keyguard_carrier_default" msgid="4274828292998453695">"通信サービスはありません。"</string>
<string name="accessibility_ime_switch_button" msgid="2695096475319405612">"入力方法の切り替え"</string>
<string name="airplane_mode" msgid="3807209033737676010">"機内モード"</string>
- <string name="kg_prompt_reason_restart_pattern" msgid="7246972020562621506">"端末の再起動後はパターンの入力が必要となります"</string>
- <string name="kg_prompt_reason_restart_pin" msgid="6303592361322290145">"端末の再起動後は PIN の入力が必要となります"</string>
- <string name="kg_prompt_reason_restart_password" msgid="6984641181515902406">"端末の再起動後はパスワードの入力が必要となります"</string>
+ <string name="kg_prompt_reason_restart_pattern" msgid="7246972020562621506">"デバイスの再起動後はパターンの入力が必要となります"</string>
+ <string name="kg_prompt_reason_restart_pin" msgid="6303592361322290145">"デバイスの再起動後は PIN の入力が必要となります"</string>
+ <string name="kg_prompt_reason_restart_password" msgid="6984641181515902406">"デバイスの再起動後はパスワードの入力が必要となります"</string>
<string name="kg_prompt_reason_timeout_pattern" msgid="5304487696073914063">"追加の確認のためパターンが必要です"</string>
<string name="kg_prompt_reason_timeout_pin" msgid="8851462864335757813">"追加の確認のため PIN が必要です"</string>
<string name="kg_prompt_reason_timeout_password" msgid="6563904839641583441">"追加の確認のためパスワードが必要です"</string>
<string name="kg_prompt_reason_switch_profiles_pattern" msgid="3398054847288438444">"プロファイルを切り替えるにはパターンが必要です"</string>
<string name="kg_prompt_reason_switch_profiles_pin" msgid="7426368139226961699">"プロファイルを切り替えるには PIN が必要です"</string>
<string name="kg_prompt_reason_switch_profiles_password" msgid="8383831046318421845">"プロファイルを切り替えるにはパスワードが必要です"</string>
- <string name="kg_prompt_reason_device_admin" msgid="3452168247888906179">"端末は管理者によりロックされています"</string>
- <string name="kg_prompt_reason_user_request" msgid="8236951765212462286">"端末は手動でロックされました"</string>
+ <string name="kg_prompt_reason_device_admin" msgid="3452168247888906179">"デバイスは管理者によりロックされています"</string>
+ <string name="kg_prompt_reason_user_request" msgid="8236951765212462286">"デバイスは手動でロックされました"</string>
<plurals name="kg_prompt_reason_time_pattern" formatted="false" msgid="71299470072448533">
- <item quantity="other">端末のロックが <xliff:g id="NUMBER_1">%d</xliff:g> 時間、解除されていません。パターンを確認してください。</item>
- <item quantity="one">端末のロックが <xliff:g id="NUMBER_0">%d</xliff:g> 時間、解除されていません。パターンを確認してください。</item>
+ <item quantity="other">デバイスのロックが <xliff:g id="NUMBER_1">%d</xliff:g> 時間、解除されていません。パターンを確認してください。</item>
+ <item quantity="one">デバイスのロックが <xliff:g id="NUMBER_0">%d</xliff:g> 時間、解除されていません。パターンを確認してください。</item>
</plurals>
<plurals name="kg_prompt_reason_time_pin" formatted="false" msgid="34586942088144385">
- <item quantity="other">端末のロックが <xliff:g id="NUMBER_1">%d</xliff:g> 時間、解除されていません。PIN を確認してください。</item>
- <item quantity="one">端末のロックが <xliff:g id="NUMBER_0">%d</xliff:g> 時間、解除されていません。PIN を確認してください。</item>
+ <item quantity="other">デバイスのロックが <xliff:g id="NUMBER_1">%d</xliff:g> 時間、解除されていません。PIN を確認してください。</item>
+ <item quantity="one">デバイスのロックが <xliff:g id="NUMBER_0">%d</xliff:g> 時間、解除されていません。PIN を確認してください。</item>
</plurals>
<plurals name="kg_prompt_reason_time_password" formatted="false" msgid="257297696215346527">
- <item quantity="other">端末のロックが <xliff:g id="NUMBER_1">%d</xliff:g> 時間、解除されていません。パスワードを確認してください。</item>
- <item quantity="one">端末のロックが <xliff:g id="NUMBER_0">%d</xliff:g> 時間、解除されていません。パスワードを確認してください。</item>
+ <item quantity="other">デバイスのロックが <xliff:g id="NUMBER_1">%d</xliff:g> 時間、解除されていません。パスワードを確認してください。</item>
+ <item quantity="one">デバイスのロックが <xliff:g id="NUMBER_0">%d</xliff:g> 時間、解除されていません。パスワードを確認してください。</item>
</plurals>
<string name="kg_fingerprint_not_recognized" msgid="7854413849848459418">"認識されませんでした"</string>
<string name="kg_face_not_recognized" msgid="6382535088345875294">"認識されませんでした"</string>
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"時"</item>
- <item msgid="8837126587669001578">"1"</item>
- <item msgid="4294343372940455660">"2"</item>
- <item msgid="7129166637707421536">"3"</item>
- <item msgid="7579404865008788673">"4"</item>
- <item msgid="3873924689207380586">"5"</item>
- <item msgid="4849565597850069377">"6"</item>
- <item msgid="4404219424523572364">"7"</item>
- <item msgid="8740481214764087329">"8"</item>
- <item msgid="1713216865806811237">"9"</item>
+ <item msgid="2091812961809760681">"1分"</item>
+ <item msgid="1496435384877290709">"2分"</item>
+ <item msgid="881846472976674129">"3分"</item>
+ <item msgid="2784477043911540584">"4分"</item>
+ <item msgid="1610928853656700614">"5分"</item>
+ <item msgid="2317806244043886658">"6分"</item>
+ <item msgid="3318687539120971327">"7分"</item>
+ <item msgid="5701600693712102348">"8分"</item>
+ <item msgid="3247381605947372495">"9分"</item>
<item msgid="3508406095411245038">"10"</item>
<item msgid="7161996337755311711">"11"</item>
<item msgid="4044549963329624197">"12"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml
index 8596fb00aa0b..4e6344e4f456 100644
--- a/packages/SystemUI/res-keyguard/values-ka/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"საათი"</item>
- <item msgid="8837126587669001578">"ნულ ერთი"</item>
- <item msgid="4294343372940455660">"ნულ ორი"</item>
- <item msgid="7129166637707421536">"ნულ სამი"</item>
- <item msgid="7579404865008788673">"ნულ ოთხი"</item>
- <item msgid="3873924689207380586">"ნულ ხუთი"</item>
- <item msgid="4849565597850069377">"ნულ ექვსი"</item>
- <item msgid="4404219424523572364">"ნულ შვიდი"</item>
- <item msgid="8740481214764087329">"ნულ რვა"</item>
- <item msgid="1713216865806811237">"ნულ ცხრა"</item>
+ <item msgid="2091812961809760681">"ნული-ერთი"</item>
+ <item msgid="1496435384877290709">"ნული-ორი"</item>
+ <item msgid="881846472976674129">"ნული-სამი"</item>
+ <item msgid="2784477043911540584">"ნული-ოთხი"</item>
+ <item msgid="1610928853656700614">"ნული-ხუთი"</item>
+ <item msgid="2317806244043886658">"ნული-ექვსი"</item>
+ <item msgid="3318687539120971327">"ნული-შვიდი"</item>
+ <item msgid="5701600693712102348">"ნული-რვა"</item>
+ <item msgid="3247381605947372495">"ნული-ცხრა"</item>
<item msgid="3508406095411245038">"ათი"</item>
<item msgid="7161996337755311711">"თერთმეტი"</item>
<item msgid="4044549963329624197">"თორმეტი"</item>
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index 9710dc9e5d5a..3529bad5c3fa 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Он"</item>
<item msgid="5621554266768657830">"Он бір"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985"></item>
+ <item msgid="2091812961809760681">"Нөл бір"</item>
+ <item msgid="1496435384877290709">"Нөл екі"</item>
+ <item msgid="881846472976674129">"Нөл үш"</item>
+ <item msgid="2784477043911540584">"Нөл төрт"</item>
+ <item msgid="1610928853656700614">"Нөл бес"</item>
+ <item msgid="2317806244043886658">"Нөл алты"</item>
+ <item msgid="3318687539120971327">"Нөл жеті"</item>
+ <item msgid="5701600693712102348">"Нөл сегіз"</item>
+ <item msgid="3247381605947372495">"Нөл тоғыз"</item>
+ <item msgid="3508406095411245038">"Он"</item>
+ <item msgid="7161996337755311711">"Он бір"</item>
+ <item msgid="4044549963329624197">"Он екі"</item>
+ <item msgid="333373157917379088">"Он үш"</item>
+ <item msgid="2631202907124819385">"Он төрт"</item>
+ <item msgid="6472396076858033453">"Он бес"</item>
+ <item msgid="8656981856181581643">"Он алты"</item>
+ <item msgid="7289026608562030619">"Он жеті"</item>
+ <item msgid="3881477602692646573">"Он сегіз"</item>
+ <item msgid="3358129827772984226">"Он тоғыз"</item>
+ <item msgid="3308575407402865807">"Жиырма"</item>
+ <item msgid="5346560955382229629">"Жиырма\nбір"</item>
+ <item msgid="226750304761473436">"Жиырма\nекі"</item>
+ <item msgid="616811325336838734">"Жиырма\nүш"</item>
+ <item msgid="616346116869053440">"Жиырма\nтөрт"</item>
+ <item msgid="4642996410384042830">"Жиырма\nбес"</item>
+ <item msgid="7506092849993571465">"Жиырма\nалты"</item>
+ <item msgid="1915078191101042031">"Жиырма\nжеті"</item>
+ <item msgid="4292378641900520252">"Жиырма\nсегіз"</item>
+ <item msgid="5339513901773103696">"Жиырма\nтоғыз"</item>
+ <item msgid="3574673250891657607">"Отыз"</item>
+ <item msgid="5796923836589110940">"Отыз\nбір"</item>
+ <item msgid="5859323597571702052">"Отыз\nекі"</item>
+ <item msgid="5133326723148876507">"Отыз\nүш"</item>
+ <item msgid="2693999494655663096">"Отыз\nтөрт"</item>
+ <item msgid="3316754944962836197">"Отыз\nбес"</item>
+ <item msgid="816891008836796723">"Отыз\nалты"</item>
+ <item msgid="9158890488666520078">"Отыз\nжеті"</item>
+ <item msgid="1894769703213894011">"Отыз\nсегіз"</item>
+ <item msgid="5638820345598572399">"Отыз\nтоғыз"</item>
+ <item msgid="8838304023017895439">"Қырық"</item>
+ <item msgid="1834742948932559597">"Қырық\nбір"</item>
+ <item msgid="6573707308847773944">"Қырық\nекі"</item>
+ <item msgid="2450149950652678001">"Қырық\nүш"</item>
+ <item msgid="2874667401318178036">"Қырық\nтөрт"</item>
+ <item msgid="3391101532763048862">"Қырық\nбес"</item>
+ <item msgid="1671489330863254362">"Қырық\nалты"</item>
+ <item msgid="5916017359554531038">"Қырық\nжеті"</item>
+ <item msgid="8205413177993059967">"Қырық\nсегіз"</item>
+ <item msgid="6607867415142171302">"Қырық\nтоғыз"</item>
+ <item msgid="8358850748472089162">"Елу"</item>
+ <item msgid="3551313125255080234">"Елу\nбір"</item>
+ <item msgid="1559678130725716542">"Елу\nекі"</item>
+ <item msgid="431441994725492377">"Елу\nүш"</item>
+ <item msgid="6345774640539623024">"Елу\nтөрт"</item>
+ <item msgid="8018192990793931120">"Елу\nбес"</item>
+ <item msgid="6187650843754604534">"Елу\nалты"</item>
+ <item msgid="8727240174015993259">"Елу\nжеті"</item>
+ <item msgid="848339003778952950">"Елу\nсегіз"</item>
+ <item msgid="5798985802835423618">"Елу\nтоғыз"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index b8eb81729c1a..852270a1b11f 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"ម៉ោង"</item>
- <item msgid="8837126587669001578">"មួយ"</item>
- <item msgid="4294343372940455660">"ពីរ"</item>
- <item msgid="7129166637707421536">"បី"</item>
- <item msgid="7579404865008788673">"បួន"</item>
- <item msgid="3873924689207380586">"ប្រាំ"</item>
- <item msgid="4849565597850069377">"ប្រាំមួយ"</item>
- <item msgid="4404219424523572364">"ប្រាំពីរ"</item>
- <item msgid="8740481214764087329">"ប្រាំបី"</item>
- <item msgid="1713216865806811237">"ប្រាំបួន"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
<item msgid="3508406095411245038">"ដប់"</item>
<item msgid="7161996337755311711">"ដប់មួយ"</item>
<item msgid="4044549963329624197">"ដប់ពីរ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml
index 94ca6f3e594b..e0c4748ab9ac 100644
--- a/packages/SystemUI/res-keyguard/values-kn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"ಹತ್ತು"</item>
<item msgid="5621554266768657830">"ಹನ್ನೊಂದು"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"ಗಂಟೆ"</item>
+ <item msgid="2091812961809760681">"ಓಹ್ ಒಂದು"</item>
+ <item msgid="1496435384877290709">"ಓಹ್ ಎರಡು"</item>
+ <item msgid="881846472976674129">"ಓಹ್ ಮೂರು"</item>
+ <item msgid="2784477043911540584">"ಓಹ್ ನಾಲ್ಕು"</item>
+ <item msgid="1610928853656700614">"ಓಹ್ ಐದು"</item>
+ <item msgid="2317806244043886658">"ಓಹ್ ಆರು"</item>
+ <item msgid="3318687539120971327">"ಓಹ್ ಏಳು"</item>
+ <item msgid="5701600693712102348">"ಓಹ್ ಎಂಟು"</item>
+ <item msgid="3247381605947372495">"ಓಹ್ ಒಂಬತ್ತು"</item>
+ <item msgid="3508406095411245038">"ಹತ್ತು"</item>
+ <item msgid="7161996337755311711">"ಹನ್ನೊಂದು"</item>
+ <item msgid="4044549963329624197">"ಹನ್ನೆರಡು"</item>
+ <item msgid="333373157917379088">"ಹದಿಮೂರು"</item>
+ <item msgid="2631202907124819385">"ಹದಿನಾಲ್ಕು"</item>
+ <item msgid="6472396076858033453">"ಹದಿನೈದು"</item>
+ <item msgid="8656981856181581643">"ಹದಿನಾರು"</item>
+ <item msgid="7289026608562030619">"ಹದಿನೇಳು"</item>
+ <item msgid="3881477602692646573">"ಹದಿನೆಂಟು"</item>
+ <item msgid="3358129827772984226">"ಹತ್ತೊಂಬತ್ತು"</item>
+ <item msgid="3308575407402865807">"ಇಪ್ಪತ್ತು"</item>
+ <item msgid="5346560955382229629">"ಇಪ್ಪತ್ತೊಂದು\n"</item>
+ <item msgid="226750304761473436">"ಇಪ್ಪತ್ತೆರಡು\n"</item>
+ <item msgid="616811325336838734">"ಇಪ್ಪತ್ತಮೂರು\n"</item>
+ <item msgid="616346116869053440">"ಇಪ್ಪತ್ತನಾಲ್ಕು\n"</item>
+ <item msgid="4642996410384042830">"ಇಪ್ಪತ್ತೈದು\n"</item>
+ <item msgid="7506092849993571465">"ಇಪ್ಪತ್ತಾರು\n"</item>
+ <item msgid="1915078191101042031">"ಇಪ್ಪತ್ತೇಳು\n"</item>
+ <item msgid="4292378641900520252">"ಇಪ್ಪತ್ತೆಂಟು\n"</item>
+ <item msgid="5339513901773103696">"ಇಪ್ಪತ್ತೊಂಬತ್ತು\n"</item>
+ <item msgid="3574673250891657607">"ಮೂವತ್ತು"</item>
+ <item msgid="5796923836589110940">"ಮೂವತ್ತೊಂದು\n"</item>
+ <item msgid="5859323597571702052">"ಮೂವತ್ತೆರಡು\n"</item>
+ <item msgid="5133326723148876507">"ಮೂವತ್ಮೂರು\n"</item>
+ <item msgid="2693999494655663096">"ಮೂವತ್ತು\nನಾಲ್ಕು"</item>
+ <item msgid="3316754944962836197">"ಮೂವತ್ತೈದು\n"</item>
+ <item msgid="816891008836796723">"ಮೂವತ್ತಾರು\n"</item>
+ <item msgid="9158890488666520078">"ಮೂವತ್ತೇಳು\n"</item>
+ <item msgid="1894769703213894011">"ಮೂವತ್ತೆಂಟು \n"</item>
+ <item msgid="5638820345598572399">"ಮೂವತ್ತೊಂಬತ್ತು\n"</item>
+ <item msgid="8838304023017895439">"ನಲವತ್ತು"</item>
+ <item msgid="1834742948932559597">"ನಲವತ್ತೊಂದು\n"</item>
+ <item msgid="6573707308847773944">"ನಲವತ್ತೇರಡು\n"</item>
+ <item msgid="2450149950652678001">"ನಲವತ್ಮೂರು\n"</item>
+ <item msgid="2874667401318178036">"ನಲವತ್ತು\nನಾಲ್ಕು"</item>
+ <item msgid="3391101532763048862">"ನಲವತ್ತೈದು\n"</item>
+ <item msgid="1671489330863254362">"ನಲವತ್ತಾರು\n"</item>
+ <item msgid="5916017359554531038">"ನಲವತ್ತೇಳು\n"</item>
+ <item msgid="8205413177993059967">"ನಲವತ್ತೆಂಟು\n"</item>
+ <item msgid="6607867415142171302">"ನಲವತ್ತೊಂಬತ್ತು\n"</item>
+ <item msgid="8358850748472089162">"ಐವತ್ತು"</item>
+ <item msgid="3551313125255080234">"ಐವತ್ತೊಂದು\n"</item>
+ <item msgid="1559678130725716542">"ಐವತ್ತೇರಡು\n"</item>
+ <item msgid="431441994725492377">"ಐವತ್ಮೂರು\n"</item>
+ <item msgid="6345774640539623024">"ಐವತ್ನಾಲ್ಕು\n"</item>
+ <item msgid="8018192990793931120">"ಐವತ್ತೈದು\n"</item>
+ <item msgid="6187650843754604534">"ಐವತ್ತಾರು\n"</item>
+ <item msgid="8727240174015993259">"ಐವತ್ತೇಳು\n"</item>
+ <item msgid="848339003778952950">"ಐವತ್ತೆಂಟು\n"</item>
+ <item msgid="5798985802835423618">"ಐವತ್ತೊಂಬತ್ತು\n"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml
index f3520093f57e..86661ff886a8 100644
--- a/packages/SystemUI/res-keyguard/values-ko/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"정각"</item>
- <item msgid="8837126587669001578">"일 분"</item>
- <item msgid="4294343372940455660">"이 분"</item>
- <item msgid="7129166637707421536">"삼 분"</item>
- <item msgid="7579404865008788673">"사 분"</item>
- <item msgid="3873924689207380586">"오 분"</item>
- <item msgid="4849565597850069377">"육 분"</item>
- <item msgid="4404219424523572364">"칠 분"</item>
- <item msgid="8740481214764087329">"팔 분"</item>
- <item msgid="1713216865806811237">"구 분"</item>
+ <item msgid="2091812961809760681">"일 분"</item>
+ <item msgid="1496435384877290709">"이 분"</item>
+ <item msgid="881846472976674129">"삼 분"</item>
+ <item msgid="2784477043911540584">"사 분"</item>
+ <item msgid="1610928853656700614">"오 분"</item>
+ <item msgid="2317806244043886658">"육 분"</item>
+ <item msgid="3318687539120971327">"칠 분"</item>
+ <item msgid="5701600693712102348">"팔 분"</item>
+ <item msgid="3247381605947372495">"구 분"</item>
<item msgid="3508406095411245038">"십 분"</item>
<item msgid="7161996337755311711">"십일 분"</item>
<item msgid="4044549963329624197">"십이 분"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index 400091907bbb..e98d98783231 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Саат"</item>
- <item msgid="8837126587669001578">"Ноль бир"</item>
- <item msgid="4294343372940455660">"Ноль эки"</item>
- <item msgid="7129166637707421536">"Ноль үч"</item>
- <item msgid="7579404865008788673">"Ноль төрт"</item>
- <item msgid="3873924689207380586">"Ноль беш"</item>
- <item msgid="4849565597850069377">"Ноль алты"</item>
- <item msgid="4404219424523572364">"Ноль жети"</item>
- <item msgid="8740481214764087329">"Ноль сегиз"</item>
- <item msgid="1713216865806811237">"Ноль тогуз"</item>
+ <item msgid="2091812961809760681">"Ноль бир"</item>
+ <item msgid="1496435384877290709">"Ноль эки"</item>
+ <item msgid="881846472976674129">"Ноль үч"</item>
+ <item msgid="2784477043911540584">"Ноль төрт"</item>
+ <item msgid="1610928853656700614">"Ноль беш"</item>
+ <item msgid="2317806244043886658">"Ноль алты"</item>
+ <item msgid="3318687539120971327">"Ноль жети"</item>
+ <item msgid="5701600693712102348">"Ноль сегиз"</item>
+ <item msgid="3247381605947372495">"Ноль тогуз"</item>
<item msgid="3508406095411245038">"Он"</item>
<item msgid="7161996337755311711">"Он бир"</item>
<item msgid="4044549963329624197">"Он эки"</item>
diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml
index e3212fc5bd1b..4a9fe4fb67e4 100644
--- a/packages/SystemUI/res-keyguard/values-lo/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"O’Clock"</item>
- <item msgid="8837126587669001578">"O’One"</item>
- <item msgid="4294343372940455660">"O’Two"</item>
- <item msgid="7129166637707421536">"O’Three"</item>
- <item msgid="7579404865008788673">"O’Four"</item>
- <item msgid="3873924689207380586">"O’Five"</item>
- <item msgid="4849565597850069377">"O’Six"</item>
- <item msgid="4404219424523572364">"O’Seven"</item>
- <item msgid="8740481214764087329">"O’Eight"</item>
- <item msgid="1713216865806811237">"O’Nine"</item>
+ <item msgid="2091812961809760681">"ໂອ້ ໜຶ່ງ"</item>
+ <item msgid="1496435384877290709">"ໂອ້ ສອງ"</item>
+ <item msgid="881846472976674129">"ໂອ້ ສາມ"</item>
+ <item msgid="2784477043911540584">"ໂອ້ ສີ່"</item>
+ <item msgid="1610928853656700614">"ໂອ້ ຫ້າ"</item>
+ <item msgid="2317806244043886658">"ໂອ້ ຫົກ"</item>
+ <item msgid="3318687539120971327">"ໂອ້ ເຈັດ"</item>
+ <item msgid="5701600693712102348">"ໂອ້ ແປດ"</item>
+ <item msgid="3247381605947372495">"ໂອ້ ເກົ້າ"</item>
<item msgid="3508406095411245038">"ສິບ"</item>
<item msgid="7161996337755311711">"ສິບເອັດ"</item>
<item msgid="4044549963329624197">"ສິບສອງ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml
index eb0db2090019..90d174b7be4a 100644
--- a/packages/SystemUI/res-keyguard/values-lt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"val."</item>
- <item msgid="8837126587669001578">"Pirma"</item>
- <item msgid="4294343372940455660">"Dvi"</item>
- <item msgid="7129166637707421536">"Trys"</item>
- <item msgid="7579404865008788673">"Keturios"</item>
- <item msgid="3873924689207380586">"Penkios"</item>
- <item msgid="4849565597850069377">"Šešios"</item>
- <item msgid="4404219424523572364">"Septynios"</item>
- <item msgid="8740481214764087329">"Aštuonios"</item>
- <item msgid="1713216865806811237">"Devynios"</item>
+ <item msgid="2091812961809760681">"Pirma"</item>
+ <item msgid="1496435384877290709">"Dvi"</item>
+ <item msgid="881846472976674129">"Trys"</item>
+ <item msgid="2784477043911540584">"Keturios"</item>
+ <item msgid="1610928853656700614">"Penkios"</item>
+ <item msgid="2317806244043886658">"Šešios"</item>
+ <item msgid="3318687539120971327">"Septynios"</item>
+ <item msgid="5701600693712102348">"Aštuonios"</item>
+ <item msgid="3247381605947372495">"Devynios"</item>
<item msgid="3508406095411245038">"Dešimt"</item>
<item msgid="7161996337755311711">"Vienuolika"</item>
<item msgid="4044549963329624197">"Dvylika"</item>
diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml
index 045a8fad4ed5..877d4096c12f 100644
--- a/packages/SystemUI/res-keyguard/values-lv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml
@@ -180,15 +180,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Nulle, nulle"</item>
- <item msgid="8837126587669001578">"Viena"</item>
- <item msgid="4294343372940455660">"Divas"</item>
- <item msgid="7129166637707421536">"Trīs"</item>
- <item msgid="7579404865008788673">"Četras"</item>
- <item msgid="3873924689207380586">"Piecas"</item>
- <item msgid="4849565597850069377">"Sešas"</item>
- <item msgid="4404219424523572364">"Septiņas"</item>
- <item msgid="8740481214764087329">"Astoņas"</item>
- <item msgid="1713216865806811237">"Deviņas"</item>
+ <item msgid="2091812961809760681">"nulle viena"</item>
+ <item msgid="1496435384877290709">"nulle divas"</item>
+ <item msgid="881846472976674129">"nulle trīs"</item>
+ <item msgid="2784477043911540584">"nulle četras"</item>
+ <item msgid="1610928853656700614">"nulle piecas"</item>
+ <item msgid="2317806244043886658">"nulle sešas"</item>
+ <item msgid="3318687539120971327">"nulle septiņas"</item>
+ <item msgid="5701600693712102348">"nulle astoņas"</item>
+ <item msgid="3247381605947372495">"nulle deviņas"</item>
<item msgid="3508406095411245038">"Desmit"</item>
<item msgid="7161996337755311711">"Vienpadsmit"</item>
<item msgid="4044549963329624197">"Divpadsmit"</item>
diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml
index 5f72b47058e0..a59dc681132c 100644
--- a/packages/SystemUI/res-keyguard/values-mk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"часот"</item>
- <item msgid="8837126587669001578">"Еден по полноќ"</item>
- <item msgid="4294343372940455660">"Два по полноќ"</item>
- <item msgid="7129166637707421536">"Три по полноќ"</item>
- <item msgid="7579404865008788673">"Четири по полноќ"</item>
- <item msgid="3873924689207380586">"Пет по полноќ"</item>
- <item msgid="4849565597850069377">"Шест по полноќ"</item>
- <item msgid="4404219424523572364">"Седум по полноќ"</item>
- <item msgid="8740481214764087329">"Осум по полноќ"</item>
- <item msgid="1713216865806811237">"Девет по полноќ"</item>
+ <item msgid="2091812961809760681">"нула еден"</item>
+ <item msgid="1496435384877290709">"нула два"</item>
+ <item msgid="881846472976674129">"нула три"</item>
+ <item msgid="2784477043911540584">"нула четири"</item>
+ <item msgid="1610928853656700614">"нула пет"</item>
+ <item msgid="2317806244043886658">"нула шест"</item>
+ <item msgid="3318687539120971327">"нула седум"</item>
+ <item msgid="5701600693712102348">"нула осум"</item>
+ <item msgid="3247381605947372495">"нула девет"</item>
<item msgid="3508406095411245038">"Десет"</item>
<item msgid="7161996337755311711">"Единаесет"</item>
<item msgid="4044549963329624197">"Дванаесет"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml
index 907e68769740..d07caa51a61f 100644
--- a/packages/SystemUI/res-keyguard/values-ml/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml
@@ -169,66 +169,13 @@
<item msgid="2233497913571137419">"പത്ത്"</item>
<item msgid="5621554266768657830">"പതിനൊന്ന്"</item>
</string-array>
- <string-array name="type_clock_minutes">
- <item msgid="8322049385467207985">"മണി"</item>
- <item msgid="8837126587669001578">"ഒന്ന്"</item>
- <item msgid="4294343372940455660">"രണ്ട്"</item>
- <item msgid="7129166637707421536">"മൂന്ന്"</item>
- <item msgid="7579404865008788673">"നാല്"</item>
- <item msgid="3873924689207380586">"അഞ്ച്"</item>
- <item msgid="4849565597850069377">"ആറ്"</item>
- <item msgid="4404219424523572364">"ഏഴ്"</item>
- <item msgid="8740481214764087329">"എട്ട്"</item>
- <item msgid="1713216865806811237">"ഒമ്പത്"</item>
- <item msgid="3508406095411245038">"പത്ത്"</item>
- <item msgid="7161996337755311711">"പതിനൊന്ന്"</item>
- <item msgid="4044549963329624197">"പന്ത്രണ്ട്"</item>
- <item msgid="333373157917379088">"പതിമൂന്ന്"</item>
- <item msgid="2631202907124819385">"പതിനാല്"</item>
- <item msgid="6472396076858033453">"പതിനഞ്ച്"</item>
- <item msgid="8656981856181581643">"പതിനാറ്"</item>
- <item msgid="7289026608562030619">"പതിനേഴ്"</item>
- <item msgid="3881477602692646573">"പതിനെട്ട്"</item>
- <item msgid="3358129827772984226">"പത്തൊമ്പത്"</item>
- <item msgid="3308575407402865807">"ഇരുപത്"</item>
- <item msgid="5346560955382229629">"ഇരുപത്തിയൊന്ന്\n"</item>
- <item msgid="226750304761473436">"ഇരുപത്തിരണ്ട്\n"</item>
- <item msgid="616811325336838734">"ഇരുപത്തിമൂന്ന്\n"</item>
- <item msgid="616346116869053440">"ഇരുപത്തിനാല്\n"</item>
- <item msgid="4642996410384042830">"ഇരുപത്തിയഞ്ച്\n"</item>
- <item msgid="7506092849993571465">"ഇരുപത്തിയാറ്\n"</item>
- <item msgid="1915078191101042031">"ഇരുപത്തിയേഴ്\n"</item>
- <item msgid="4292378641900520252">"ഇരുപത്തിയെട്ട്\n"</item>
- <item msgid="5339513901773103696">"ഇരുപത്തിയൊമ്പത്\n"</item>
- <item msgid="3574673250891657607">"മുപ്പത്"</item>
- <item msgid="5796923836589110940">"മുപ്പത്തിയൊന്ന്\n"</item>
- <item msgid="5859323597571702052">"മുപ്പത്തിരണ്ട്\n"</item>
- <item msgid="5133326723148876507">"മുപ്പത്തിമൂന്ന്\n"</item>
- <item msgid="2693999494655663096">"മുപ്പത്തിനാല്\n"</item>
- <item msgid="3316754944962836197">"അമ്പത്തിയഞ്ച്\n"</item>
- <item msgid="816891008836796723">"മുപ്പത്തിയാറ്\n"</item>
- <item msgid="9158890488666520078">"മുപ്പത്തിയേഴ്\n"</item>
- <item msgid="1894769703213894011">"മുപ്പത്തിയെട്ട്\n"</item>
- <item msgid="5638820345598572399">"മുപ്പത്തിയൊമ്പത്\n"</item>
- <item msgid="8838304023017895439">"നാൽപത്"</item>
- <item msgid="1834742948932559597">"നാൽപ്പത്തിയൊന്ന്\n"</item>
- <item msgid="6573707308847773944">"നാൽപത്തിരണ്ട്\n"</item>
- <item msgid="2450149950652678001">"നാൽപ്പത്തിമൂന്ന്\n"</item>
- <item msgid="2874667401318178036">"നാൽപത്തിനാല്\n"</item>
- <item msgid="3391101532763048862">"നാൽപത്തിയഞ്ച്\n"</item>
- <item msgid="1671489330863254362">"നാൽപ്പത്തിയാറ്\n"</item>
- <item msgid="5916017359554531038">"നാൽപത്തിയേഴ്\n"</item>
- <item msgid="8205413177993059967">"നാൽപത്തിയെട്ട്\n"</item>
- <item msgid="6607867415142171302">"നാൽപത്തിയൊമ്പത്\n"</item>
- <item msgid="8358850748472089162">"അമ്പത്"</item>
- <item msgid="3551313125255080234">"അമ്പത്തിയൊന്ന്\n"</item>
- <item msgid="1559678130725716542">"അമ്പത്തിരണ്ട്\n"</item>
- <item msgid="431441994725492377">"അമ്പത്തിമൂന്ന്\n"</item>
- <item msgid="6345774640539623024">"അമ്പത്തിനാല്\n"</item>
- <item msgid="8018192990793931120">"അമ്പത്തിയഞ്ച്\n"</item>
- <item msgid="6187650843754604534">"അമ്പത്തിയാറ്\n"</item>
- <item msgid="8727240174015993259">"അമ്പത്തിയേഴ്\n"</item>
- <item msgid="848339003778952950">"അമ്പത്തിയെട്ട്\n"</item>
- <item msgid="5798985802835423618">"അമ്പത്തിയൊമ്പത്\n"</item>
- </string-array>
+ <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
+ <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
+ <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
+ <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
+ <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
+ <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
+ <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
+ <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
+ <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml
index 8a3255d5c968..01c87ef9f809 100644
--- a/packages/SystemUI/res-keyguard/values-mn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Цаг"</item>
- <item msgid="8837126587669001578">"Нэг"</item>
- <item msgid="4294343372940455660">"Хоёр"</item>
- <item msgid="7129166637707421536">"Гурав"</item>
- <item msgid="7579404865008788673">"Дөрөв"</item>
- <item msgid="3873924689207380586">"Тав"</item>
- <item msgid="4849565597850069377">"Зургаа"</item>
- <item msgid="4404219424523572364">"Долоо"</item>
- <item msgid="8740481214764087329">"Найм"</item>
- <item msgid="1713216865806811237">"Ес"</item>
+ <item msgid="2091812961809760681">"Нэг"</item>
+ <item msgid="1496435384877290709">"Хоёр"</item>
+ <item msgid="881846472976674129">"Гурав"</item>
+ <item msgid="2784477043911540584">"Дөрөв"</item>
+ <item msgid="1610928853656700614">"Тав"</item>
+ <item msgid="2317806244043886658">"Зургаа"</item>
+ <item msgid="3318687539120971327">"Долоо"</item>
+ <item msgid="5701600693712102348">"Найм"</item>
+ <item msgid="3247381605947372495">"Ес"</item>
<item msgid="3508406095411245038">"Арав"</item>
<item msgid="7161996337755311711">"Арван нэг"</item>
<item msgid="4044549963329624197">"Арван хоёр"</item>
diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml
index 5a7b0cf3c616..0111cd1e772f 100644
--- a/packages/SystemUI/res-keyguard/values-mr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"दहा"</item>
<item msgid="5621554266768657830">"एकरा"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"वाजता"</item>
+ <item msgid="2091812961809760681">"शून्य एक"</item>
+ <item msgid="1496435384877290709">"शून्य दोन"</item>
+ <item msgid="881846472976674129">"शून्य तीन"</item>
+ <item msgid="2784477043911540584">"शून्य चार"</item>
+ <item msgid="1610928853656700614">"शून्य पाच"</item>
+ <item msgid="2317806244043886658">"शून्य सहा"</item>
+ <item msgid="3318687539120971327">"शून्य सात"</item>
+ <item msgid="5701600693712102348">"शून्य आठ"</item>
+ <item msgid="3247381605947372495">"शून्य नऊ"</item>
+ <item msgid="3508406095411245038">"दहा"</item>
+ <item msgid="7161996337755311711">"एकरा"</item>
+ <item msgid="4044549963329624197">"बारा"</item>
+ <item msgid="333373157917379088">"तेरा"</item>
+ <item msgid="2631202907124819385">"चौदा"</item>
+ <item msgid="6472396076858033453">"पंधरा"</item>
+ <item msgid="8656981856181581643">"सोळा"</item>
+ <item msgid="7289026608562030619">"सतरा"</item>
+ <item msgid="3881477602692646573">"अठरा"</item>
+ <item msgid="3358129827772984226">"एकोणीस"</item>
+ <item msgid="3308575407402865807">"वीस"</item>
+ <item msgid="5346560955382229629">"एकवीस\n"</item>
+ <item msgid="226750304761473436">"बावीस\n"</item>
+ <item msgid="616811325336838734">"तेवीस\n"</item>
+ <item msgid="616346116869053440">"चोवीस\n"</item>
+ <item msgid="4642996410384042830">"पंचवीस\n"</item>
+ <item msgid="7506092849993571465">"सव्वीस\n"</item>
+ <item msgid="1915078191101042031">"सत्तावीस\n"</item>
+ <item msgid="4292378641900520252">"अठ्ठावीस\n"</item>
+ <item msgid="5339513901773103696">"एकोणतीस\n"</item>
+ <item msgid="3574673250891657607">"तीस"</item>
+ <item msgid="5796923836589110940">"एकतीस\n"</item>
+ <item msgid="5859323597571702052">"बत्तीस\n"</item>
+ <item msgid="5133326723148876507">"तेहतीस\n"</item>
+ <item msgid="2693999494655663096">"चौतीस\n"</item>
+ <item msgid="3316754944962836197">"पस्तीस\n"</item>
+ <item msgid="816891008836796723">"छत्तीस\n"</item>
+ <item msgid="9158890488666520078">"सदतीस\n"</item>
+ <item msgid="1894769703213894011">"अडतीस\n"</item>
+ <item msgid="5638820345598572399">"एकोणचाळीस\n"</item>
+ <item msgid="8838304023017895439">"चाळीस"</item>
+ <item msgid="1834742948932559597">"एकेचाळीस\n"</item>
+ <item msgid="6573707308847773944">"बेचाळीस\n"</item>
+ <item msgid="2450149950652678001">"त्रेचाळीस\n"</item>
+ <item msgid="2874667401318178036">"चव्वेचाळीस\n"</item>
+ <item msgid="3391101532763048862">"पंचेचाळीस\n"</item>
+ <item msgid="1671489330863254362">"शेहेचाळीस\n"</item>
+ <item msgid="5916017359554531038">"सत्तेचाळीस\n"</item>
+ <item msgid="8205413177993059967">"अठ्ठेचाळीस\n"</item>
+ <item msgid="6607867415142171302">"एकोणपन्नास\n"</item>
+ <item msgid="8358850748472089162">"पन्नास"</item>
+ <item msgid="3551313125255080234">"एकावन्न\n"</item>
+ <item msgid="1559678130725716542">"बावन्न\n"</item>
+ <item msgid="431441994725492377">"त्रेपन्न\n"</item>
+ <item msgid="6345774640539623024">"चौपन्न\n"</item>
+ <item msgid="8018192990793931120">"पंचावन्न\n"</item>
+ <item msgid="6187650843754604534">"छप्पन\n"</item>
+ <item msgid="8727240174015993259">"सत्तावन्न\n"</item>
+ <item msgid="848339003778952950">"अठ्ठावन्न\n"</item>
+ <item msgid="5798985802835423618">"एकोणसाठ\n"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml
index 2aa361dbad99..553757efd908 100644
--- a/packages/SystemUI/res-keyguard/values-ms/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Pukul"</item>
- <item msgid="8837126587669001578">"Satu"</item>
- <item msgid="4294343372940455660">"Dua"</item>
- <item msgid="7129166637707421536">"Tiga"</item>
- <item msgid="7579404865008788673">"Empat"</item>
- <item msgid="3873924689207380586">"Lima"</item>
- <item msgid="4849565597850069377">"Enam"</item>
- <item msgid="4404219424523572364">"Tujuh"</item>
- <item msgid="8740481214764087329">"Lapan"</item>
- <item msgid="1713216865806811237">"Sembilan"</item>
+ <item msgid="2091812961809760681">"Kosong Satu"</item>
+ <item msgid="1496435384877290709">"Kosong Dua"</item>
+ <item msgid="881846472976674129">"Kosong Tiga"</item>
+ <item msgid="2784477043911540584">"Kosong Empat"</item>
+ <item msgid="1610928853656700614">"Kosong Lima"</item>
+ <item msgid="2317806244043886658">"Kosong Enam"</item>
+ <item msgid="3318687539120971327">"Kosong Tujuh"</item>
+ <item msgid="5701600693712102348">"Kosong Lapan"</item>
+ <item msgid="3247381605947372495">"Kosong Sembilan"</item>
<item msgid="3508406095411245038">"Sepuluh"</item>
<item msgid="7161996337755311711">"Sebelas"</item>
<item msgid="4044549963329624197">"Dua belas"</item>
diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml
index 134484edbdb5..0fe308573b51 100644
--- a/packages/SystemUI/res-keyguard/values-my/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-my/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"နာရီ"</item>
- <item msgid="8837126587669001578">"တစ်"</item>
- <item msgid="4294343372940455660">"နှစ်"</item>
- <item msgid="7129166637707421536">"သုံး"</item>
- <item msgid="7579404865008788673">"လေး"</item>
- <item msgid="3873924689207380586">"ငါး"</item>
- <item msgid="4849565597850069377">"ခြောက်"</item>
- <item msgid="4404219424523572364">"ခုနစ်"</item>
- <item msgid="8740481214764087329">"ရှစ်"</item>
- <item msgid="1713216865806811237">"ကိုး"</item>
+ <item msgid="2091812961809760681">"တစ်"</item>
+ <item msgid="1496435384877290709">"နှစ်"</item>
+ <item msgid="881846472976674129">"သုံး"</item>
+ <item msgid="2784477043911540584">"လေး"</item>
+ <item msgid="1610928853656700614">"ငါး"</item>
+ <item msgid="2317806244043886658">"ခြောက်"</item>
+ <item msgid="3318687539120971327">"ခုနစ်"</item>
+ <item msgid="5701600693712102348">"ရှစ်"</item>
+ <item msgid="3247381605947372495">"ကိုး"</item>
<item msgid="3508406095411245038">"တစ်ဆယ်"</item>
<item msgid="7161996337755311711">"တစ်ဆယ့်တစ်"</item>
<item msgid="4044549963329624197">"တစ်ဆယ့်နှစ်"</item>
diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml
index a247b205b53e..01ba2358e560 100644
--- a/packages/SystemUI/res-keyguard/values-nb/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"null-null"</item>
- <item msgid="8837126587669001578">"Ett"</item>
- <item msgid="4294343372940455660">"To"</item>
- <item msgid="7129166637707421536">"Tre"</item>
- <item msgid="7579404865008788673">"Fire"</item>
- <item msgid="3873924689207380586">"Fem"</item>
- <item msgid="4849565597850069377">"Seks"</item>
- <item msgid="4404219424523572364">"Sju"</item>
- <item msgid="8740481214764087329">"åtte"</item>
- <item msgid="1713216865806811237">"Ni"</item>
+ <item msgid="2091812961809760681">"En"</item>
+ <item msgid="1496435384877290709">"To"</item>
+ <item msgid="881846472976674129">"Tre"</item>
+ <item msgid="2784477043911540584">"Fire"</item>
+ <item msgid="1610928853656700614">"Fem"</item>
+ <item msgid="2317806244043886658">"Seks"</item>
+ <item msgid="3318687539120971327">"Sju"</item>
+ <item msgid="5701600693712102348">"Åtte"</item>
+ <item msgid="3247381605947372495">"Ni"</item>
<item msgid="3508406095411245038">"Ti"</item>
<item msgid="7161996337755311711">"Elleve"</item>
<item msgid="4044549963329624197">"Tolv"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 501d87bcd409..3f99a3801425 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"बज्यो"</item>
- <item msgid="8837126587669001578">"एक"</item>
- <item msgid="4294343372940455660">"दुई"</item>
- <item msgid="7129166637707421536">"तीन"</item>
- <item msgid="7579404865008788673">"चार"</item>
- <item msgid="3873924689207380586">"पाँच"</item>
- <item msgid="4849565597850069377">"छ"</item>
- <item msgid="4404219424523572364">"सात"</item>
- <item msgid="8740481214764087329">"आठ"</item>
- <item msgid="1713216865806811237">"नौ"</item>
+ <item msgid="2091812961809760681">"बजेर एक मिनेट"</item>
+ <item msgid="1496435384877290709">"बजेर दुई मिनेट"</item>
+ <item msgid="881846472976674129">"बजेर तीन मिनेट"</item>
+ <item msgid="2784477043911540584">"बजेर चार मिनेट"</item>
+ <item msgid="1610928853656700614">"बजेर पाँच मिनेट"</item>
+ <item msgid="2317806244043886658">"बजेर छ मिनेट"</item>
+ <item msgid="3318687539120971327">"बजेर सात मिनेट"</item>
+ <item msgid="5701600693712102348">"बजेर आठ मिनेट"</item>
+ <item msgid="3247381605947372495">"बजेर ९ मिनेट"</item>
<item msgid="3508406095411245038">"दस"</item>
<item msgid="7161996337755311711">"एघार"</item>
<item msgid="4044549963329624197">"बाह्र"</item>
diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml
index 9826dc01381d..16407d72964a 100644
--- a/packages/SystemUI/res-keyguard/values-nl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"uur"</item>
- <item msgid="8837126587669001578">"Nul één"</item>
- <item msgid="4294343372940455660">"Nul twee"</item>
- <item msgid="7129166637707421536">"Nul drie"</item>
- <item msgid="7579404865008788673">"Nul vier"</item>
- <item msgid="3873924689207380586">"Nul vijf"</item>
- <item msgid="4849565597850069377">"Nul zes"</item>
- <item msgid="4404219424523572364">"Nul zeven"</item>
- <item msgid="8740481214764087329">"Nul acht"</item>
- <item msgid="1713216865806811237">"Nul negen"</item>
+ <item msgid="2091812961809760681">"Nul één"</item>
+ <item msgid="1496435384877290709">"Nul twee"</item>
+ <item msgid="881846472976674129">"Nul drie"</item>
+ <item msgid="2784477043911540584">"Nul vier"</item>
+ <item msgid="1610928853656700614">"Nul vijf"</item>
+ <item msgid="2317806244043886658">"Nul zes"</item>
+ <item msgid="3318687539120971327">"Nul zeven"</item>
+ <item msgid="5701600693712102348">"Nul acht"</item>
+ <item msgid="3247381605947372495">"Nul negen"</item>
<item msgid="3508406095411245038">"Tien"</item>
<item msgid="7161996337755311711">"Elf"</item>
<item msgid="4044549963329624197">"Twaalf"</item>
diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml
index d6e364e43a31..671069e93718 100644
--- a/packages/SystemUI/res-keyguard/values-or/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-or/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"ଘଣ୍ଟା"</item>
- <item msgid="8837126587669001578">"ଏକ"</item>
- <item msgid="4294343372940455660">"ଦୁଇ"</item>
- <item msgid="7129166637707421536">"ତିନି"</item>
- <item msgid="7579404865008788673">"ଚାରି"</item>
- <item msgid="3873924689207380586">"ପାଞ୍ଚ"</item>
- <item msgid="4849565597850069377">"ଛଅ"</item>
- <item msgid="4404219424523572364">"ସାତ"</item>
- <item msgid="8740481214764087329">"ଆଠ"</item>
- <item msgid="1713216865806811237">"ନଅ"</item>
+ <item msgid="2091812961809760681">"ଏକ"</item>
+ <item msgid="1496435384877290709">"ଦୁଇ"</item>
+ <item msgid="881846472976674129">"ତିନି"</item>
+ <item msgid="2784477043911540584">"ଚାରି"</item>
+ <item msgid="1610928853656700614">"ପାଞ୍ଚ"</item>
+ <item msgid="2317806244043886658">"ଛଅ"</item>
+ <item msgid="3318687539120971327">"ସାତ"</item>
+ <item msgid="5701600693712102348">"ଆଠ"</item>
+ <item msgid="3247381605947372495">"ନଅ"</item>
<item msgid="3508406095411245038">"ଦଶ"</item>
<item msgid="7161996337755311711">"ଏଗାର"</item>
<item msgid="4044549963329624197">"ବାର"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml
index 5bbaaba46711..a9a43d4d1a5d 100644
--- a/packages/SystemUI/res-keyguard/values-pa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"ਵਜੇ"</item>
- <item msgid="8837126587669001578">"ਇੱਕ"</item>
- <item msgid="4294343372940455660">"ਦੋ"</item>
- <item msgid="7129166637707421536">"ਤਿੰਨ"</item>
- <item msgid="7579404865008788673">"ਚਾਰ"</item>
- <item msgid="3873924689207380586">"ਪੰਜ"</item>
- <item msgid="4849565597850069377">"ਛੇ"</item>
- <item msgid="4404219424523572364">"ਸੱਤ"</item>
- <item msgid="8740481214764087329">"ਅੱਠ"</item>
- <item msgid="1713216865806811237">"ਨੌ"</item>
+ <item msgid="2091812961809760681">"ਓਹੋ ਇੱਕ"</item>
+ <item msgid="1496435384877290709">"ਓਹੋ ਦੋ"</item>
+ <item msgid="881846472976674129">"ਓਹੋ ਤਿੰਨ"</item>
+ <item msgid="2784477043911540584">"ਓਹੋ ਚਾਰ"</item>
+ <item msgid="1610928853656700614">"ਓਹੋ ਪੰਜ"</item>
+ <item msgid="2317806244043886658">"ਓਹੋ ਛੇ"</item>
+ <item msgid="3318687539120971327">"ਓਹੋ ਸੱਤ"</item>
+ <item msgid="5701600693712102348">"ਓਹੋ ਅੱਠ"</item>
+ <item msgid="3247381605947372495">"ਓਹੋ ਨੌਂ"</item>
<item msgid="3508406095411245038">"ਦਸ"</item>
<item msgid="7161996337755311711">"ਗਿਆਰਾਂ"</item>
<item msgid="4044549963329624197">"ਬਾਰਾਂ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml
index c9d268350695..517ee3d196f0 100644
--- a/packages/SystemUI/res-keyguard/values-pl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Zero zero"</item>
- <item msgid="8837126587669001578">"Zero jeden"</item>
- <item msgid="4294343372940455660">"Zero dwa"</item>
- <item msgid="7129166637707421536">"Zero trzy"</item>
- <item msgid="7579404865008788673">"Zero cztery"</item>
- <item msgid="3873924689207380586">"Zero pięć"</item>
- <item msgid="4849565597850069377">"Zero sześć"</item>
- <item msgid="4404219424523572364">"Zero siedem"</item>
- <item msgid="8740481214764087329">"Zero osiem"</item>
- <item msgid="1713216865806811237">"Zero dziewięć"</item>
+ <item msgid="2091812961809760681">"Zero jeden"</item>
+ <item msgid="1496435384877290709">"Zero dwa"</item>
+ <item msgid="881846472976674129">"Zero trzy"</item>
+ <item msgid="2784477043911540584">"Zero cztery"</item>
+ <item msgid="1610928853656700614">"Zero pięć"</item>
+ <item msgid="2317806244043886658">"Zero sześć"</item>
+ <item msgid="3318687539120971327">"Zero siedem"</item>
+ <item msgid="5701600693712102348">"Zero osiem"</item>
+ <item msgid="3247381605947372495">"Zero dziewięć"</item>
<item msgid="3508406095411245038">"Dziesięć"</item>
<item msgid="7161996337755311711">"Jedenaście"</item>
<item msgid="4044549963329624197">"Dwanaście"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
index 31d19ab73f7f..9ee2011543c4 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Em ponto"</item>
- <item msgid="8837126587669001578">"Um"</item>
- <item msgid="4294343372940455660">"Dois"</item>
- <item msgid="7129166637707421536">"Três"</item>
- <item msgid="7579404865008788673">"Quatro"</item>
- <item msgid="3873924689207380586">"Cinco"</item>
- <item msgid="4849565597850069377">"Seis"</item>
- <item msgid="4404219424523572364">"Sete"</item>
- <item msgid="8740481214764087329">"Oito"</item>
- <item msgid="1713216865806811237">"Nove"</item>
+ <item msgid="2091812961809760681">"Um"</item>
+ <item msgid="1496435384877290709">"Dois"</item>
+ <item msgid="881846472976674129">"Três"</item>
+ <item msgid="2784477043911540584">"Quatro"</item>
+ <item msgid="1610928853656700614">"Cinco"</item>
+ <item msgid="2317806244043886658">"Seis"</item>
+ <item msgid="3318687539120971327">"Sete"</item>
+ <item msgid="5701600693712102348">"Oito"</item>
+ <item msgid="3247381605947372495">"Nove"</item>
<item msgid="3508406095411245038">"Dez"</item>
<item msgid="7161996337755311711">"Onze"</item>
<item msgid="4044549963329624197">"Doze"</item>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
index 159f8c081976..fa68a54877e1 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Dez"</item>
<item msgid="5621554266768657830">"Onze"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985"></item>
+ <item msgid="2091812961809760681">"Zero, um"</item>
+ <item msgid="1496435384877290709">"Zero, dois"</item>
+ <item msgid="881846472976674129">"Zero, três"</item>
+ <item msgid="2784477043911540584">"Zero, quatro"</item>
+ <item msgid="1610928853656700614">"Zero, cinco"</item>
+ <item msgid="2317806244043886658">"Zero, seis"</item>
+ <item msgid="3318687539120971327">"Zero, sete"</item>
+ <item msgid="5701600693712102348">"Zero, oito"</item>
+ <item msgid="3247381605947372495">"Zero, nove"</item>
+ <item msgid="3508406095411245038">"Dez"</item>
+ <item msgid="7161996337755311711">"Onze"</item>
+ <item msgid="4044549963329624197">"Doze"</item>
+ <item msgid="333373157917379088">"Treze"</item>
+ <item msgid="2631202907124819385">"Catorze"</item>
+ <item msgid="6472396076858033453">"Quinze"</item>
+ <item msgid="8656981856181581643">"Dezasseis"</item>
+ <item msgid="7289026608562030619">"Dezassete"</item>
+ <item msgid="3881477602692646573">"Dezoito"</item>
+ <item msgid="3358129827772984226">"Dezanove"</item>
+ <item msgid="3308575407402865807">"Vinte"</item>
+ <item msgid="5346560955382229629">"Vinte\ne um"</item>
+ <item msgid="226750304761473436">"Vinte\ne dois"</item>
+ <item msgid="616811325336838734">"Vinte\ne três"</item>
+ <item msgid="616346116869053440">"Vinte\ne quatro"</item>
+ <item msgid="4642996410384042830">"Vinte\ne cinco"</item>
+ <item msgid="7506092849993571465">"Vinte\ne seis"</item>
+ <item msgid="1915078191101042031">"Vinte\ne sete"</item>
+ <item msgid="4292378641900520252">"Vinte\ne oito"</item>
+ <item msgid="5339513901773103696">"Vinte\ne nove"</item>
+ <item msgid="3574673250891657607">"Trinta"</item>
+ <item msgid="5796923836589110940">"Trinta\ne um"</item>
+ <item msgid="5859323597571702052">"Trinta\ne dois"</item>
+ <item msgid="5133326723148876507">"Trinta\ne três"</item>
+ <item msgid="2693999494655663096">"Trinta\ne quatro"</item>
+ <item msgid="3316754944962836197">"Trinta\ne cinco"</item>
+ <item msgid="816891008836796723">"Trinta\ne seis"</item>
+ <item msgid="9158890488666520078">"Trinta\ne sete"</item>
+ <item msgid="1894769703213894011">"Trinta\ne oito"</item>
+ <item msgid="5638820345598572399">"Trinta\ne nove"</item>
+ <item msgid="8838304023017895439">"Quarenta"</item>
+ <item msgid="1834742948932559597">"Quarenta\ne um"</item>
+ <item msgid="6573707308847773944">"Quarenta\ne dois"</item>
+ <item msgid="2450149950652678001">"Quarenta\ne três"</item>
+ <item msgid="2874667401318178036">"Quarenta\ne quatro"</item>
+ <item msgid="3391101532763048862">"Quarenta\ne cinco"</item>
+ <item msgid="1671489330863254362">"Quarenta\ne seis"</item>
+ <item msgid="5916017359554531038">"Quarenta\ne sete"</item>
+ <item msgid="8205413177993059967">"Quarenta\ne oito"</item>
+ <item msgid="6607867415142171302">"Quarenta\ne nove"</item>
+ <item msgid="8358850748472089162">"Cinquenta"</item>
+ <item msgid="3551313125255080234">"Cinquenta\ne um"</item>
+ <item msgid="1559678130725716542">"Cinquenta\ne dois"</item>
+ <item msgid="431441994725492377">"Cinquenta\ne três"</item>
+ <item msgid="6345774640539623024">"Cinquenta\ne quatro"</item>
+ <item msgid="8018192990793931120">"Cinquenta\ne cinco"</item>
+ <item msgid="6187650843754604534">"Cinquenta\ne seis"</item>
+ <item msgid="8727240174015993259">"Cinquenta\ne sete"</item>
+ <item msgid="848339003778952950">"Cinquenta\ne oito"</item>
+ <item msgid="5798985802835423618">"Cinquenta\ne nove"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml
index 31d19ab73f7f..9ee2011543c4 100644
--- a/packages/SystemUI/res-keyguard/values-pt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Em ponto"</item>
- <item msgid="8837126587669001578">"Um"</item>
- <item msgid="4294343372940455660">"Dois"</item>
- <item msgid="7129166637707421536">"Três"</item>
- <item msgid="7579404865008788673">"Quatro"</item>
- <item msgid="3873924689207380586">"Cinco"</item>
- <item msgid="4849565597850069377">"Seis"</item>
- <item msgid="4404219424523572364">"Sete"</item>
- <item msgid="8740481214764087329">"Oito"</item>
- <item msgid="1713216865806811237">"Nove"</item>
+ <item msgid="2091812961809760681">"Um"</item>
+ <item msgid="1496435384877290709">"Dois"</item>
+ <item msgid="881846472976674129">"Três"</item>
+ <item msgid="2784477043911540584">"Quatro"</item>
+ <item msgid="1610928853656700614">"Cinco"</item>
+ <item msgid="2317806244043886658">"Seis"</item>
+ <item msgid="3318687539120971327">"Sete"</item>
+ <item msgid="5701600693712102348">"Oito"</item>
+ <item msgid="3247381605947372495">"Nove"</item>
<item msgid="3508406095411245038">"Dez"</item>
<item msgid="7161996337755311711">"Onze"</item>
<item msgid="4044549963329624197">"Doze"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml
index 8b8c27e2c958..4ff1a9a02500 100644
--- a/packages/SystemUI/res-keyguard/values-ro/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml
@@ -180,15 +180,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"."</item>
- <item msgid="8837126587669001578">"și unu"</item>
- <item msgid="4294343372940455660">"și două"</item>
- <item msgid="7129166637707421536">"și trei"</item>
- <item msgid="7579404865008788673">"și patru"</item>
- <item msgid="3873924689207380586">"și cinci"</item>
- <item msgid="4849565597850069377">"și șase"</item>
- <item msgid="4404219424523572364">"și șapte"</item>
- <item msgid="8740481214764087329">"și opt"</item>
- <item msgid="1713216865806811237">"și nouă"</item>
+ <item msgid="2091812961809760681">"Ora unu"</item>
+ <item msgid="1496435384877290709">"Ora două"</item>
+ <item msgid="881846472976674129">"Ora trei"</item>
+ <item msgid="2784477043911540584">"Ora patru"</item>
+ <item msgid="1610928853656700614">"Ora cinci"</item>
+ <item msgid="2317806244043886658">"Ora șase"</item>
+ <item msgid="3318687539120971327">"Ora șapte"</item>
+ <item msgid="5701600693712102348">"Ora opt"</item>
+ <item msgid="3247381605947372495">"Ora nouă"</item>
<item msgid="3508406095411245038">"Zece"</item>
<item msgid="7161996337755311711">"Unsprezece"</item>
<item msgid="4044549963329624197">"Douăsprezece"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index 8f6a168e37f0..8ce71fc20ad7 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"ровно"</item>
- <item msgid="8837126587669001578">"ноль одна"</item>
- <item msgid="4294343372940455660">"ноль две"</item>
- <item msgid="7129166637707421536">"ноль три"</item>
- <item msgid="7579404865008788673">"ноль четыре"</item>
- <item msgid="3873924689207380586">"ноль пять"</item>
- <item msgid="4849565597850069377">"ноль шесть"</item>
- <item msgid="4404219424523572364">"ноль семь"</item>
- <item msgid="8740481214764087329">"ноль восемь"</item>
- <item msgid="1713216865806811237">"ноль девять"</item>
+ <item msgid="2091812961809760681">"Ноль одна"</item>
+ <item msgid="1496435384877290709">"Ноль две"</item>
+ <item msgid="881846472976674129">"Ноль три"</item>
+ <item msgid="2784477043911540584">"Ноль четыре"</item>
+ <item msgid="1610928853656700614">"Ноль пять"</item>
+ <item msgid="2317806244043886658">"Ноль шесть"</item>
+ <item msgid="3318687539120971327">"Ноль семь"</item>
+ <item msgid="5701600693712102348">"Ноль восемь"</item>
+ <item msgid="3247381605947372495">"Ноль девять"</item>
<item msgid="3508406095411245038">"десять"</item>
<item msgid="7161996337755311711">"одиннадцать"</item>
<item msgid="4044549963329624197">"двенадцать"</item>
diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml
index fbb530198aec..566eb57e7417 100644
--- a/packages/SystemUI/res-keyguard/values-si/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-si/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"පැය"</item>
- <item msgid="8837126587669001578">"එකයි"</item>
- <item msgid="4294343372940455660">"දෙකයි"</item>
- <item msgid="7129166637707421536">"තුනයි"</item>
- <item msgid="7579404865008788673">"හතරයි"</item>
- <item msgid="3873924689207380586">"පහයි"</item>
- <item msgid="4849565597850069377">"හයයි"</item>
- <item msgid="4404219424523572364">"හතයි"</item>
- <item msgid="8740481214764087329">"අටයි"</item>
- <item msgid="1713216865806811237">"නවයයි"</item>
+ <item msgid="2091812961809760681">"බින්දුවයි එක"</item>
+ <item msgid="1496435384877290709">"බින්දුවයි දෙක"</item>
+ <item msgid="881846472976674129">"බින්දුවයි තුන"</item>
+ <item msgid="2784477043911540584">"බින්දුවයි හතර"</item>
+ <item msgid="1610928853656700614">"බින්දුවයි පහ"</item>
+ <item msgid="2317806244043886658">"බින්දුවයි හය"</item>
+ <item msgid="3318687539120971327">"බින්දුවයි හත"</item>
+ <item msgid="5701600693712102348">"බින්දුවයි අට"</item>
+ <item msgid="3247381605947372495">"බින්දුවයි නවය"</item>
<item msgid="3508406095411245038">"දහය"</item>
<item msgid="7161996337755311711">"එකොළහ"</item>
<item msgid="4044549963329624197">"දොළහ"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index e586cbfe4360..025ecc5514d4 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -187,13 +187,66 @@
<item msgid="2233497913571137419">"Desať"</item>
<item msgid="5621554266768657830">"Jedenásť"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"hod."</item>
+ <item msgid="2091812961809760681">"Nula jeden"</item>
+ <item msgid="1496435384877290709">"Nula dva"</item>
+ <item msgid="881846472976674129">"Nula tri"</item>
+ <item msgid="2784477043911540584">"Nula štyri"</item>
+ <item msgid="1610928853656700614">"Nula päť"</item>
+ <item msgid="2317806244043886658">"Nula šesť"</item>
+ <item msgid="3318687539120971327">"Nula sedem"</item>
+ <item msgid="5701600693712102348">"Nula osem"</item>
+ <item msgid="3247381605947372495">"Nula deväť"</item>
+ <item msgid="3508406095411245038">"Desať"</item>
+ <item msgid="7161996337755311711">"Jedenásť"</item>
+ <item msgid="4044549963329624197">"Dvanásť"</item>
+ <item msgid="333373157917379088">"Trinásť"</item>
+ <item msgid="2631202907124819385">"Štrnásť"</item>
+ <item msgid="6472396076858033453">"Päťnásť"</item>
+ <item msgid="8656981856181581643">"Šesťnásť"</item>
+ <item msgid="7289026608562030619">"Sedemnásť"</item>
+ <item msgid="3881477602692646573">"Osemnásť"</item>
+ <item msgid="3358129827772984226">"Deväťnásť"</item>
+ <item msgid="3308575407402865807">"Dvadsať"</item>
+ <item msgid="5346560955382229629">"Dvadsaťjeden\n"</item>
+ <item msgid="226750304761473436">"Dvadsaťdva\n"</item>
+ <item msgid="616811325336838734">"Dvadsaťtri\n"</item>
+ <item msgid="616346116869053440">"Dvadsaťštyri\n"</item>
+ <item msgid="4642996410384042830">"Dvadsaťpäť\n"</item>
+ <item msgid="7506092849993571465">"Dvadsaťšesť\n"</item>
+ <item msgid="1915078191101042031">"Dvadsaťsedem\n"</item>
+ <item msgid="4292378641900520252">"Dvadsaťosem\n"</item>
+ <item msgid="5339513901773103696">"Dvadsaťdeväť\n"</item>
+ <item msgid="3574673250891657607">"Tridsať"</item>
+ <item msgid="5796923836589110940">"Tridsaťjeden\n"</item>
+ <item msgid="5859323597571702052">"Tridsaťdva\n"</item>
+ <item msgid="5133326723148876507">"Tridsaťtri\n"</item>
+ <item msgid="2693999494655663096">"Tridsaťštyri\n"</item>
+ <item msgid="3316754944962836197">"Tridsaťpäť\n"</item>
+ <item msgid="816891008836796723">"Tridsaťšesť\n"</item>
+ <item msgid="9158890488666520078">"Tridsaťsedem\n"</item>
+ <item msgid="1894769703213894011">"Tridsaťosem\n"</item>
+ <item msgid="5638820345598572399">"Tridsaťdeväť\n"</item>
+ <item msgid="8838304023017895439">"Štyridsať"</item>
+ <item msgid="1834742948932559597">"Štyridsaťjeden\n"</item>
+ <item msgid="6573707308847773944">"Štyridsaťdva\n"</item>
+ <item msgid="2450149950652678001">"Štyridsaťtri\n"</item>
+ <item msgid="2874667401318178036">"Štyridsaťštyri\n"</item>
+ <item msgid="3391101532763048862">"Štyridsaťpäť\n"</item>
+ <item msgid="1671489330863254362">"Štyridsaťšesť\n"</item>
+ <item msgid="5916017359554531038">"Štyridsaťsedem\n"</item>
+ <item msgid="8205413177993059967">"Štyridsaťosem\n"</item>
+ <item msgid="6607867415142171302">"Štyridsaťdeväť\n"</item>
+ <item msgid="8358850748472089162">"Päťdesiať"</item>
+ <item msgid="3551313125255080234">"Päťdesiatjeden\n"</item>
+ <item msgid="1559678130725716542">"Päťdesiatdva\n"</item>
+ <item msgid="431441994725492377">"Päťdesiattri\n"</item>
+ <item msgid="6345774640539623024">"Päťdesiatštyri\n"</item>
+ <item msgid="8018192990793931120">"Päťdesiaťpäť\n"</item>
+ <item msgid="6187650843754604534">"Päťdesiatšesť\n"</item>
+ <item msgid="8727240174015993259">"Päťdesiatsedem\n"</item>
+ <item msgid="848339003778952950">"Päťdesiatosem\n"</item>
+ <item msgid="5798985802835423618">"Päťdesiatdeväť\n"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index cabca2373bb6..6fc5c3328324 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985"></item>
- <item msgid="8837126587669001578">"Ena"</item>
- <item msgid="4294343372940455660">"Dve"</item>
- <item msgid="7129166637707421536">"Tri"</item>
- <item msgid="7579404865008788673">"Štiri"</item>
- <item msgid="3873924689207380586">"Pet"</item>
- <item msgid="4849565597850069377">"Šest"</item>
- <item msgid="4404219424523572364">"Sedem"</item>
- <item msgid="8740481214764087329">"Osem"</item>
- <item msgid="1713216865806811237">"Devet"</item>
+ <item msgid="2091812961809760681">"ena"</item>
+ <item msgid="1496435384877290709">"dve"</item>
+ <item msgid="881846472976674129">"tri"</item>
+ <item msgid="2784477043911540584">"štiri"</item>
+ <item msgid="1610928853656700614">"pet"</item>
+ <item msgid="2317806244043886658">"šest"</item>
+ <item msgid="3318687539120971327">"sedem"</item>
+ <item msgid="5701600693712102348">"osem"</item>
+ <item msgid="3247381605947372495">"devet"</item>
<item msgid="3508406095411245038">"Deset"</item>
<item msgid="7161996337755311711">"Enajst"</item>
<item msgid="4044549963329624197">"Dvanajst"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml
index c8bd240ddfc1..3bd33bd232c0 100644
--- a/packages/SystemUI/res-keyguard/values-sq/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml
@@ -34,10 +34,10 @@
<string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Kodi PIN është i pasaktë."</string>
<string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Karta e pavlefshme."</string>
<string name="keyguard_charged" msgid="3316115607283493413">"I ngarkuar plotësisht"</string>
- <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po ngarkohet me valë"</string>
- <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po ngarkohet"</string>
- <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po ngarkohet me shpejtësi"</string>
- <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po ngarkohet ngadalë"</string>
+ <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me valë"</string>
+ <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet"</string>
+ <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me shpejtësi"</string>
+ <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet ngadalë"</string>
<string name="keyguard_low_battery" msgid="9218432555787624490">"Lidh ngarkuesin."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8566679946700751371">"Shtyp \"Meny\" për të shkyçur."</string>
<string name="keyguard_network_locked_message" msgid="6743537524631420759">"Rrjeti është i kyçur"</string>
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Fiks"</item>
- <item msgid="8837126587669001578">"E një"</item>
- <item msgid="4294343372940455660">"E dy"</item>
- <item msgid="7129166637707421536">"E tre"</item>
- <item msgid="7579404865008788673">"E katër"</item>
- <item msgid="3873924689207380586">"E pesë"</item>
- <item msgid="4849565597850069377">"E gjashtë"</item>
- <item msgid="4404219424523572364">"E shtatë"</item>
- <item msgid="8740481214764087329">"E tetë"</item>
- <item msgid="1713216865806811237">"E nëntë"</item>
+ <item msgid="2091812961809760681">"e një"</item>
+ <item msgid="1496435384877290709">"e dy"</item>
+ <item msgid="881846472976674129">"e tre"</item>
+ <item msgid="2784477043911540584">"e katër"</item>
+ <item msgid="1610928853656700614">"e pesë"</item>
+ <item msgid="2317806244043886658">"e gjashtë"</item>
+ <item msgid="3318687539120971327">"e shtatë"</item>
+ <item msgid="5701600693712102348">"e tetë"</item>
+ <item msgid="3247381605947372495">"e nëntë"</item>
<item msgid="3508406095411245038">"Dhjetë"</item>
<item msgid="7161996337755311711">"Njëmbëdhjetë"</item>
<item msgid="4044549963329624197">"Dymbëdhjetë"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml
index a81ae5e0cd0c..68b768ad4388 100644
--- a/packages/SystemUI/res-keyguard/values-sr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml
@@ -180,15 +180,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"сата(и)"</item>
- <item msgid="8837126587669001578">"један"</item>
- <item msgid="4294343372940455660">"два"</item>
- <item msgid="7129166637707421536">"три"</item>
- <item msgid="7579404865008788673">"четири"</item>
- <item msgid="3873924689207380586">"пет"</item>
- <item msgid="4849565597850069377">"шест"</item>
- <item msgid="4404219424523572364">"седам"</item>
- <item msgid="8740481214764087329">"осам"</item>
- <item msgid="1713216865806811237">"девет"</item>
+ <item msgid="2091812961809760681">"један"</item>
+ <item msgid="1496435384877290709">"два"</item>
+ <item msgid="881846472976674129">"три"</item>
+ <item msgid="2784477043911540584">"четири"</item>
+ <item msgid="1610928853656700614">"пет"</item>
+ <item msgid="2317806244043886658">"шест"</item>
+ <item msgid="3318687539120971327">"седам"</item>
+ <item msgid="5701600693712102348">"осам"</item>
+ <item msgid="3247381605947372495">"девет"</item>
<item msgid="3508406095411245038">"десет"</item>
<item msgid="7161996337755311711">"једанаест"</item>
<item msgid="4044549963329624197">"дванаест"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml
index aa62c32f3e03..62f1873fcf4a 100644
--- a/packages/SystemUI/res-keyguard/values-sv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Klockan"</item>
- <item msgid="8837126587669001578">"Noll ett"</item>
- <item msgid="4294343372940455660">"Noll två"</item>
- <item msgid="7129166637707421536">"Noll tre"</item>
- <item msgid="7579404865008788673">"Noll fyra"</item>
- <item msgid="3873924689207380586">"Noll fem"</item>
- <item msgid="4849565597850069377">"Noll sex"</item>
- <item msgid="4404219424523572364">"Noll sju"</item>
- <item msgid="8740481214764087329">"Noll åtta"</item>
- <item msgid="1713216865806811237">"Noll nio"</item>
+ <item msgid="2091812961809760681">"Noll ett"</item>
+ <item msgid="1496435384877290709">"Noll två"</item>
+ <item msgid="881846472976674129">"Noll tre"</item>
+ <item msgid="2784477043911540584">"Noll fyra"</item>
+ <item msgid="1610928853656700614">"Noll fem"</item>
+ <item msgid="2317806244043886658">"Noll sex"</item>
+ <item msgid="3318687539120971327">"Noll sju"</item>
+ <item msgid="5701600693712102348">"Noll åtta"</item>
+ <item msgid="3247381605947372495">"Noll nio"</item>
<item msgid="3508406095411245038">"Tio"</item>
<item msgid="7161996337755311711">"Elva"</item>
<item msgid="4044549963329624197">"Tolv"</item>
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index 9dbe74594686..76b40b75736d 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Kamili"</item>
- <item msgid="8837126587669001578">"Na Dakika Moja"</item>
- <item msgid="4294343372940455660">"Na Dakika Mbili"</item>
- <item msgid="7129166637707421536">"Na Dakika Tatu"</item>
- <item msgid="7579404865008788673">"Na Dakika Nne"</item>
- <item msgid="3873924689207380586">"Na Dakika Tano"</item>
- <item msgid="4849565597850069377">"Na Dakika Sita"</item>
- <item msgid="4404219424523572364">"Na Dakika Saba"</item>
- <item msgid="8740481214764087329">"Nane"</item>
- <item msgid="1713216865806811237">"Na Dakika Tisa"</item>
+ <item msgid="2091812961809760681">"Na Dakika Moja"</item>
+ <item msgid="1496435384877290709">"Na Dakika Mbili"</item>
+ <item msgid="881846472976674129">"Na Dakika Tatu"</item>
+ <item msgid="2784477043911540584">"Na Dakika Nne"</item>
+ <item msgid="1610928853656700614">"Na Dakika Tano"</item>
+ <item msgid="2317806244043886658">"Na Dakika Sita"</item>
+ <item msgid="3318687539120971327">"Na Dakika Saba"</item>
+ <item msgid="5701600693712102348">"Na Dakika Nane"</item>
+ <item msgid="3247381605947372495">"Na Dakika Tisa"</item>
<item msgid="3508406095411245038">"Kumi"</item>
<item msgid="7161996337755311711">"Kumi na Moja"</item>
<item msgid="4044549963329624197">"Kumi na Mbili"</item>
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index f11d45f46975..4c628670dc8b 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"అవుతుంది"</item>
- <item msgid="8837126587669001578">"ఒకటి అవుతుంది"</item>
- <item msgid="4294343372940455660">"రెండు అవుతుంది"</item>
- <item msgid="7129166637707421536">"మూడు అవుతుంది"</item>
- <item msgid="7579404865008788673">"నాలుగు అవుతుంది"</item>
- <item msgid="3873924689207380586">"ఐదు అవుతుంది"</item>
- <item msgid="4849565597850069377">"ఆరు అవుతుంది"</item>
- <item msgid="4404219424523572364">"ఏడు అవుతుంది"</item>
- <item msgid="8740481214764087329">"ఎనిమిది అవుతుంది"</item>
- <item msgid="1713216865806811237">"తొమ్మిది అవుతుంది"</item>
+ <item msgid="2091812961809760681">"ఒక నిమిషం"</item>
+ <item msgid="1496435384877290709">"రెండు నిమిషాలు"</item>
+ <item msgid="881846472976674129">"మూడు నిమిషాలు"</item>
+ <item msgid="2784477043911540584">"నాలుగు నిమిషాలు"</item>
+ <item msgid="1610928853656700614">"ఐదు నిమిషాలు"</item>
+ <item msgid="2317806244043886658">"ఆరు నిమిషాలు"</item>
+ <item msgid="3318687539120971327">"ఏడు నిమిషాలు"</item>
+ <item msgid="5701600693712102348">"ఎనిమిది నిమిషాలు"</item>
+ <item msgid="3247381605947372495">"తొమ్మిది నిమిషాలు"</item>
<item msgid="3508406095411245038">"పది"</item>
<item msgid="7161996337755311711">"పదకొండు"</item>
<item msgid="4044549963329624197">"పన్నెండు"</item>
diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml
index 8543951dd176..bfceb15099ba 100644
--- a/packages/SystemUI/res-keyguard/values-th/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-th/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"นาฬิกา"</item>
- <item msgid="8837126587669001578">"ศูนย์หนึ่ง"</item>
- <item msgid="4294343372940455660">"ศูนย์สอง"</item>
- <item msgid="7129166637707421536">"ศูนย์สาม"</item>
- <item msgid="7579404865008788673">"ศูนย์สี่"</item>
- <item msgid="3873924689207380586">"ศูนย์ห้า"</item>
- <item msgid="4849565597850069377">"ศูนย์หก"</item>
- <item msgid="4404219424523572364">"ศูนย์เจ็ด"</item>
- <item msgid="8740481214764087329">"ศูนย์แปด"</item>
- <item msgid="1713216865806811237">"ศูนย์เก้า"</item>
+ <item msgid="2091812961809760681">"ศูนย์หนึ่ง"</item>
+ <item msgid="1496435384877290709">"ศูนย์สอง"</item>
+ <item msgid="881846472976674129">"ศูนย์สาม"</item>
+ <item msgid="2784477043911540584">"ศูนย์สี่"</item>
+ <item msgid="1610928853656700614">"ศูนย์ห้า"</item>
+ <item msgid="2317806244043886658">"ศูนย์หก"</item>
+ <item msgid="3318687539120971327">"ศูนย์เจ็ด"</item>
+ <item msgid="5701600693712102348">"ศูนย์แปด"</item>
+ <item msgid="3247381605947372495">"ศูนย์เก้า"</item>
<item msgid="3508406095411245038">"สิบ"</item>
<item msgid="7161996337755311711">"สิบเอ็ด"</item>
<item msgid="4044549963329624197">"สิบสอง"</item>
diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml
index e26eaf8205e0..2e0f218f90c1 100644
--- a/packages/SystemUI/res-keyguard/values-tl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"O’Clock"</item>
- <item msgid="8837126587669001578">"O’One"</item>
- <item msgid="4294343372940455660">"O’Two"</item>
- <item msgid="7129166637707421536">"O’Three"</item>
- <item msgid="7579404865008788673">"O’Four"</item>
- <item msgid="3873924689207380586">"O’Five"</item>
- <item msgid="4849565597850069377">"O’Six"</item>
- <item msgid="4404219424523572364">"O’Seven"</item>
- <item msgid="8740481214764087329">"O’Eight"</item>
- <item msgid="1713216865806811237">"O’Nine"</item>
+ <item msgid="2091812961809760681">"Oh One"</item>
+ <item msgid="1496435384877290709">"Oh Two"</item>
+ <item msgid="881846472976674129">"Oh Three"</item>
+ <item msgid="2784477043911540584">"Oh Four"</item>
+ <item msgid="1610928853656700614">"Oh Five"</item>
+ <item msgid="2317806244043886658">"Oh Six"</item>
+ <item msgid="3318687539120971327">"Oh Seven"</item>
+ <item msgid="5701600693712102348">"Oh Eight"</item>
+ <item msgid="3247381605947372495">"Oh Nine"</item>
<item msgid="3508406095411245038">"Ten"</item>
<item msgid="7161996337755311711">"Eleven"</item>
<item msgid="4044549963329624197">"Twelve"</item>
diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml
index 3c93f8e3c834..41a8a0cfe99c 100644
--- a/packages/SystemUI/res-keyguard/values-tr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Saat"</item>
- <item msgid="8837126587669001578">"Bir"</item>
- <item msgid="4294343372940455660">"İki"</item>
- <item msgid="7129166637707421536">"Üç"</item>
- <item msgid="7579404865008788673">"Dört"</item>
- <item msgid="3873924689207380586">"Beş"</item>
- <item msgid="4849565597850069377">"Altı"</item>
- <item msgid="4404219424523572364">"Yedi"</item>
- <item msgid="8740481214764087329">"Sekiz"</item>
- <item msgid="1713216865806811237">"Dokuz"</item>
+ <item msgid="2091812961809760681">"Bir"</item>
+ <item msgid="1496435384877290709">"İki"</item>
+ <item msgid="881846472976674129">"Üç"</item>
+ <item msgid="2784477043911540584">"Dört"</item>
+ <item msgid="1610928853656700614">"Beş"</item>
+ <item msgid="2317806244043886658">"Altı"</item>
+ <item msgid="3318687539120971327">"Yedi"</item>
+ <item msgid="5701600693712102348">"Sekiz"</item>
+ <item msgid="3247381605947372495">"Dokuz"</item>
<item msgid="3508406095411245038">"On"</item>
<item msgid="7161996337755311711">"On Bir"</item>
<item msgid="4044549963329624197">"On İki"</item>
diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml
index bbb9853e6e00..1bb1ae2199d4 100644
--- a/packages/SystemUI/res-keyguard/values-uk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml
@@ -189,15 +189,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985"></item>
- <item msgid="8837126587669001578">"одна"</item>
- <item msgid="4294343372940455660">"дві"</item>
- <item msgid="7129166637707421536">"три"</item>
- <item msgid="7579404865008788673">"чотири"</item>
- <item msgid="3873924689207380586">"п’ять"</item>
- <item msgid="4849565597850069377">"шість"</item>
- <item msgid="4404219424523572364">"сім"</item>
- <item msgid="8740481214764087329">"вісім"</item>
- <item msgid="1713216865806811237">"дев’ять"</item>
+ <item msgid="2091812961809760681">"нуль одна"</item>
+ <item msgid="1496435384877290709">"нуль дві"</item>
+ <item msgid="881846472976674129">"нуль три"</item>
+ <item msgid="2784477043911540584">"нуль чотири"</item>
+ <item msgid="1610928853656700614">"нуль п’ять"</item>
+ <item msgid="2317806244043886658">"нуль шість"</item>
+ <item msgid="3318687539120971327">"нуль сім"</item>
+ <item msgid="5701600693712102348">"нуль вісім"</item>
+ <item msgid="3247381605947372495">"нуль дев’ять"</item>
<item msgid="3508406095411245038">"десять"</item>
<item msgid="7161996337755311711">"одинадцять"</item>
<item msgid="4044549963329624197">"дванадцять"</item>
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index 2f90975a7a3d..a27e8292aa39 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -169,66 +169,13 @@
<item msgid="2233497913571137419">"دس"</item>
<item msgid="5621554266768657830">"گیارہ"</item>
</string-array>
- <string-array name="type_clock_minutes">
- <item msgid="8322049385467207985">"0 بجے"</item>
- <item msgid="8837126587669001578">"ایک منٹ"</item>
- <item msgid="4294343372940455660">"دو منٹ"</item>
- <item msgid="7129166637707421536">"تین منٹ"</item>
- <item msgid="7579404865008788673">"چار منٹ"</item>
- <item msgid="3873924689207380586">"پانچ منٹ"</item>
- <item msgid="4849565597850069377">"چھ منٹ"</item>
- <item msgid="4404219424523572364">"سات منٹ"</item>
- <item msgid="8740481214764087329">"آٹھ منٹ"</item>
- <item msgid="1713216865806811237">"نو منٹ"</item>
- <item msgid="3508406095411245038">"دس"</item>
- <item msgid="7161996337755311711">"گیارہ"</item>
- <item msgid="4044549963329624197">"بارہ"</item>
- <item msgid="333373157917379088">"تیرہ"</item>
- <item msgid="2631202907124819385">"چودہ"</item>
- <item msgid="6472396076858033453">"پندرہ"</item>
- <item msgid="8656981856181581643">"سولہ"</item>
- <item msgid="7289026608562030619">"سترہ"</item>
- <item msgid="3881477602692646573">"اٹھارہ"</item>
- <item msgid="3358129827772984226">"انّیس"</item>
- <item msgid="3308575407402865807">"بیس"</item>
- <item msgid="5346560955382229629">"اکیس\n"</item>
- <item msgid="226750304761473436">"بائیس\n"</item>
- <item msgid="616811325336838734">"تیئیس\n"</item>
- <item msgid="616346116869053440">"چوبیس\n"</item>
- <item msgid="4642996410384042830">"پچیس\n"</item>
- <item msgid="7506092849993571465">"چھبیس\n"</item>
- <item msgid="1915078191101042031">"ستائیں\n"</item>
- <item msgid="4292378641900520252">"اٹھائیس\n"</item>
- <item msgid="5339513901773103696">"انتیس\n"</item>
- <item msgid="3574673250891657607">"تیس"</item>
- <item msgid="5796923836589110940">"اکتیس\n"</item>
- <item msgid="5859323597571702052">"بتّیس\n"</item>
- <item msgid="5133326723148876507">"تینتیس\n"</item>
- <item msgid="2693999494655663096">"چونتیس\n"</item>
- <item msgid="3316754944962836197">"پینتیس\n"</item>
- <item msgid="816891008836796723">"چھتیس\n"</item>
- <item msgid="9158890488666520078">"سینتیس\n"</item>
- <item msgid="1894769703213894011">"اڑتیس\n"</item>
- <item msgid="5638820345598572399">"انچالیس\n"</item>
- <item msgid="8838304023017895439">"چالیس"</item>
- <item msgid="1834742948932559597">"اکتالیس\n"</item>
- <item msgid="6573707308847773944">"بیالیس\n"</item>
- <item msgid="2450149950652678001">"تینتالیس\n"</item>
- <item msgid="2874667401318178036">"چوالیس\n"</item>
- <item msgid="3391101532763048862">"پینتالیس\n"</item>
- <item msgid="1671489330863254362">"چھیالیس\n"</item>
- <item msgid="5916017359554531038">"سینتالیس\n"</item>
- <item msgid="8205413177993059967">"اڑتالیس\n"</item>
- <item msgid="6607867415142171302">"انچاس\n"</item>
- <item msgid="8358850748472089162">"پچاس"</item>
- <item msgid="3551313125255080234">"اکیاون\n"</item>
- <item msgid="1559678130725716542">"باون\n"</item>
- <item msgid="431441994725492377">"تریپن\n"</item>
- <item msgid="6345774640539623024">"چوّن\n"</item>
- <item msgid="8018192990793931120">"پچپن\n"</item>
- <item msgid="6187650843754604534">"چھپّن\n"</item>
- <item msgid="8727240174015993259">"ستاون\n"</item>
- <item msgid="848339003778952950">"اٹھاون\n"</item>
- <item msgid="5798985802835423618">"انسٹھ\n"</item>
- </string-array>
+ <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
+ <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
+ <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
+ <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
+ <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
+ <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
+ <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
+ <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
+ <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml
index e09837ad2e0b..0f1fd83c41d3 100644
--- a/packages/SystemUI/res-keyguard/values-uz/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml
@@ -173,15 +173,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Soat"</item>
- <item msgid="8837126587669001578">"Nol bir"</item>
- <item msgid="4294343372940455660">"Nol ikki"</item>
- <item msgid="7129166637707421536">"Nol uch"</item>
- <item msgid="7579404865008788673">"Nol toʻrt"</item>
- <item msgid="3873924689207380586">"Nol besh"</item>
- <item msgid="4849565597850069377">"Nol olti"</item>
- <item msgid="4404219424523572364">"Nol yetti"</item>
- <item msgid="8740481214764087329">"Nol sakkiz"</item>
- <item msgid="1713216865806811237">"Nol toʻqqiz"</item>
+ <item msgid="2091812961809760681">"Bir"</item>
+ <item msgid="1496435384877290709">"Ikki"</item>
+ <item msgid="881846472976674129">"Uch"</item>
+ <item msgid="2784477043911540584">"Toʻrt"</item>
+ <item msgid="1610928853656700614">"Besh"</item>
+ <item msgid="2317806244043886658">"Olti"</item>
+ <item msgid="3318687539120971327">"Yetti"</item>
+ <item msgid="5701600693712102348">"Sakkiz"</item>
+ <item msgid="3247381605947372495">"Toʻqqiz"</item>
<item msgid="3508406095411245038">"Oʻn"</item>
<item msgid="7161996337755311711">"Oʻn bir"</item>
<item msgid="4044549963329624197">"Oʻn ikki"</item>
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index 6498cf15b236..cc740652a678 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -169,13 +169,66 @@
<item msgid="2233497913571137419">"Mười"</item>
<item msgid="5621554266768657830">"Mười một"</item>
</string-array>
- <!-- no translation found for type_clock_minutes:1 (2091812961809760681) -->
- <!-- no translation found for type_clock_minutes:2 (1496435384877290709) -->
- <!-- no translation found for type_clock_minutes:3 (881846472976674129) -->
- <!-- no translation found for type_clock_minutes:4 (2784477043911540584) -->
- <!-- no translation found for type_clock_minutes:5 (1610928853656700614) -->
- <!-- no translation found for type_clock_minutes:6 (2317806244043886658) -->
- <!-- no translation found for type_clock_minutes:7 (3318687539120971327) -->
- <!-- no translation found for type_clock_minutes:8 (5701600693712102348) -->
- <!-- no translation found for type_clock_minutes:9 (3247381605947372495) -->
+ <string-array name="type_clock_minutes">
+ <item msgid="8322049385467207985">"Giờ"</item>
+ <item msgid="2091812961809760681">"Không một"</item>
+ <item msgid="1496435384877290709">"Không hai"</item>
+ <item msgid="881846472976674129">"Không ba"</item>
+ <item msgid="2784477043911540584">"Không bốn"</item>
+ <item msgid="1610928853656700614">"Không năm"</item>
+ <item msgid="2317806244043886658">"Không sáu"</item>
+ <item msgid="3318687539120971327">"Không bảy"</item>
+ <item msgid="5701600693712102348">"Tám"</item>
+ <item msgid="3247381605947372495">"Không chín"</item>
+ <item msgid="3508406095411245038">"Mười"</item>
+ <item msgid="7161996337755311711">"Mười một"</item>
+ <item msgid="4044549963329624197">"Mười hai"</item>
+ <item msgid="333373157917379088">"Mười ba"</item>
+ <item msgid="2631202907124819385">"Mười bốn"</item>
+ <item msgid="6472396076858033453">"Mười lăm"</item>
+ <item msgid="8656981856181581643">"Mười sáu"</item>
+ <item msgid="7289026608562030619">"Mười bảy"</item>
+ <item msgid="3881477602692646573">"Mười tám"</item>
+ <item msgid="3358129827772984226">"Mười chín"</item>
+ <item msgid="3308575407402865807">"Hai mươi"</item>
+ <item msgid="5346560955382229629">"Hai mươi\nmốt"</item>
+ <item msgid="226750304761473436">"Hai mươi\nhai"</item>
+ <item msgid="616811325336838734">"Hai mươi\nba"</item>
+ <item msgid="616346116869053440">"Hai mươi\nbốn"</item>
+ <item msgid="4642996410384042830">"Hai mươi\nlăm"</item>
+ <item msgid="7506092849993571465">"Hai mươi\nsáu"</item>
+ <item msgid="1915078191101042031">"Hai mươi\nbảy"</item>
+ <item msgid="4292378641900520252">"Hai mươi\ntám"</item>
+ <item msgid="5339513901773103696">"Hai mươi\nchín"</item>
+ <item msgid="3574673250891657607">"Ba mươi"</item>
+ <item msgid="5796923836589110940">"Ba mươi\nmốt"</item>
+ <item msgid="5859323597571702052">"Ba mươi\nhai"</item>
+ <item msgid="5133326723148876507">"Ba mươi\nba"</item>
+ <item msgid="2693999494655663096">"Ba mươi\ntư"</item>
+ <item msgid="3316754944962836197">"Ba mươi\nlăm"</item>
+ <item msgid="816891008836796723">"Ba mươi\nsáu"</item>
+ <item msgid="9158890488666520078">"Ba mươi\nbảy"</item>
+ <item msgid="1894769703213894011">"Ba mươi\ntám"</item>
+ <item msgid="5638820345598572399">"Ba mươi\nchín"</item>
+ <item msgid="8838304023017895439">"Bốn mươi"</item>
+ <item msgid="1834742948932559597">"Bốn mươi\nmốt"</item>
+ <item msgid="6573707308847773944">"Bốn mươi\nhai"</item>
+ <item msgid="2450149950652678001">"Bốn mươi\nba"</item>
+ <item msgid="2874667401318178036">"Bốn mươi\nbốn"</item>
+ <item msgid="3391101532763048862">"Bốn mươi\nlăm"</item>
+ <item msgid="1671489330863254362">"Bốn mươi\nsáu"</item>
+ <item msgid="5916017359554531038">"Bốn mươi\nbảy"</item>
+ <item msgid="8205413177993059967">"Bốn mươi\ntám"</item>
+ <item msgid="6607867415142171302">"Bốn mươi\nchín"</item>
+ <item msgid="8358850748472089162">"Năm mươi"</item>
+ <item msgid="3551313125255080234">"Năm mươi\nmốt"</item>
+ <item msgid="1559678130725716542">"Năm mươi\nhai"</item>
+ <item msgid="431441994725492377">"Năm mươi\nba"</item>
+ <item msgid="6345774640539623024">"Năm mươi\nbốn"</item>
+ <item msgid="8018192990793931120">"Năm mươi\nlăm"</item>
+ <item msgid="6187650843754604534">"Năm mươi\nsáu"</item>
+ <item msgid="8727240174015993259">"Năm mươi\nbảy"</item>
+ <item msgid="848339003778952950">"Năm mươi\ntám"</item>
+ <item msgid="5798985802835423618">"Năm mươi\nchín"</item>
+ </string-array>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
index e17906035d7b..93d5a9d619d1 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"点整"</item>
- <item msgid="8837126587669001578">"一点"</item>
- <item msgid="4294343372940455660">"两点"</item>
- <item msgid="7129166637707421536">"三点"</item>
- <item msgid="7579404865008788673">"四点"</item>
- <item msgid="3873924689207380586">"五点"</item>
- <item msgid="4849565597850069377">"六点"</item>
- <item msgid="4404219424523572364">"七点"</item>
- <item msgid="8740481214764087329">"八点"</item>
- <item msgid="1713216865806811237">"九点"</item>
+ <item msgid="2091812961809760681">"零一"</item>
+ <item msgid="1496435384877290709">"零二"</item>
+ <item msgid="881846472976674129">"零三"</item>
+ <item msgid="2784477043911540584">"零四"</item>
+ <item msgid="1610928853656700614">"零五"</item>
+ <item msgid="2317806244043886658">"零六"</item>
+ <item msgid="3318687539120971327">"零七"</item>
+ <item msgid="5701600693712102348">"零八"</item>
+ <item msgid="3247381605947372495">"零九"</item>
<item msgid="3508406095411245038">"十"</item>
<item msgid="7161996337755311711">"十一"</item>
<item msgid="4044549963329624197">"十二"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
index d68ceb4e0e0c..cee833dbd4bc 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"零九"</item>
- <item msgid="8837126587669001578">"零一"</item>
- <item msgid="4294343372940455660">"零二"</item>
- <item msgid="7129166637707421536">"零三"</item>
- <item msgid="7579404865008788673">"零四"</item>
- <item msgid="3873924689207380586">"零五"</item>
- <item msgid="4849565597850069377">"零六"</item>
- <item msgid="4404219424523572364">"零七"</item>
- <item msgid="8740481214764087329">"零八"</item>
- <item msgid="1713216865806811237">"零九"</item>
+ <item msgid="2091812961809760681">"零一分"</item>
+ <item msgid="1496435384877290709">"零二分"</item>
+ <item msgid="881846472976674129">"零三分"</item>
+ <item msgid="2784477043911540584">"零四分"</item>
+ <item msgid="1610928853656700614">"零五分"</item>
+ <item msgid="2317806244043886658">"零六分"</item>
+ <item msgid="3318687539120971327">"零七分"</item>
+ <item msgid="5701600693712102348">"零八分"</item>
+ <item msgid="3247381605947372495">"零九分"</item>
<item msgid="3508406095411245038">"十"</item>
<item msgid="7161996337755311711">"十一"</item>
<item msgid="4044549963329624197">"十二"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
index 4ed6f145f84d..dc6e49c464dc 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"點整"</item>
- <item msgid="8837126587669001578">"零一"</item>
- <item msgid="4294343372940455660">"零二"</item>
- <item msgid="7129166637707421536">"零三"</item>
- <item msgid="7579404865008788673">"零四"</item>
- <item msgid="3873924689207380586">"零五"</item>
- <item msgid="4849565597850069377">"零六"</item>
- <item msgid="4404219424523572364">"零七"</item>
- <item msgid="8740481214764087329">"零八"</item>
- <item msgid="1713216865806811237">"零九"</item>
+ <item msgid="2091812961809760681">"零一"</item>
+ <item msgid="1496435384877290709">"零二"</item>
+ <item msgid="881846472976674129">"零三"</item>
+ <item msgid="2784477043911540584">"零四"</item>
+ <item msgid="1610928853656700614">"零五"</item>
+ <item msgid="2317806244043886658">"零六"</item>
+ <item msgid="3318687539120971327">"零七"</item>
+ <item msgid="5701600693712102348">"零八"</item>
+ <item msgid="3247381605947372495">"零九"</item>
<item msgid="3508406095411245038">"十"</item>
<item msgid="7161996337755311711">"十一"</item>
<item msgid="4044549963329624197">"十二"</item>
diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml
index d0145c84876c..f9de4366c389 100644
--- a/packages/SystemUI/res-keyguard/values-zu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml
@@ -171,15 +171,15 @@
</string-array>
<string-array name="type_clock_minutes">
<item msgid="8322049385467207985">"Ezimpondweni"</item>
- <item msgid="8837126587669001578">"O’Okukodwa"</item>
- <item msgid="4294343372940455660">"O’Okubili"</item>
- <item msgid="7129166637707421536">"O’Kuthathu"</item>
- <item msgid="7579404865008788673">"O’Okune"</item>
- <item msgid="3873924689207380586">"O’Isihlanu"</item>
- <item msgid="4849565597850069377">"O’Isithupha"</item>
- <item msgid="4404219424523572364">"O’Isikhombisa"</item>
- <item msgid="8740481214764087329">"O’Isishiyagalombili"</item>
- <item msgid="1713216865806811237">"O’Isishiyagalombili"</item>
+ <item msgid="2091812961809760681">"Oh okukodwa"</item>
+ <item msgid="1496435384877290709">"Oh okubili"</item>
+ <item msgid="881846472976674129">"Oh okuthathu"</item>
+ <item msgid="2784477043911540584">"Oh isine"</item>
+ <item msgid="1610928853656700614">"Oh isihlanu"</item>
+ <item msgid="2317806244043886658">"Oh isithupha"</item>
+ <item msgid="3318687539120971327">"Oh isikhombisa"</item>
+ <item msgid="5701600693712102348">"Oh isishiyagalombili"</item>
+ <item msgid="3247381605947372495">"Oh isishiyagalolunye"</item>
<item msgid="3508406095411245038">"Ishumi"</item>
<item msgid="7161996337755311711">"Ishumi nanye"</item>
<item msgid="4044549963329624197">"Ishumi nambili"</item>
diff --git a/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml b/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml
new file mode 100644
index 000000000000..fe1bb265880c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml
@@ -0,0 +1,31 @@
+<!--
+ Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:viewportWidth="22"
+ android:viewportHeight="17"
+ android:width="22dp"
+ android:height="17dp">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M1.22,8.49l0.43-4.96h4.33v1.17H2.67L2.44,7.41c0.41-0.29,0.85-0.43,1.33-0.43c0.77,0,1.38,0.3,1.83,0.9 s0.66,1.41,0.66,2.43c0,1.03-0.24,1.84-0.72,2.43s-1.14,0.88-1.98,0.88c-0.75,0-1.36-0.24-1.83-0.73s-0.74-1.16-0.81-2.02h1.13 c0.07,0.57,0.23,1,0.49,1.29c0.26,0.29,0.59,0.43,1.01,0.43c0.47,0,0.84-0.2,1.1-0.61c0.26-0.41,0.4-0.96,0.4-1.65 c0-0.65-0.14-1.18-0.43-1.59S3.96,8.11,3.47,8.11c-0.4,0-0.72,0.1-0.96,0.31L2.19,8.75L1.22,8.49z" />
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M14.14,12.24l-0.22,0.27c-0.63,0.73-1.55,1.1-2.76,1.1c-1.08,0-1.92-0.36-2.53-1.07c-0.61-0.71-0.93-1.72-0.94-3.02V7.56 c0-1.39,0.28-2.44,0.84-3.13c0.56-0.7,1.39-1.04,2.51-1.04c0.95,0,1.69,0.26,2.23,0.79c0.54,0.53,0.83,1.28,0.89,2.26h-1.25 c-0.05-0.62-0.22-1.1-0.52-1.45c-0.29-0.35-0.74-0.52-1.34-0.52c-0.72,0-1.24,0.23-1.57,0.7C9.14,5.63,8.96,6.37,8.95,7.4v2.03 c0,1,0.19,1.77,0.57,2.31c0.38,0.54,0.93,0.8,1.65,0.8c0.67,0,1.19-0.16,1.54-0.49l0.18-0.17V9.59h-1.82V8.52h3.07V12.24z" />
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:pathData="M20.96,8.88h-3.52v3.53h4.1v1.07h-5.35V3.52h5.28V4.6h-4.03V7.8h3.52V8.88z" />
+
+</vector>
diff --git a/packages/SystemUI/res/drawable/ic_sysbar_back.xml b/packages/SystemUI/res/drawable/ic_sysbar_back.xml
index 144884349c52..ee402622d52b 100644
--- a/packages/SystemUI/res/drawable/ic_sysbar_back.xml
+++ b/packages/SystemUI/res/drawable/ic_sysbar_back.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="28dp"
android:height="28dp"
+ android:autoMirrored="true"
android:viewportWidth="28"
android:viewportHeight="28">
diff --git a/packages/SystemUI/res/drawable/ic_sysbar_back_quick_step.xml b/packages/SystemUI/res/drawable/ic_sysbar_back_quick_step.xml
index 93b2f9c85bd1..442fafcebb84 100644
--- a/packages/SystemUI/res/drawable/ic_sysbar_back_quick_step.xml
+++ b/packages/SystemUI/res/drawable/ic_sysbar_back_quick_step.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="28dp"
android:height="28dp"
+ android:autoMirrored="true"
android:viewportWidth="28"
android:viewportHeight="28">
<path
diff --git a/packages/SystemUI/res/layout/quick_qs_status_icons.xml b/packages/SystemUI/res/layout/quick_qs_status_icons.xml
index dc31b70cd091..29f53a47a14e 100644
--- a/packages/SystemUI/res/layout/quick_qs_status_icons.xml
+++ b/packages/SystemUI/res/layout/quick_qs_status_icons.xml
@@ -37,7 +37,7 @@
android:layout_gravity="start"
android:gravity="center_vertical"
android:singleLine="true"
- android:textAppearance="@style/TextAppearance.QS.TileLabel"
+ android:textAppearance="@style/TextAppearance.QS.Status"
systemui:datePattern="@string/abbrev_wday_month_day_no_year_alarm" />
<com.android.systemui.statusbar.phone.StatusIconContainer
@@ -51,6 +51,7 @@
android:id="@+id/batteryRemainingIcon"
android:layout_height="match_parent"
android:layout_width="wrap_content"
+ systemui:textAppearance="@style/TextAppearance.QS.Status"
android:paddingEnd="2dp" />
</LinearLayout>
diff --git a/packages/SystemUI/res/layout/system_icons.xml b/packages/SystemUI/res/layout/system_icons.xml
index 9de46d889616..f3b72bf23757 100644
--- a/packages/SystemUI/res/layout/system_icons.xml
+++ b/packages/SystemUI/res/layout/system_icons.xml
@@ -15,6 +15,7 @@
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:systemui="http://schemas.android.com/apk/res-auto"
android:id="@+id/system_icons"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -32,5 +33,6 @@
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:clipToPadding="false"
- android:clipChildren="false" />
+ android:clipChildren="false"
+ systemui:textAppearance="@style/TextAppearance.StatusBar.Clock" />
</LinearLayout> \ No newline at end of file
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 006e804130dc..895192a03156 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Gebruik die laaier wat jy saam met jou toestel gekry het"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Instellings"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Skakel Batterybespaarder aan?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Meer oor Batterybespaarder"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Skakel aan"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Skakel Batterybespaarder aan"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Instellings"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Die gebruiker wat tans by hierdie toestel aangemeld is, kan nie USB-ontfouting aanskakel nie. Skakel na die primêre gebruiker toe oor om hierdie kenmerk te gebruik."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-poort is gedeaktiveer"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Die USB-poort is gedeaktiveer om jou toestel teen vloeistowwe en vuilgoed te beskerm en dit sal nie enige bykomstighede bespeur nie.\n\nJy sal ingelig word wanneer dit veilig is om weer die USB-poort te gebruik."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-poort is geaktiveer om laaiers en bykomstighede te bespeur"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Aktiveer USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoem om skerm te vul"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Strek om skerm te vul"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Skermkiekie"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Ontsluit sonder om jou vingerafdruk te gebruik"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skandeer tans gesig"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Stuur"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bestuur kennisgewings"</string>
<string name="unlock_label" msgid="8779712358041029439">"ontsluit"</string>
<string name="phone_label" msgid="2320074140205331708">"maak foon oop"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"maak stembystand oop"</string>
<string name="camera_label" msgid="7261107956054836961">"maak kamera oop"</string>
<string name="cancel" msgid="6442560571259935130">"Kanselleer"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Hulpboodskapgebied"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Bevestig"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Probeer weer"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Raak die vingerafdruksensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobiele data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobiele data is aan"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobiele data is af"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nie gestel om data te gebruik nie"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Af"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-verbinding."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Vliegtuigmodus."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Vliegtuigmodus aangeskakel."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"volkome stilte"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"net wekkers"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Moenie Steur Nie."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Moenie Steur Nie is afgeskakel."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Moenie Steur Nie is aangeskakel."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Moenie Steur Nie."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Moenie Steur Nie is afgeskakel."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Moenie Steur Nie is aangeskakel."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth af."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aan."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Liggingversoeke aktief"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Verwyder alle kennisgewings."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">nog <xliff:g id="NUMBER_1">%s</xliff:g> kennisgewings binne.</item>
<item quantity="one">nog <xliff:g id="NUMBER_0">%s</xliff:g> kennisgewing binne.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Kennisgewingsinstellings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-instellings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Die skerm sal outomaties draai."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Sluimerskerm"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Raak en hou ikone vir meer opsies"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Moenie Steur Nie"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Moenie Steur Nie"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Net prioriteit"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Net wekkers"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Volkome stilte"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Batterybespaarder is aan"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Verminder werkverrigting en agtergronddata"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Skakel Batterybespaarder af"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> sal begin om alles op jou skerm vas te vang, insluitend kennisgewings, wagwoorde, foto\'s, boodskappe en betaalinligting."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Laat <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> toe om jou skerm op te neem of uit te saai?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Terwyl dit opneem of uitsaai, kan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> enige sensitiewe inligting, soos oudio wat jy speel en jou wagwoorde, betaalinligting, foto\'s en boodskappe, vasvang."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Maak sensitiewe inligting tydens uitsending/opname openbaar"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Moenie weer wys nie"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Vee alles uit"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Bestuur"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Klankinstellings"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Vou uit"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Vou in"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Gee outomaties mediaopskrifte"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Maak wenk oor onderskrifte toe"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Wissel uitvoertoestel"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skerm is vasgespeld"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Dit hou dit in sig totdat jy dit ontspeld. Raak en hou Terug en Oorsig om dit te ontspeld."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Hierdie kennisgewings sal vir jou \'n klank speel"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Jy maak hierdie kennisgewings gewoonlik toe. \nMoet ons aanhou om hulle te wys?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Klaar"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Pas toe"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Hou aan om hierdie kennisgewings te wys?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stop kennisgewings"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Lewer stilweg"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokkeer"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Hou aan wys"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimeer"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Wys sonder klank"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Saggies"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Bly stil"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Waarsku my"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Steurend"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Hou aan waarsku"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Skakel kennisgewings af"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Hou aan om kennisgewings van hierdie program af te wys?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Geblokkeerde kennisgewings verskyn nie êrens of speel \'n klank nie. Jy kan kennisgewings in instellings deblokkeer."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Kennisgewings sonder klank verskyn in die kleurskakering, maar verskyn nie op die sluitskerm nie, wys nie \'n banier of speel \'n klank nie."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Hierdie kennisgewings sal \'n geluid maak en in die kennisgewinglaai, op die statusbalk en op die sluitskerm gewys word"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Hierdie kennisgewings kan nie afgeskakel word nie"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Hierdie program gebruik tans die kamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Hierdie program gebruik tans die mikrofoon."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Wys saam met volumekontroles"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Moenie Steur Nie"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Moenie Steur Nie"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Volumeknoppieskortpad"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Verlaat \'moenie steur nie\' met volume op"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Verlaat Moenie Steur Nie met volume harder"</string>
<string name="battery" msgid="7498329822413202973">"Battery"</string>
<string name="clock" msgid="7416090374234785905">"Horlosie"</string>
<string name="headset" msgid="4534219457597457353">"Kopstuk"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Gaan na blaaier"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobiele data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi is af"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth is af"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Moenie Steur Nie is af"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Instellings"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Het dit"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Stort SysUI-hoop"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> programme</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> program</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> gebruik tans jou <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Programme gebruik tans jou <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"In gebruik:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> programme gebruik jou <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> program gebruik jou <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Het dit"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privaatheidsinstellings"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Program wat jou <xliff:g id="TYPES_LIST">%s</xliff:g> gebruik"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Programme wat jou <xliff:g id="TYPES_LIST">%s</xliff:g> gebruik"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" en "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ligging"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofoon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> ander programme</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ander program</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors is af"</string>
<string name="device_services" msgid="1191212554435440592">"Toesteldienste"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Titelloos"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tik om hierdie program te herbegin en maak volskerm oop."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Maak <xliff:g id="APP_NAME">%1$s</xliff:g> oop"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Maak kennisgewinginstellings oop vir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Laat borrels van hierdie program af toe?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokkeer"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Instellings vir <xliff:g id="APP_NAME">%1$s</xliff:g>-borrels"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Laat borrels vanaf <xliff:g id="APP_NAME">%1$s</xliff:g> toe?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Weier"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Laat toe"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Vra my later"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> vanaf <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> van <xliff:g id="APP_NAME">%2$s</xliff:g> en <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> meer af"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Beweeg"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Beweeg na links bo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Beweeg na regs bo"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Beweeg na links onder"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Beweeg na regs onder"</string>
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 89dad9a051f1..b2e68c21ce43 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ከእርስዎ መሣሪያ ጋር የመጣውን ኃይል መሙያ ይጠቀሙ"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ቅንብሮች"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ባትሪ ቆጣቢ ይብራ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ስለ ባትሪ ቆጣቢ"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"አብራ"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ባትሪ ቆጣቢን አብራ"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ቅንብሮች"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"አሁን ወደዚህ መሣሪያ የገባው ተጠቃሚ የዩኤስቢ እርማትን ማብራት አይችልም። ይህን ባህሪ ለመጠቀም ወደ ዋና ተጠቃሚ ይቀይሩ።"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"የዩኤስቢ ወደብ ተሰናክሏል"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"መሣሪያዎን ከፈሳሽ ወይም ፍርስራሽ ለመጠበቅ ሲባል የዩኤስቢ ወደቡ ተሰናክሏል፣ እና ማናቸውም ተቀጥላዎችን አያገኝም።\n\nየዩኤስቢ ወደቡን እንደገና መጠቀም ችግር በማይኖረው ጊዜ ማሳወቂያ ይደርሰዎታል።"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ኃይል መሙያዎችን እና ተጨማሪ መሣሪያዎችን ፈልጎ ለማግኘት የነቃ የዩኤስቢ ወደብ"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"ዩኤስቢ አንቃ"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ማያ እንዲሞላ አጉላ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ማያ ለመሙለት ሳብ"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ቅጽበታዊ ገጽ እይታ"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"የጣት አሻራዎን ሳይጠቀሙ ይክፈቱ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"የቅኝት ፊት"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ላክ"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"ማሳወቂያዎችን ያቀናብሩ"</string>
<string name="unlock_label" msgid="8779712358041029439">"ክፈት"</string>
<string name="phone_label" msgid="2320074140205331708">"ስልክ ክፈት"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"የድምጽ ረዳትን ክፈት"</string>
<string name="camera_label" msgid="7261107956054836961">"ካሜራ ክፈት"</string>
<string name="cancel" msgid="6442560571259935130">"ይቅር"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"የእገዛ መልዕክት አካባቢ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"አረጋግጥ"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"እንደገና ይሞክሩ"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"የጣት አሻራ ዳሳሹን ይንኩ"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"የተንቀሳቃሽ ስልክ ውሂብ በርቷል"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"የተንቀሳቃሽ ስልክ ውሂብ ጠፍቷል"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ውሂብን ለመጠቀም አልተቀናበረም"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ጠፍቷል"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ብሉቱዝ ማያያዝ።"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"የአውሮፕላን ሁነታ።"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"የአውሮፕላን ሁነታ በርቷል።"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ሙሉ ለሙሉ ጸጥታ"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ማንቂያዎች ብቻ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"አትረብሽ።"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"አትረብሽ ጠፍቷል።"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"አትረብሽ በርቷል።"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"አትረብሽ።"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"አትረብሽ ጠፍቷል።"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"አትረብሽ በርቷል።"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ብሉቱዝ።"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ብሉቱዝ ጠፍቷል።"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ብሉቱዝ በርቷል።"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"የአካባቢ ጥያቄዎች ነቅተዋል"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ሁሉንም ማሳወቂያዎች አጽዳ"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>፣ +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">ከውስጥ ተጨማሪ <xliff:g id="NUMBER_1">%s</xliff:g> ማሳወቂያዎች።</item>
<item quantity="other">ከውስጥ ተጨማሪ <xliff:g id="NUMBER_1">%s</xliff:g> ማሳወቂያዎች።</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>፦ <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"የማሳወቂያ ቅንብሮች"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"የ<xliff:g id="APP_NAME">%s</xliff:g> ቅንብሮች"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ማያ ገጽ በራስ ሰር ይዞራል።"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"የማያ ገጽ ማቆያ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ኤተርኔት"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ተጨማሪ አማራጮችን ለማግኘት አዶዎችን ነክተው ይያዙ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"አትረብሽ"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"አትረብሽ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ቅድሚያ የሚሰጠው ብቻ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"ማንቂያዎች ብቻ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ሙሉ ለሙሉ ጸጥታ"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ባትሪ ቆጣቢ በርቷል"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"አፈጻጸምን እና የጀርባ ውሂብ ይቀንሳል"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ባትሪ ቆጣቢን አጥፋ"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ማሳወቂያዎችን፣ የይለፍ ቅቃላትን፣ ፎቶዎችን፣ መልዕክቶችን እና የክፍያ መረጃን ጨምሮ በማያ ገጽዎ ያለ ነገር ሁሉ መቅረጽ ይጀምራል።"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ማያ ገጽዎን እንዲቀርጽ ወይም cast እንዲያደርግ ይፈቀድለት?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"በመቅረጽ ላይ ወይም በመውሰድ ጊዜ፣ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> እርስዎ የሚያጫውቱትን እንደ ኦዲዮ ያለ እና የእርስዎ የይለፍ ቃላት፣ የክፍያ መረጃ፣ እና መልዕክቶች የመሳሰሉ አደጋን ሊያስከትሉ የሚችሉ ማናቸውንም መረጃዎች ሊያዝ ይችላል።"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"በመውሰድ/ ቀረጻ ላይ አደገኛ መረጃን አጋልጦ በመስጠት ላይ"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ዳግመኛ አታሳይ"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ሁሉንም አጽዳ"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"ያቀናብሩ"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"የድምፅ ቅንብሮች"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"አስፋ"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ሰብስብ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ራስሰር የሥዕል መግለጫ ጽሑፍን ሚዲያ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"የሥዕል መግለጫ ጽሑፎችን ጠቃሚ ምክር ዝጋ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"የውጽዓት መሣሪያን ይቀይሩ"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ማያ ገጽ ተሰክቷል"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"ይሄ እስኪነቅሉት ድረስ በእይታ ውስጥ ያስቀምጠዋል። ለመንቀል ተመለስ እና አጠቃላይ ዕይታ የሚለውን ይጫኑ እና ይያዙ።"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"እነዚህ ማሳወቂያዎች እርስዎን ያነቃሉ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"አብዛኛውን ጊዜ እነዚህን ማሳወቂያዎች ያሰናብቷቸዋል። \nመታየታቸው ይቀጥል??"</string>
<string name="inline_done_button" msgid="492513001558716452">"ተከናውኗል"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"ተግብር"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"እነዚህን ማሳወቂያዎች ማሳየት ይቀጥሉ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"ማሳወቂያዎችን አስቁም"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"በጸጥታ አድርስ"</string>
<string name="inline_block_button" msgid="8735843688021655065">"አግድ"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ማሳየትን ቀጥል"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"አሳንስ"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"በፀጥታ አሳይ"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"ረጋ ያለ"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ጸጥ እንዳለ ቆይ"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"አሳውቀኝ"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"አቋራጭ"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ማንቃቱን ቀጥል"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"ማሳወቂያዎችን አጥፋ"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ከዚህ መተግበሪያ ማሳወቂያዎችን ማሳየት ይቀጥል?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"የታገዱ ማሳወቂያዎች በየትም ቦታ አይታዩም ወይም ድምፅ አያጫውቱም። ማሳወቂያዎችን በቅንብሮችን እንዳይታገዱ ማድረግ ይችላሉ።"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ድምፅ አልባ ማሳወቂያዎች በጥላው ውስጥ ብቅ ይላል፣ ሆኖም ግን በተቆላፊ ማያ ገጽ ላይ አይታይም፣ ሰንደቅ አያቀርብም ወይም ድምፅ አያጫውትም።"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"እነዚህ ማሳወቂያዎች ድምፅ ይፈጥሩ እና በማሳወቂያ መሳቢያ፣ በሁናቴ አሞሌ እና በመቆለፊያ ማያ ገጽ ውስጥ ያሳያሉ"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"እነዚህ ማሳወቂያዎች ሊጠፉ አይችሉም"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"በ<xliff:g id="APP_NAME">%1$s</xliff:g> በኩል"</string>
<string name="appops_camera" msgid="8100147441602585776">"ይህ መተግበሪያ ካሜራውን እየተጠቀመ ነው።"</string>
<string name="appops_microphone" msgid="741508267659494555">"ይህ መተግበሪያ ማይክሮፎኑን እየተጠቀመ ነው።"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"የቀን መቁጠሪያ"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ከድምፅ መቆጣጠሪያዎች ጋር አሳይ"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"አትረብሽ"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"አትረብሽ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"የድምፅ አዝራሮች አቋራጭ"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ድምጽ ሲጨመር አትረብሽን ትተህ ውጣ"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ድምፅ ሲጨመር አትረብሽን ትተህ ውጣ"</string>
<string name="battery" msgid="7498329822413202973">"ባትሪ"</string>
<string name="clock" msgid="7416090374234785905">"ሰዓት"</string>
<string name="headset" msgid="4534219457597457353">"ጆሮ ማዳመጫ"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ወደ አሳሽ ሂድ"</string>
<string name="mobile_data" msgid="7094582042819250762">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g>— <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>፣ <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ጠፍቷል"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ብሉቱዝ ጠፍቷል"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"አትረብሽ ጠፍቷል"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ቅንብሮች"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ገባኝ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI Heap አራግፍ"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> መተግበሪያዎች</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> መተግበሪያዎች</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> የእርስዎን <xliff:g id="TYPES_LIST">%2$s</xliff:g> እየተጠቀመ ነው።"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"መተግበሪያዎች የእርስዎን <xliff:g id="TYPES_LIST">%s</xliff:g> እየተጠቀሙ ነው።"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"በጥቅም ላይ፦"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> መተግበሪያዎች የእርስዎን <xliff:g id="TYPE_5">%2$s</xliff:g> እየተጠቀሙ ነው።</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> መተግበሪያዎች የእርስዎን <xliff:g id="TYPE_5">%2$s</xliff:g> እየተጠቀሙ ነው።</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ገባኝ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"የግላዊነት ቅንብሮች"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"የእርስዎን <xliff:g id="TYPES_LIST">%s</xliff:g> የሚጠቀሙ መተግበሪያዎች"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"የእርስዎን <xliff:g id="TYPES_LIST">%s</xliff:g> የሚጠቀሙ መተግበሪያዎች"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"፣ "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" እና "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ካሜራ"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"አካባቢ"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"ማይክሮፎን"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> ሌሎች መተግበሪያዎች</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> ሌሎች መተግበሪያዎች</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ዳሳሾች ጠፍተዋል"</string>
<string name="device_services" msgid="1191212554435440592">"የመሣሪያ አገልግሎቶች"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ርዕስ የለም"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ይህን መተግበሪያ እንደገና ለማስጀመር መታ ያድርጉ እና ወደ ሙሉ ማያ ገጽ ይሂዱ።"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ክፈት"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"የማስታወቂያ ቅንብሮች ለ <xliff:g id="APP_NAME">%1$s</xliff:g> ክፈት"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"አረፋዎች ከዚህ መተግበሪያ ይፈቀዱ?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"አግድ"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"ቅንብሮች ለ <xliff:g id="APP_NAME">%1$s</xliff:g> አረፋዎች"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"ከ <xliff:g id="APP_NAME">%1$s</xliff:g> አረፋዎች ይፈቀዱ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ከልክል"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ፍቀድ"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"በኋላ ጠይቀኝ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ከ<xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ከ <xliff:g id="APP_NAME">%2$s</xliff:g> እና <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ተጨማሪ"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"አንቀሳቅስ"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ወደ ላይኛው ግራ አንቀሳቅስ"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ወደ ላይኛው ቀኝ አንቀሳቅስ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"የግርጌውን ግራ አንቀሳቅስ"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ታችኛውን ቀኝ ያንቀሳቅሱ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 84eb9713bee5..cda4defa1eba 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"استخدم الشاحن المرفق بجهازك."</string>
<string name="battery_low_why" msgid="4553600287639198111">"الإعدادات"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"هل تريد تفعيل ميزة توفير شحن البطارية؟"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"لمحة حول ميزة \"توفير شحن البطارية\""</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"تشغيل"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"هل تريد تفعيل ميزة توفير شحن البطارية؟"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"الإعدادات"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"‏لا يمكن للمستخدم الذي يسجّل دخوله حاليًا إلى هذا الجهاز تشغيل تصحيح أخطاء USB. لاستخدام هذه الميزة، يمكنك التبديل إلى المستخدم الأساسي."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"‏تمّ إيقاف منفذ USB"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"‏لحماية جهازك من السوائل أو الشوائب، سيتمّ إيقاف منفذ USB الذي لن يتمكَّن من اكتشاف أيّ ملحقات.\n\nوسيتمّ إعلامك عندما يتوفّر الأمان لاستخدام منفذ USB مرّةً أخرى."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"‏تم تفعيل منفذ USB لاكتشاف أجهزة الشحن والملحقات."</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"‏تفعيل USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"تكبير/تصغير لملء الشاشة"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"توسيع بملء الشاشة"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"لقطة شاشة"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"إلغاء القفل دون استخدام بصمة إصبعك"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"مسح الوجه"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"إرسال"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"إدارة الإشعارات"</string>
<string name="unlock_label" msgid="8779712358041029439">"إلغاء القفل"</string>
<string name="phone_label" msgid="2320074140205331708">"فتح الهاتف"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"فتح المساعد الصوتي"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"بيانات الجوّال"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"تشغيل بيانات الجوال"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"تم إيقاف بيانات الجوال"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"لم يتم الضبط على استخدام البيانات"</string>
<string name="cell_data_off" msgid="1051264981229902873">"إيقاف"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ربط البلوتوث."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"وضع الطائرة."</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"تم تشغيل وضع الطائرة."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"كتم الصوت تمامًا"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"المنبِّهات فقط"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"عدم الإزعاج"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"تم إيقاف \"عدم الإزعاج\"."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"تم تفعيل \"عدم الإزعاج\"."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"البلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"إيقاف البلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"تشغيل البلوتوث."</string>
@@ -283,6 +281,7 @@
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> إشعار آخر بداخل المجموعة.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> إشعار آخر بداخل المجموعة.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"إعدادات الإشعارات"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"إعدادات <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"سيتم تدوير الشاشة تلقائيًا."</string>
@@ -295,8 +294,7 @@
<string name="start_dreams" msgid="5640361424498338327">"شاشة التوقف"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"انقر مع الاستمرار على الرموز للحصول على المزيد من الخيارات."</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"عدم الإزعاج"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"الأولوية فقط"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"التنبيهات فقط"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"كتم الصوت تمامًا"</string>
@@ -455,10 +453,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"تم تفعيل ميزة توفير شحن البطارية"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"لخفض مستوى الأداء وبيانات الخلفية"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"إيقاف ميزة توفير شحن البطارية"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"أثناء التسجيل أو الإرسال، يمكن للتطبيق <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> تسجيل أي معلومات حسّاسة، مثل الصوت الذي تشغّله وكلمات المرور ومعلومات الدفع والصور والرسائل."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"عرض معلومات حسّاسة أثناء الإرسال/التسجيل"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"عدم الإظهار مرة أخرى"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"محو الكل"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"إدارة"</string>
@@ -533,10 +529,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"إعدادات الصوت"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"توسيع"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"تصغير"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ترجمة تلقائية للوسائط"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"إغلاق نصيحة الشرح"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"تبديل جهاز الاستماع"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"تم تثبيت الشاشة"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"يؤدي هذا إلى استمرار عرض الشاشة المُختارة إلى أن تتم إزالة تثبيتها. المس مع الاستمرار الزرين \"رجوع\" و\"نظرة عامة\" لإزالة التثبيت."</string>
@@ -637,27 +631,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"يتم عرض هذه الإشعارات مع تنبيه صوتي"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"أنت تتجاهل عادةً هذه الإشعارات. \nهل تريد الاستمرار في عرضها؟"</string>
<string name="inline_done_button" msgid="492513001558716452">"تمّ"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"تطبيق"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"هل تريد الاستمرار في تلقي هذه الإشعارات؟"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"إيقاف الإشعارات"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"عرض الإشعارات بدون تنبيه صوتي"</string>
<string name="inline_block_button" msgid="8735843688021655065">"حظر"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"الاستمرار في تلقّي الإشعارات"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"تصغير"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"عرض بدون تنبيه صوتي"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"التنبيهات الهادئة"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"متابعة عرض الإشعارات بدون صوت"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"التنبيهات التقاطعية"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"متابعة إرسال التنبيهات"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"إيقاف الإشعارات"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"هل تريد الاستمرار في تلقي إشعارات من هذا التطبيق؟"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"لا تظهر الإشعارات المحظورة في أي مكان أو تشغّل صوتًا. يمكنك إلغاء حظر الإشعارات من الإعدادات."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"تظهر الإشعارات الصامتة في الظل ولكنها لا تظهر على شاشة التأمين ولا تعرض شعار بانر أو تشغّل صوتًا."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"سيصدر صوت عن هذه الإشعارات وستظهر في درج الإشعارات وشريط الحالة وشاشة التأمين."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"يتعذَّر إيقاف هذه الإشعارات."</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"عبر <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"يستخدم هذا التطبيق الكاميرا."</string>
<string name="appops_microphone" msgid="741508267659494555">"يستخدم هذا التطبيق الميكروفون."</string>
@@ -744,11 +735,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"التقويم"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"عرض مع عناصر التحكم في مستوى الصوت"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"عدم الإزعاج"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"اختصار أزرار مستوى الصوت"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"إيقاف \"عدم الإزعاج\" عند رفع مستوى الصوت"</string>
<string name="battery" msgid="7498329822413202973">"البطارية"</string>
<string name="clock" msgid="7416090374234785905">"الساعة"</string>
<string name="headset" msgid="4534219457597457353">"سماعة الرأس"</string>
@@ -889,6 +878,7 @@
<string name="go_to_web" msgid="2650669128861626071">"الانتقال إلى المتصفح"</string>
<string name="mobile_data" msgid="7094582042819250762">"بيانات الجوّال"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>، <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"‏تم إيقاف شبكة Wi-Fi"</string>
<string name="bt_is_off" msgid="2640685272289706392">"تم إيقاف البلوتوث."</string>
<string name="dnd_is_off" msgid="6167780215212497572">"تم إيقاف وضع \"عدم الإزعاج\""</string>
@@ -920,10 +910,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"‏تفريغ ذاكرة SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"التطبيق <xliff:g id="APP">%1$s</xliff:g> يستخدم <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"تستخدم التطبيقات <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"حسنًا"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"إعدادات الخصوصية"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"التطبيق الذي يستخدم <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"التطبيقات التي تستخدِم <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"، "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" و "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"الكاميرا"</string>
@@ -932,30 +918,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"إيقاف أجهزة الاستشعار"</string>
<string name="device_services" msgid="1191212554435440592">"خدمات الأجهزة"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"بلا عنوان"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"انقر لإعادة تشغيل هذا التطبيق والانتقال إلى وضع ملء الشاشة."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"فتح <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"إعداد الفقاعات التفسيرية على <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"هل تريد السماح بالفقاعات التفسيرية من <xliff:g id="APP_NAME">%1$s</xliff:g>؟"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"رفض"</string>
<string name="yes_bubbles" msgid="668809525728633841">"سماح"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"اسألني لاحقًا"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> من <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> من <xliff:g id="APP_NAME">%2$s</xliff:g> و<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> أيضًا"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"نقل"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"نقل إلى أعلى يمين الشاشة"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"الانتقال إلى أعلى اليسار"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"نقل إلى أسفل يمين الشاشة"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"نقل إلى أسفل اليسار"</string>
</resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 43fd06ff770d..6d09133f6bfa 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"আপোনাৰ ডিভাইচৰ লগত পোৱা চ্চাৰ্জাৰটো ব্যৱহাৰ কৰক।"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ছেটিংসমূহ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"বেটাৰি সঞ্চয়কাৰী অন কৰেনে?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"বেটাৰি সঞ্চয়কাৰীৰ বিষয়ে"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"অন কৰক"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"বেটাৰি সঞ্চয়কাৰী অন কৰক"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ছেটিংসমূহ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"এই ডিভাইচটোত বর্তমান ছাইন ইন হৈ থকা ব্যৱহাৰকাৰীজনে ইউএছবি ডিবাগিং অন কৰিব নোৱাৰে। এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ হ\'লে মুখ্য ব্যৱহাৰকাৰী হিচাপে ছাইন ইন কৰক।"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"ইউএছবি প’ৰ্ট অক্ষম কৰা হ’ল"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"আপোনাৰ ডিভাইচটো তৰল বা ধূলি-মাকতিৰ পৰা ৰক্ষা কৰিবলৈ ইউএছবি প’ৰ্টটো অক্ষম কৰি ৰখা হৈছে ফলত ই কোনো আনুষংগিক সামগ্ৰী ধৰা পেলাব নোৱাৰে।\n\nযেতিয়া ইউএছবি প’ৰ্টটো নিৰাপদভাৱে ব্যৱহাৰ কৰিব পৰা হ’ব তেতিয়া আপোনাক জনোৱা হ’ব।"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"চাৰ্জাৰ আৰু আনুষংগিক সামগ্ৰী চিনাক্ত কৰিবলৈ USB প’ৰ্ট সক্ষম কৰা হ’ল"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB সক্ষম কৰক"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"স্ক্ৰীণ পূর্ণ কৰিবলৈ জুম কৰক"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"স্ক্ৰীণ পূর্ণ কৰিবলৈ প্ৰসাৰিত কৰক"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"স্ক্ৰীণশ্বট"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ নকৰাকৈ আনলক কৰক"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"চেহেৰা স্কেন কৰি থকা হৈছে"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"পঠিয়াওক"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"জাননী পৰিচালনা কৰক"</string>
<string name="unlock_label" msgid="8779712358041029439">"আনলক কৰক"</string>
<string name="phone_label" msgid="2320074140205331708">"ফ\'ন খোলক"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"কণ্ঠধ্বনিৰে সহায় খোলক"</string>
<string name="camera_label" msgid="7261107956054836961">"কেমেৰা খোলক"</string>
<string name="cancel" msgid="6442560571259935130">"বাতিল কৰক"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"সহায় বাৰ্তাৰ ক্ষেত্ৰ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"নিশ্চিত কৰক"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"আকৌ চেষ্টা কৰক"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো স্পৰ্শ কৰক"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ম’বাইল ডেটা"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ম’বাইল ডেটা অন অৱস্থাত আছে"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ম’বাইল ডেটা অফ অৱস্থাত আছে"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ডেটা ব্যৱহাৰ কৰিবলৈ ছেট কৰা নাই"</string>
<string name="cell_data_off" msgid="1051264981229902873">"অফ অৱস্থাত আছে"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ব্লুটুথ টেডাৰিং।"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"এয়াৰপ্লেইন ম\'ড।"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"এয়াৰপ্লেইন ম\'ড অন কৰা হ’ল।"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"সম্পূৰ্ণ নিৰৱতা"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"কেৱল এলাৰ্মবোৰৰ বাবে"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"অসুবিধা নিদিব।"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"অসুবিধা নিদিব বন্ধ কৰা হ’ল।"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"অসুবিধা নিদিব অন কৰা হৈছে।"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"অসুবিধা নিদিব"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"অসুবিধা নিদিব বন্ধ কৰা হ’ল।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"অসুবিধা নিদিব অন কৰা হ’ল।"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ব্লুটুথ।"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ব্লুটুথ অফ হৈ আছে।"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ব্লুটুথ অন হৈ আছে।"</string>
@@ -269,11 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"অৱস্থানৰ অনুৰোধ সক্ৰিয় হৈ আছে"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"সকলো জাননী মচক৷"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one"> ভিতৰত আৰু <xliff:g id="NUMBER_1">%s</xliff:g>টা জাননী আছে।</item>
<item quantity="other"> ভিতৰত আৰু <xliff:g id="NUMBER_1">%s</xliff:g>টা জাননী আছে।</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"জাননীৰ ছেটিংসমূহ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ছেটিংসমূহ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"আপোনাৰ ফ\'নৰ স্ক্ৰীণ স্বয়ংক্ৰিয়ভাৱে ঘূৰিব৷"</string>
@@ -286,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"স্ক্ৰীণ ছেভাৰ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ইথাৰনেট"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"অধিক বিকল্পৰ বাবে আইকনসমূহ স্পৰ্শ কৰি হেঁচি ধৰক"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"অসুবিধা নিদিব"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"অসুবিধা নিদিব"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"কেৱল গুৰুত্বপূৰ্ণ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"কেৱল এলাৰ্মসমূহ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"সম্পূর্ণ নিৰৱতা"</string>
@@ -437,8 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"বেটাৰি সঞ্চয়কাৰী অন হৈ আছে"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"কাৰ্যদক্ষতা আৰু নেপথ্য ডেটা হ্ৰাস কৰে"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"বেটাৰি সঞ্চয়কাৰী অফ কৰক"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>এ আপোনাৰ স্ক্ৰীণত প্ৰদৰ্শন হোৱা জাননী, পাছৱৰ্ড, ফট’, বাৰ্তা আৰু পৰিশোধ সম্পৰ্কীয় তথ্য আদিকে ধৰি সকলো কেপশ্বাৰ কৰিবলৈ আৰম্ভ কৰিব।"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>ক আপোনাৰ স্ক্ৰীণ ৰেকৰ্ড বা কাষ্ট কৰিবলৈ অনুমতি দিবনে?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ৰেকৰ্ড বা কাষ্ট কৰি থকাৰ সময়ত <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>এ যিকোনো স্পৰ্শকাতৰ তথ্য যেনে আপুনি প্লে’ কৰা অডিঅ’, আপোনাৰ পাছৱৰ্ড, পৰিশোধৰ তথ্য, ফট’ আৰু বাৰ্তাবোৰ কেপচাৰ কৰিব পাৰিব।"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"কাষ্টিং/ৰেকৰ্ডিঙৰ সময়ত স্পৰ্শকাতৰ তথ্য দেখুওৱা হৈছে"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"পুনৰাই নেদেখুৱাব"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"সকলো মচক"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"পৰিচালনা"</string>
@@ -513,6 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ধ্বনিৰ ছেটিংসমূহ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"সম্প্ৰসাৰণ কৰক"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"সংকুচিত কৰক"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"স্বয়ংক্ৰিয় কেপশ্বন মিডিয়া"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"কেপচন টিপ বন্ধ কৰক"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"আউটপুট ডিভাইচ সলনি কৰক"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"স্ক্ৰীণ পিন কৰা হ’ল"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"এই কাৰ্যই আপুনি আনপিন নকৰালৈকে ইয়াক দেখা পোৱা অৱস্থাত ৰাখে। আনপিন কৰিবলৈ \'পিছলৈ যাওক\' আৰু \'অৱলোকন\'-ত স্পৰ্শ কৰি থাকক।"</string>
@@ -613,18 +620,30 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"এই জাননীবোৰে আপোনাক সতৰ্ক কৰিব"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"আপুনি সাধাৰণতে এই জাননীসমূহ অগ্ৰাহ্য কৰে। \nসেইবোৰ দেখুওৱাই থাকিব লাগিবনে?"</string>
<string name="inline_done_button" msgid="492513001558716452">"কৰা হ’ল"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"এই জাননীসমূহ দেখুওৱাই থাকিব লাগিবনে?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"জাননী বন্ধ কৰক"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"নিৰৱে ডেলিভাৰ কৰক"</string>
<string name="inline_block_button" msgid="8735843688021655065">"অৱৰোধ কৰক"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"দেখুওৱাই থাকক"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"সৰু কৰক"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"নিৰৱে দেখুৱাওক"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"নীৰৱ হৈ থাকক"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"মোক সতৰ্ক কৰি দিব"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"সতৰ্ক কৰি থাকক"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"এই এপটোৰ জাননী দেখুওৱাই থাকিব লাগিবনে?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"অৱৰোধ কৰা জাননী ক’তো দেখা নাযায় বা সেইবোৰে কোনো শব্দ নকৰে। আপুনি ছেটিংসমূহলৈ গৈ জাননীসমূহ অৱৰোধৰ পৰা আঁতৰাব পাৰে৷"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"নিৰৱ জাননীসমূহ শ্বেডত দেখা যায়, কিন্তু লক স্ক্ৰীণত আৰু বেনাৰ হিচাপে দেখা নাযায় আৰু কোনো শব্দ নকৰে।"</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"এই জাননীসমূহ বন্ধ কৰিব নোৱাৰি"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ জৰিয়তে"</string>
<string name="appops_camera" msgid="8100147441602585776">"এই এপে কেমেৰা ব্য়ৱহাৰ কৰি আছে।"</string>
<string name="appops_microphone" msgid="741508267659494555">"এই এপে মাইক্ৰ\'ফ\'ন ব্য়ৱহাৰ কৰি আছে।"</string>
@@ -703,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"কেলেণ্ডাৰ"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ভলিউম নিয়ন্ত্ৰণৰ সৈতে দেখুৱাওক"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"অসুবিধা নিদিব"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"অসুবিধা নিদিব"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ভলিউম বুটামসমূহৰ শ্বৰ্টকাট"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ভলিউম বঢ়ালে অসুবিধা নিদিব-ক নিষ্ক্ৰিয় কৰক"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ভলিউম বঢ়োৱা বুটাম ব্যৱহাৰ কৰি অসুবিধা নিদিব নিষ্ক্ৰিয় কৰক"</string>
<string name="battery" msgid="7498329822413202973">"বেটাৰি"</string>
<string name="clock" msgid="7416090374234785905">"ঘড়ী"</string>
<string name="headset" msgid="4534219457597457353">"হেডছেট"</string>
@@ -846,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ব্ৰাউজাৰলৈ যাওক"</string>
<string name="mobile_data" msgid="7094582042819250762">"ম’বাইল ডেটা"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"ৱাই-ফাই অফ অৱস্থাত আছে"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ব্লুটুথ অফ অৱস্থাত আছে"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"অসুবিধা নিদিব অফ অৱস্থাত আছে"</string>
@@ -875,36 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ছেটিংবোৰ"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"বুজি পালোঁ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI হীপ ডাম্প কৰক"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g>টা এপ্</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g>টা এপ্</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g>এ আপোনাৰ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ব্যৱহাৰ কৰি আছে।"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"এপ্লিকেশ্বনসমূহে আপোনাৰ <xliff:g id="TYPES_LIST">%s</xliff:g> ব্যৱহাৰ কৰি আছে।"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ব্যৱহাৰ হৈ আছে:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g>টা এপ্লিকেশ্বনে আপোনাৰ <xliff:g id="TYPE_5">%2$s</xliff:g> ব্যৱহাৰ কৰি আছে।</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g>টা এপ্লিকেশ্বনে আপোনাৰ <xliff:g id="TYPE_5">%2$s</xliff:g> ব্যৱহাৰ কৰি আছে।</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"বুজি পালোঁ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"গোপনীয়তা ছেটিং"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"এপটোৱে আপোনাৰ <xliff:g id="TYPES_LIST">%s</xliff:g> ব্যৱহাৰ কৰি আছে"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"এপসমূহে আপোনাৰ <xliff:g id="TYPES_LIST">%s</xliff:g> ব্যৱহাৰ কৰি আছে"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" আৰু "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"কেমেৰা"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"অৱস্থান"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"মাইক্ৰ\'ফ\'ন"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g>টা অন্য এপ্</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g>টা অন্য এপ্</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ছেন্সৰ অফ হৈ আছে"</string>
<string name="device_services" msgid="1191212554435440592">"ডিভাইচ সেৱা"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"কোনো শিৰোনাম নাই"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"এপ্‌টো ৰিষ্টাৰ্ট কৰক আৰু পূৰ্ণ স্ক্ৰীণ ব্যৱহাৰ কৰক।"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> খোলক"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ জাননী ছেটিং খোলক"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"এই এপক বাবল দেখুৱাবলৈ অনুমতি দিবনে?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"অৱৰোধ কৰক"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বাবলৰ ছেটিংসমূহ"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বাবলসমূহক অনুমতি দিয়ক?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"অস্বীকাৰ কৰক"</string>
<string name="yes_bubbles" msgid="668809525728633841">"অনুমতি দিয়ক"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"মোক পিছত সুধিব"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>ৰ পৰা <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> আৰু<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>টাৰ পৰা <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"আঁতৰাওক"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"শীৰ্ষৰ বাওঁফালে নিয়ক"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"শীৰ্ষৰ সোঁফালে নিয়ক"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"বুটামটো বাওঁফালে নিয়ক"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"তলৰ সোঁফালে নিয়ক"</string>
</resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 9682755441f5..36c297ed3d64 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Cihazla verilən adapterdən istifadə edin"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Ayarlar"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Batareya Qənaəti aktiv edilsin?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Enerjiyə Qənaət Haqqında"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktivləşdirin"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Batareya Qənaətini aktiv edin"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ayarlar"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Hazırda bu cihaza daxil olmuş istifadəçi USB sazlama prosesini aktiv edə bilməz. Bu funksiyadan istifadə etmək üçün əsas istifadəçi hesaba daxil olmalıdır."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB portu deaktiv edildi"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB portu cihazı maye və qırılmaqdan qorumaq üçün deaktiv edildiyinə görə heç bir aksesuar tapılmayacaq.\n\nUSB portu yenidən istifadə üçün təhlükəsiz olduqda bildiriş göndəriləcək."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Adapter və aksesuarları aşkarlamaq üçün USB portu aktiv edildi"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB-ni aktiv edin"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Ekranı doldurmaq üçün yaxınlaşdır"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ekranı doldurmaq üçün uzat"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Skrinşot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Barmaq izi istifadə etmədən kilidi açın"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Üzün skan edilməsi"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Göndərin"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bildirişləri idarə edin"</string>
<string name="unlock_label" msgid="8779712358041029439">"kiliddən çıxarın"</string>
<string name="phone_label" msgid="2320074140205331708">"telefonu açın"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"səs yardımçısını açın"</string>
<string name="camera_label" msgid="7261107956054836961">"kemaranı açın"</string>
<string name="cancel" msgid="6442560571259935130">"Ləğv et"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Yardım mesajı bölməsi"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Təsdiq"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Yenidən cəhd edin"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Barmaq izi sensoruna klikləyin"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobil Data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobil Data Aktivdir"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobil data deaktivdir"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Data istifadə etmək üçün ayarlanmayıb"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Deaktiv"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tezering."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçuş rejimi"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Təyyarə rejimi aktiv edildi."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"tam sakitlik"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"yalnız alarmlar"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Narahat etməyin."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Narahat etməyin\" qeyri-aktivdir."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Narahat etməyin\" aktivdir."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Narahat Etməyin."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Narahat etməyin\" deaktivdir."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Narahat etməyin\" aktivdir."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth deaktiv."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aktiv."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Məkan sorğuları arxivi"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Bütün bildirişləri sil."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Daxilində daha <xliff:g id="NUMBER_1">%s</xliff:g> bildiriş.</item>
<item quantity="one">Daxilində daha <xliff:g id="NUMBER_0">%s</xliff:g> bildiriş.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildiriş ayarları"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ayarları"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik döndəriləcək."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ekran qoruyucu"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Daha çox seçimlər üçün klikləyin və basıb saxlayın"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Narahat etməyin"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Narahat Etməyin"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Yalnız prioritet"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Yalnız alarmlar"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Tam sakitlik"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Batareya Qənaəti aktivdir"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Performansı azaldır və arxa fon datasını məhdudlaşdırır"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Batareya Qənaətini deaktiv edin"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> bildiriş, parol, foto, mesaj və ödəniş məlumatı daxil olmaqla ekranda görünən hər şeyi çəkməyə başlayacaq."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ekranı qeydə alsın və ya yayımlasın?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Qeydə alarkən və ya yayımlayarkən <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> oxutduğunuz audio, parollar, ödəniş məlumatı, foto və mesajlar kimi mühüm məlumatı əldə edə bilər."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Yayım/qeydə alma zamanı həssas məlumatın paylaşılması"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Daha göstərmə"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Hamısını silin"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"İdarə edin"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Səs ayarları"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Genişləndirin"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yığcamlaşdırın"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Avtomatik başlıq mediası"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Bağlanmış subtitrlər tövsiyəsi"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Çıxış cihazına keçin"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekrana sancaq taxıldı"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Sancaq götürülənə qədər bu görünəcək. Sancağı götürmək üçün Geri və İcmal düymələrinə basıb saxlayın."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Bu bildirişlər Sizi xəbərdar edəcək"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Adətən bu bildirişləri rədd edirsiniz. \nBildirişlər göstərilsin?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Hazırdır"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Tətbiq edin"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Bu bildirişlər göstərilməyə davam edilsin?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Bildirişləri dayandırın"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Səssiz Çatdırılma"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blok edin"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Göstərməyə davam edin"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Kiçildin"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Səssiz göstərin"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Sakit"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Səssiz göstərilsin"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Məni xəbərdar edin"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Narahatedici"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Xəbərdarlıq göndərməyə davam edin"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Bildirişləri deaktiv edin"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Bu tətbiqin bildirişləri göstərilməyə davam edilsin?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blok edilən bildirişlər heç yerdə göstərilmir və səssiz olur. Ayarlarda bildirişləri blokdan çıxara bilərsiniz."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Səssiz bildirişlər solğun rəngdə göstərilir. Onlar ekran kilidində görünmür, banerlə göstərilmir və ya səs çıxarmır."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Bu bildirişlər bildiriş çəkməcəsi, status paneli və ekran kilidində səsli rejimdə görünəcək"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Bu bildirişlər deaktiv edilə bilməz"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> vasitəsilə"</string>
<string name="appops_camera" msgid="8100147441602585776">"Bu tətbiq kameradan istifadə edir."</string>
<string name="appops_microphone" msgid="741508267659494555">"Bu tətbiq mikrofondan istifadə edir."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Təqvim"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Həcm nəzarəti ilə göstərin"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Narahat etməyin"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Narahat Etməyin"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Səs düymələri qısayolu"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Yuxarı səsdə \"narahat etməyin\" rejimini daxil edin"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Səsi artırarkən \"Narahat Etməyin\" rejimidən çıxın"</string>
<string name="battery" msgid="7498329822413202973">"Batareya"</string>
<string name="clock" msgid="7416090374234785905">"Saat"</string>
<string name="headset" msgid="4534219457597457353">"Qulaqlıq"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Brauzerə daxil edin"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobil data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi deaktivdir"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth deaktivdir"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"Narahat Etməyin\" deaktivdir"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Ayarlar"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Anladım"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> tətbiq</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> tətbiq</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TYPES_LIST">%2$s</xliff:g> tətbiqlərindən istifadə edir."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Tətbiqlər <xliff:g id="TYPES_LIST">%s</xliff:g> istifadə edir."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"İstifadədir:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> tətbiq <xliff:g id="TYPE_5">%2$s</xliff:g> tətbiqindən istifadə edir.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> tətbiq <xliff:g id="TYPE_1">%2$s</xliff:g> tətbiqindən istifadə edir.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Anladım"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Məxfilik ayarları"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> tətbiqindən istifadə edən tətbiq"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g> tətbiqindən istifadə edən tətbiqlər"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" və "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"məkan"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Digər <xliff:g id="NUM_APPS_1">%d</xliff:g> tətbiq</item>
- <item quantity="one">Digər <xliff:g id="NUM_APPS_0">%d</xliff:g> tətbiq</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorlar deaktivdir"</string>
<string name="device_services" msgid="1191212554435440592">"Cihaz Xidmətləri"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Başlıq yoxdur"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Bu tətbiqi sıfırlayaraq tam ekrana keçmək üçün klikləyin."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> tətbiqini açın"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> üçün bildiriş ayarlarını açın"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Bu tətbiqin bildiriş dairəciklərinə icazə verilsin?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blok edin"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> qabarcıqları üçün ayarlar"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> qabarcıqlarına icazə verilsin?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"İmtina edin"</string>
<string name="yes_bubbles" msgid="668809525728633841">"İcazə verin"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Sonra soruşun"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> tətbiqindən <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> tətbiqindən <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> və daha <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> qabarcıq"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Hərəkət etdirin"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Yuxarıya sola köçürün"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Yuxarıya sağa köçürün"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Aşağıya sola köçürün"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Aşağıya sağa köçürün"</string>
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index fed86017b054..00f13ccd912b 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Koristite punjač koji ste dobili uz uređaj"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Podešavanja"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Želite li da uključite Uštedu baterije?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"O Uštedi baterije"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Uključi"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Uključi Uštedu baterije"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Podešavanja"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Korisnik koji je trenutno prijavljen na ovaj uređaj ne može da uključi otklanjanje grešaka na USB-u. Da biste koristili ovu funkciju, prebacite na primarnog korisnika."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB port je onemogućen"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Da bi se uređaj zaštitio od tečnosti ili nečistoće, USB port je onemogućen i neće otkrivati dodatnu opremu.\n\nObavestićemo vas kada ponovo budete mogli da koristite USB port."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB port je omogućen radi otkrivanja punjača i dodatne opreme"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Omogući USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zumiraj na celom ekranu"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Razvuci na ceo ekran"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Snimak ekrana"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Otključaj bez korišćenja otiska prsta"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skeniranje lica"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošalji"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljajte obaveštenjima"</string>
<string name="unlock_label" msgid="8779712358041029439">"otključaj"</string>
<string name="phone_label" msgid="2320074140205331708">"otvori telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"otvori glasovnu pomoć"</string>
<string name="camera_label" msgid="7261107956054836961">"otvori kameru"</string>
<string name="cancel" msgid="6442560571259935130">"Otkaži"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Oblast poruke za pomoć"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Potvrdi"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Probaj ponovo"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Dodirnite senzor za otisak prsta"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobilni podaci"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobilni podaci su uključeni"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobilni podaci su isključeni"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nije podešeno za korišćenje podataka"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Isključeno"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth privezivanje."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim rada u avionu."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Režim rada u avionu je uključen."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"potpuna tišina"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"samo alarmi"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne uznemiravaj."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Podešavanje Ne uznemiravaj je isključeno."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Podešavanje Ne uznemiravaj je uključeno."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne uznemiravaj."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Podešavanje Ne uznemiravaj je isključeno."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Podešavanje Ne uznemiravaj je uključeno."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth je isključen."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth je uključen."</string>
@@ -269,12 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Ima aktivnih zahteva za lokaciju"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Obriši sva obaveštenja."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"i još <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, još <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Još <xliff:g id="NUMBER_1">%s</xliff:g> obaveštenje u grupi.</item>
<item quantity="few">Još <xliff:g id="NUMBER_1">%s</xliff:g> obaveštenja u grupi.</item>
<item quantity="other">Još <xliff:g id="NUMBER_1">%s</xliff:g> obaveštenja u grupi.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Podešavanja obaveštenja"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Podešavanja za <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran će se automatski rotirati."</string>
@@ -287,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Čuvar ekrana"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Eternet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Dodirnite i zadržite ikone za još opcija"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ne uznemiravaj"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne uznemiravaj"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Samo prioritetni prekidi"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Samo alarmi"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Potpuna tišina"</string>
@@ -440,8 +444,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Ušteda baterije je uključena"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Smanjuje performanse i pozadinske podatke"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Isključi Uštedu baterije"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> će početi da snima sve na ekranu, uključujući obaveštenja, lozinke, slike, poruke i informacije o plaćanju."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Želite li da dozvolite da <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> snima ili prebacuje sadržaj ekrana?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Kada snimate ili prebacujete, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> može da čuva osetljive informacije, kao što su zvuk koji reprodukujete i lozinke, informacije o plaćanju, slike i poruke."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Otkrivanje osetljivih informacija tokom prebacivanja/snimanja"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ne prikazuj ponovo"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Obriši sve"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Upravljajte"</string>
@@ -516,6 +520,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Podešavanja zvuka"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširi"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skupi"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski titl za medije"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Opis titla"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Promenite izlazni uređaj"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekran je zakačen"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Na ovaj način se ovo stalno prikazuje dok ga ne otkačite. Dodirnite i zadržite Nazad i Pregled da biste ga otkačili."</string>
@@ -616,18 +622,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ova obaveštenja će vas upozoravati"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Obično odbacujete ova obaveštenja. \nŽelite li da se i dalje prikazuju?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gotovo"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Primeni"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Želite li da se ova obaveštenja i dalje prikazuju?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Prestani da prikazuješ obaveštenja"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Šalji bez zvuka"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokiraj"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Nastavi da prikazuješ"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Umanji"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Prikaži bez zvuka"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Diskretno"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Ne uključuj zvuk"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Obavesti me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Ometajuća"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Nastavi sa obaveštenjima"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Isključi obaveštenja"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite li da se obaveštenja iz ove aplikacije i dalje prikazuju?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokirana obaveštenja se ne prikazuju i ne reprodukuju zvuk. Obaveštenja možete da odblokirate u podešavanjima."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Nečujna obaveštenja se prikazuju na traci, ali se ne prikazuju na zaključanom ekranu, ne prikazuju baner i ne reprodukuju zvuk."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ova obaveštenja će emitovati zvuk i prikazivaće se u fioci za obaveštenja, statusnoj traci i na zaključanom ekranu"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ne možete da isključite ova obaveštenja"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"preko aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ova aplikacija koristi kameru."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ova aplikacija koristi mikrofon."</string>
@@ -708,9 +720,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Prikaži sa kontrolama jačine zvuka"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ne uznemiravaj"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne uznemiravaj"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Prečica za dugmad za jačinu zvuka"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Izađi iz režima Ne uznemiravaj kada je zvuk pojačan"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Izađi iz režima Ne uznemiravaj kada je zvuk pojačan"</string>
<string name="battery" msgid="7498329822413202973">"Baterija"</string>
<string name="clock" msgid="7416090374234785905">"Sat"</string>
<string name="headset" msgid="4534219457597457353">"Naglavne slušalice"</string>
@@ -851,6 +863,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Idi na pregledač"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilni podaci"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi je isključen"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth je isključen"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Režim Ne uznemiravaj je isključen"</string>
@@ -880,39 +893,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Podešavanja"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Važi"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Izdvoji SysUI mem."</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> koristi <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikacije koriste <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"U upotrebi"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija koristi dozvolu <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplikacije koriste dozvolu <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija koristi dozvolu <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Važi"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Podešav. privatnosti"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacija koja koristi dozvole <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije koje koriste dozvole <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" i "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kameru"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokaciju"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">I još <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacija</item>
- <item quantity="few">I još <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other">I još <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacija</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori su isključeni"</string>
<string name="device_services" msgid="1191212554435440592">"Usluge za uređaje"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez naslova"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Dodirnite da biste restartovali aplikaciju i prešli u režim celog ekrana."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvorite <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvorite podešavanja obaveštenja za <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Želite li da dozvolite oblačiće iz ove aplikacije?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokiraj"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Podešavanja za <xliff:g id="APP_NAME">%1$s</xliff:g> oblačiće"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Želite li da omogućite oblačiće iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Odbij"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Dozvoli"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Pitaj me kasnije"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g> i još <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Premesti"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Premesti gore levo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Premesti gore desno"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Premesti dole levo"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Premesti dole desno"</string>
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 31ce2376fba1..5ff11d7b344d 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Выкарыстоўвайце зараднае прыстасаванне з камплекта прылады"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Налады"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Уключыць рэжым эканоміі зараду?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Інфармацыя пра рэжым эканоміі зараду"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Уключыць"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Уключыць рэжым эканоміі зараду"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Налады"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Карыстальнік, які зараз увайшоў у гэту прыладу, не можа ўключыць адладку USB. Каб выкарыстоўваць гэту функцыю, пераключыцеся на асноўнага карыстальніка."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Порт USB адключаны"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Порт USB адключаны для аховы прылады ад вадкасці і смецця і не будзе выяўляць аксесуары.\n\nКалі можна будзе зноў бяспечна выкарыстоўваць порт USB, вы атрымаеце апавяшчэнне."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-порту дазволена вызначаць зарадныя прылады і аксесуары"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Уключыць USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Павял. на ўвесь экран"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Расцягн. на ўвесь экран"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Здымак экрана"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Разблакіроўка без выкарыстання адбітка пальца"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Сканіраванне твару"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Адправіць"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Кіраваць апавяшчэннямі"</string>
<string name="unlock_label" msgid="8779712358041029439">"разблакiраваць"</string>
<string name="phone_label" msgid="2320074140205331708">"адкрыць тэлефон"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"адкрыць галасавую дапамогу"</string>
<string name="camera_label" msgid="7261107956054836961">"адкрыць камеру"</string>
<string name="cancel" msgid="6442560571259935130">"Скасаваць"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Поле даведачнага паведамлення"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Пацвердзіць"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Паўтарыць спробу"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Дакраніцеся да сканера адбіткаў пальцаў"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мабільная перадача даных"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мабільная перадача даных уключана"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мабільная перадача даных выключана"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Не зададзена для выкарыстання даных"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Выключаны"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Сувязь па Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Рэжым палёту."</string>
@@ -222,9 +226,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Рэжым палёту ўключаецца."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"поўная цішыня"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"толькі будзільнікі"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не турбаваць."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Рэжым «Не турбаваць» выкл."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Рэжым «Не турбаваць» укл."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Не турбаваць."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Рэжым \"Не турбаваць\" выключаны."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Рэжым \"Не турбаваць\" уключаны."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth выключаны."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth уключаны."</string>
@@ -271,13 +275,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Ёсць актыўныя запыты пра месцазнаходжанне"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Выдалiць усе апавяшчэннi."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Яшчэ <xliff:g id="NUMBER_1">%s</xliff:g> апавяшчэнне ўнутры.</item>
<item quantity="few">Яшчэ <xliff:g id="NUMBER_1">%s</xliff:g> апавяшчэнні ўнутры.</item>
<item quantity="many">Яшчэ <xliff:g id="NUMBER_1">%s</xliff:g> апавяшчэнняў унутры.</item>
<item quantity="other">Яшчэ <xliff:g id="NUMBER_1">%s</xliff:g> апавяшчэння ўнутры.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Налады апавяшчэнняў"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Налады <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран паварочваецца аўтаматычна."</string>
@@ -290,7 +294,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Экранная застаўка"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Каб адкрыць іншыя параметры, націсніце на значок і ўтрымлівайце яго"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Не турбаваць"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Не турбаваць"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Толькі прыярытэтныя"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Толькі будзільнікі"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Поўная цішыня"</string>
@@ -445,8 +449,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Рэжым эканоміі зараду ўключаны"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Памяншае прадукцыйнасць і фонавую перадачу даных"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Адключыць рэжым эканоміі зараду"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> пачне адсочваць усё, што паказваецца на вашым экране: апавяшчэнні, паролі, фатаграфіі, паведамленні, плацежную інфармацыю і іншае."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Дазволіць праграме \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" запісваць ці трансліраваць ваш экран?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Падчас запісу ці трансляцыі <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> можа збіраць канфідэнцыяльную інфармацыю, напрыклад аўдыяданыя, паролі, фота, паведамленні і звесткі пра аплату."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Выкарыстанне асабістай інфармацыі падчас трансляцыі і запісу"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Не паказваць зноў"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Ачысціць усё"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Кіраваць"</string>
@@ -521,6 +525,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Налады гуку"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Разгарнуць"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згарнуць"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Аўтаматычныя цітры"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Падказка \"Схавайце цітры\""</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Змяніць прыладу аўдыявыхаду"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Экран замацаваны"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Будзе паказвацца, пакуль не адмацуеце. Каб адмацаваць, краніце і ўтрымлівайце кнопкі \"Назад\" і \"Агляд\"."</string>
@@ -621,18 +627,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Гэтыя апавяшчэнні будуць паказвацца з гукам"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Звычайна вы адхіляеце гэтыя апавяшчэнні. \nПаказваць іх?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Гатова"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Ужыць"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Працягваць паказваць гэтыя апавяшчэнні?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Спыніць апавяшчэнні"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Дастаўляць бязгучна"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Заблакіраваць"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Працягваць паказваць"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Згарнуць"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Паказваць бязгучна"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Ціхі рэжым"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Не ўключаць гук"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Апавясціць мяне"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Рэжым перапынення"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Апавяшчаць далей"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Выключыць апавяшчэнні"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Працягваць паказваць апавяшчэнні гэтай праграмы?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Заблакіраваныя апавяшчэнні нідзе не паказваюцца і не прайграюць гукавы сігнал. Вы можаце разблакіраваць апавяшчэнні ў наладах."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Апавяшчэнні без гуку паяўляюцца \"на шторцы\", аднак не паказваюцца на экране блакіроўкі і на банеры, а таксама не прайграюць гукавы сігнал."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Гэтыя апавяшчэнні будуць прыходзіць з сігналам і паказвацца ў высоўным меню апавяшчэнняў, на панэлі стану і экране блакіроўкі"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Немагчыма адключыць гэтыя апавяшчэнні"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"праз праграму \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="appops_camera" msgid="8100147441602585776">"Гэта праграма выкарыстоўвае камеру."</string>
<string name="appops_microphone" msgid="741508267659494555">"Гэта праграма выкарыстоўвае мікрафон."</string>
@@ -715,9 +727,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Каляндар"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Паказаць з рэгулятарамі гучнасці"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Не турбаваць"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Не турбаваць"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Доступ праз кнопкі рэгулявання гучнасці"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Выхад з рэжыму «Не турбав.» пры націску кнопкі павел. гучн."</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Выхад з рэжыму \"Не турбаваць\" пры павелічэнні гучнасці"</string>
<string name="battery" msgid="7498329822413202973">"Акумулятар"</string>
<string name="clock" msgid="7416090374234785905">"Гадзіннік"</string>
<string name="headset" msgid="4534219457597457353">"Гарнітура"</string>
@@ -858,6 +870,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Перайсці ў браўзер"</string>
<string name="mobile_data" msgid="7094582042819250762">"Маб. перадача даных"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi выключаны"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth выключаны"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Рэжым \"Не турбаваць\" выключаны"</string>
@@ -887,42 +900,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Налады"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Зразумела"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Дамп кучы SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> праграма</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> праграмы</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> праграм</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> праграмы</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Праграма \"<xliff:g id="APP">%1$s</xliff:g>\" выкарыстоўвае: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Праграмы выкарыстоўваюць: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Занята:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one">Функцыю \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" выкарыстоўвае <xliff:g id="NUM_APPS_4">%1$d</xliff:g> праграма.</item>
- <item quantity="few">Функцыю \"<xliff:g id="TYPE_3">%2$s</xliff:g>\" выкарыстоўваюць <xliff:g id="NUM_APPS_2">%1$d</xliff:g> праграмы.</item>
- <item quantity="many">Функцыю \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" выкарыстоўваюць <xliff:g id="NUM_APPS_4">%1$d</xliff:g> праграм.</item>
- <item quantity="other">Функцыю \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" выкарыстоўваюць <xliff:g id="NUM_APPS_4">%1$d</xliff:g> праграмы.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Зразумела"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Налады прыватнасці"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Праграма, якая выкарыстоўвае: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Праграмы, якія выкарыстоўваюць: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" і "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камера"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"геалакацыя"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"мікрафон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">яшчэ <xliff:g id="NUM_APPS_1">%d</xliff:g> праграма</item>
- <item quantity="few">яшчэ <xliff:g id="NUM_APPS_1">%d</xliff:g> праграмы</item>
- <item quantity="many">яшчэ <xliff:g id="NUM_APPS_1">%d</xliff:g> праграм</item>
- <item quantity="other">яшчэ <xliff:g id="NUM_APPS_1">%d</xliff:g> праграмы</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Датчыкі выкл."</string>
<string name="device_services" msgid="1191212554435440592">"Сэрвісы прылады"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без назвы"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Націсніце, каб перазапусціць гэту праграму і перайсці ў поўнаэкранны рэжым."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Адкрыць праграму \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Адкрыць налады апавяшчэнняў для праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Дазволіць дыялогі з гэтай праграмы?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Заблакіраваць"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Налады дыялогаў у праграме \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Дазволіць дыялогі з праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Адмовіць"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Дазволіць"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Спытаць пазней"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ад праграмы \"<xliff:g id="APP_NAME">%2$s</xliff:g>\""</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ад праграмы \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" і яшчэ <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Перамясціць"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Перамясціць лявей і вышэй"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Перамясціце правей і вышэй"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Перамясціць лявей і ніжэй"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Перамясціць правей і ніжэй"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 13303732fcab..776424414a31 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Използвайте оригиналното зарядно устройство"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Настройки"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Да се включи ли режимът за запазване на батерията?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Всичко за режима за запазване на батерията"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Включване"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Включване на режима за запазване на батерията"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Потребителят, който понастоящем е влязъл в това устройство, не може да включи функцията за отстраняване на грешки през USB. За да я използвате, превключете към основния потребител."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB портът е деактивиран"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"С цел защита на устройството ви от течности и замърсяване USB портът ще бъде деактивиран и няма да открива аксесоари.\n\nЩе получите известие, когато е безопасно отново да използвате USB порта."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB портът може да разпознава зарядни устройства и аксесоари"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Активиране на USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Мащаб – запълва екрана"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Разпъване – запълва екрана"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Екранна снимка"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Отключете, без да използвате отпечатъка си"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Извършва се сканиране на лице"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Изпращане"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Управление на известията"</string>
<string name="unlock_label" msgid="8779712358041029439">"отключване"</string>
<string name="phone_label" msgid="2320074140205331708">"отваряне на телефона"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"отваряне на гласовата помощ"</string>
<string name="camera_label" msgid="7261107956054836961">"отваряне на камерата"</string>
<string name="cancel" msgid="6442560571259935130">"Отказ"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Област за помощно съобщение"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Потвърждаване"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Нов опит"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Докоснете сензора за отпечатъци"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобилни данни"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобилните данни са включени"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобилните данни са изключени"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Не е зададено да използва данни"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Изключени"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Тетъринг през Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Самолетен режим."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Самолетният режим се включи."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"пълна тишина"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"само будилници"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не безпокойте."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Настройката „Не безпокойте“ е изключена."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Настройката „Не безпокойте“ е включена."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Не безпокойте."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Режимът „Не безпокойте“ е изключен."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Режимът „Не безпокойте“ е включен."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Функцията за Bluetooth е изключена."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Функцията за Bluetooth е включена."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Активни заявки за местоположение"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Изчистване на всички известия."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, + <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Съдържа още <xliff:g id="NUMBER_1">%s</xliff:g> известия.</item>
<item quantity="one">Съдържа още <xliff:g id="NUMBER_0">%s</xliff:g> известие.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Настройки за известия"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Настройки за <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екранът ще се завърта автоматично."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Скрийнсейвър"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"За още опции докоснете и задръжте иконите"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Не безпокойте"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Не безпокойте"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Само с приоритет"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Само будилници"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Пълна тишина"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Режимът за запазване на батерията е включен"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Намалява ефективността и данните на заден план"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Изключване на режима за запазване на батерията"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ще започне да записва всичко на екрана ви, включително известията, паролите, снимките, съобщенията и данните за плащане."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Да се разреши ли на <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> да записва или предава екрана ви?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Докато записва или предава, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> може да прихване поверителна информация, като например слушан от вас аудиозапис и вашите пароли, данни за плащане, снимки и съобщения."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Разкриване на поверителна информация по време на предаване/записване"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Да не се показва отново"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Изчистване на всички"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Управление"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Настройки за звука"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Разгъване"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Свиване"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медия с автоматични надписи"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Съвет за надписите"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Превключване на устройството за възпроизвеждане на звук"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Екранът е фиксиран"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Екранът ще се показва, докато не го освободите с докосване и задържане на бутона за връщане назад и този за общ преглед."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ще получавате сигнал за тези известия"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Обикновено отхвърляте тези известия. \nИскате ли да продължат да се показват?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Готово"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Прилагане"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Тези известия да продължат ли да се показват?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Спиране на известията"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Получаване без звук"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Блокиране"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Да продължат да се показват"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Намаляване"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Показване без звук"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Деликатни сигнали"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Показване на известията без звук"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Сигнализиране"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Прекъсващи сигнали"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Продължаване на сигнализирането"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Изключване на известията"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Да продължат ли да се показват известията от това приложение?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Блокираните известия не се показват никъде, нито възпроизвеждат звук. Можете да ги отблокирате от настройките."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Беззвучните известия се показват в падащия панел, но не и на заключения екран, не включват банер и не възпроизвеждат звук."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Тези известия ще издават звук и ще се показват в съответния слой, лентата на състоянието и на заключения екран."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Тези известия не могат да бъдат изключени"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Тази група от известия не може да бъде конфигурирана тук"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"чрез <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Това приложение използва камерата."</string>
<string name="appops_microphone" msgid="741508267659494555">"Това приложение използва микрофона."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Календар"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Показване с контролите за силата на звука"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Не безпокойте"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Не безпокойте"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Пряк път към бутоните за силата на звука"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Изкл. на „Не безпокойте“ при увеличаване на силата на звука"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Изкл. на „Не безпокойте“ при увеличаване на силата на звука"</string>
<string name="battery" msgid="7498329822413202973">"Батерия"</string>
<string name="clock" msgid="7416090374234785905">"Часовник"</string>
<string name="headset" msgid="4534219457597457353">"Слушалки"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Към браузъра"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобилни данни"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Функцията за Wi‑Fi е изключена"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Функцията за Bluetooth е изключена"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Режимът „Не безпокойте“ е изключен"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Настройки"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Разбрах"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> прилож.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> прилож.</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> използва <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Някои приложения използват <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Използвани:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> приложения използват <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> приложение използва <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Разбрах"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Поверит.: Настройки"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Приложение, което използва <xliff:g id="TYPES_LIST">%s</xliff:g> ви"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Приложения, които използват <xliff:g id="TYPES_LIST">%s</xliff:g> ви"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" и "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камерата"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"местополож."</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"микрофона"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> други приложения</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> друго приложение</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Сензорите са изключени"</string>
<string name="device_services" msgid="1191212554435440592">"Услуги за устройството"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Няма заглавие"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Докоснете, за да рестартирате това приложение в режим на цял екран."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Отваряне на „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Отваряне на настройките за известията за „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Да се разреши ли показването на балончета от това приложение?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Блокиране"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Настройки за балончетата за <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Да се разрешат ли балончетата от <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Отказ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Разрешаване"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Попитайте ме по-късно"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> от <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ от<xliff:g id="APP_NAME">%2$s</xliff:g> и още <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Преместване"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Преместване горе вляво"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Преместване горе вдясно"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Преместване долу вляво"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Преместване долу вдясно"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 2628a246f3bf..94b32a89fab7 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ডিভাইসের সাথে যে চার্জারটি পেয়েছেন, সেটি ব্যবহার করুন"</string>
<string name="battery_low_why" msgid="4553600287639198111">"সেটিংস"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ব্যাটারি সেভার চালু করবেন?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ব্যাটারি সেভার সম্পর্কে"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"চালু করুন"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ব্যাটারি সেভার চালু করুন"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"সেটিংস"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ব্যবহারকারী এখন এই ডিভাইসে সাইন-ইন করেছেন তাই USB ডিবাগিং চালু করা যাবে না। এই বৈশিষ্ট্যটি ব্যবহার করতে, প্রাথমিক ব্যবহারকারীতে পাল্টে নিন।"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"ইউএসবি পোর্ট বন্ধ করা হয়েছে"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"কোনও তরল পদার্থ এবং ধুলো কণা থেকে আপনার ডিভাইসকে সুরক্ষিত করতে, ইউএসবি পোর্ট বন্ধ করা হবে এবং কোনও অ্যাক্সেসরির শনাক্ত করবে না।\n\nযখন ইউএসবি পোর্ট ব্যবহার করা নিরাপদ হবে তখন আপনাকে জানানো হবে।"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"চার্জার ও আনুষঙ্গিক আইটেম শনাক্ত করার জন্য ইউএসবি চালু করা হয়েছে"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"ইউএসবি চালু করুন"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"স্ক্রীণ পূরণ করতে জুম করুন"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ফুল স্ক্রিন করুন"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"স্ক্রিনশট নিন"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"আপনার আঙ্গুলের ছাপ ব্যবহার না করেই আনলক করুন"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ফেস স্ক্যান করা হচ্ছে"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"পাঠান"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"বিজ্ঞপ্তি ম্যানেজ করুন"</string>
<string name="unlock_label" msgid="8779712358041029439">"আনলক করুন"</string>
<string name="phone_label" msgid="2320074140205331708">"ফোন খুলুন"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ভয়েস সহায়তা খুলুন"</string>
<string name="camera_label" msgid="7261107956054836961">"ক্যামেরা খুলুন"</string>
<string name="cancel" msgid="6442560571259935130">"বাতিল করুন"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"সহায়তার মেসেজ দেখানোর জায়গা"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"কনফার্ম করুন"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"আবার চেষ্টা করুন"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"আঙ্গুলের ছাপের সেন্সর স্পর্শ করুন"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"মোবাইল ডেটা"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"মোবাইল ডেটা চালু আছে"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"মোবাইল ডেটা বন্ধ করা হয়েছে"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ডেটা ব্যবহার করার জন্য সেট করা নেই"</string>
<string name="cell_data_off" msgid="1051264981229902873">"বন্ধ"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ব্লুটুথ টিথারিং৷"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"বিমান মোড৷"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"বিমান মোড চালু হয়েছে।"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"সম্পূর্ণ নীরব"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"শুধুমাত্র অ্যালার্ম"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"বিরক্ত করবেন না৷"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"বিরক্ত করবেন না বন্ধ রয়েছে৷"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"বিরক্ত করবেন না চালু রয়েছে৷"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"বিরক্ত করবেন না।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'বিরক্ত করবেন না\' বন্ধ আছে।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\'বিরক্ত করবেন না\' চালু করা হয়েছে।"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ব্লুটুথ"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ব্লুটুথ বন্ধ আছে।"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ব্লুটুথ চালু আছে।"</string>
@@ -269,11 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"লোকেশন অনুরোধ সক্রিয় রয়েছে"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"সমস্ত বিজ্ঞপ্তি সাফ করুন৷"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>টি"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">ভিতরে আরও <xliff:g id="NUMBER_1">%s</xliff:g>টি বিজ্ঞপ্তি আছে।</item>
<item quantity="other">ভিতরে আরও <xliff:g id="NUMBER_1">%s</xliff:g>টি বিজ্ঞপ্তি আছে।</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"বিজ্ঞপ্তির সেটিংস"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> সেটিংস"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"স্ক্রিন অটোমেটিক ঘুরে যাবে৷"</string>
@@ -286,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"স্ক্রিন সেভার"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ইথারনেট"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"আরও বিকল্পের জন্য আইকনগুলি টাচ করে ধরে থাকুন"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"বিরক্ত করবেন না"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"বিরক্ত করবেন না"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"শুধুমাত্র অগ্রাধিকার"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"শুধুমাত্র অ্যালার্মগুলি"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"একদম নিরব"</string>
@@ -437,8 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ব্যাটারি সেভার চালু আছে"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"কার্য-সম্পাদনা ও পশ্চাদপট ডেটাকে কমিয়ে দেয়"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ব্যাটারি সেভার বন্ধ করুন"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"বিজ্ঞপ্তি, পাসওয়ার্ড, ফটো, মেসেজ এবং পেমেন্টের তথ্য সহ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> আপনার স্ক্রিনে সবকিছু ক্যাপচার করা শুরু করবে।"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-কে আপনার স্ক্রিন রেকর্ড বা কাস্ট করতে দিতে চান?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"রেকর্ড বা কাস্ট করার সময় আপনি চালাচ্ছেন এমন অডিও, আপনার পাসওয়ার্ড, পেমেন্টের তথ্য, ফটো ও মেসেজের মতো ব্যক্তিগত তথ্য <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ক্যাপচার করতে পারে।"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"কাস্ট/রেকর্ড করার সময় সংবেদনশীল তথ্য প্রকাশ করে"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"আর দেখাবেন না"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"সবকিছু সাফ করুন"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"পরিচালনা করুন"</string>
@@ -513,6 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"সাউন্ড সেটিংস"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"বড় করুন"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"সঙ্কুচিত করুন"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"মিডিয়া অটোমেটিক ক্যাপশন করুন"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ক্লোজড ক্যাপশন টুল টিপ বন্ধ করুন"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"অন্য আউটপুট ডিভাইস বেছে নিন"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"স্ক্রিন পিন করা হয়েছে"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"এটি আপনি আনপিন না করা পর্যন্ত এটিকে প্রদর্শিত করবে৷ আনপিন করতে ফিরুন এবং ওভারভিউ স্পর্শ করে ধরে থাকুন।"</string>
@@ -613,18 +620,30 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"এই বিজ্ঞপ্তিগুলি আপনাকে সতর্ক করে দেবে"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"এই বিজ্ঞপ্তিগুলিকে আপনি সাধারণত বাতিল করেন। \nসেগুলি দেখতে চান?"</string>
<string name="inline_done_button" msgid="492513001558716452">"হয়ে গেছে"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"এই বিজ্ঞপ্তিগুলি পরেও দেখে যেতে চান?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"বিজ্ঞপ্তি বন্ধ করুন"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"সাইলেন্ট মোডে দেখান"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ব্লক করুন"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"দেখতে থাকুন"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ছোট করে দিন"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"নিঃশব্দে দেখুন"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"বিজ্ঞপ্তি মিউট করুন"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"আমাকে জানানো হোক"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"বিজ্ঞপ্তি পান"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"এই অ্যাপের বিজ্ঞপ্তি পরেও দেখে যেতে চান?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ব্লক করা বিজ্ঞপ্তি কোথাও দেখানো হয় না ও সেটির শব্দ শোনা যায় না। আপনি সেটিংস থেকে বিজ্ঞপ্তি আনব্লক করতে পারেন।"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"নীরব বিজ্ঞপ্তি শেডে দেখানো হয়, কিন্তু লক স্ক্রিনে দেখানো হয় না। একইসাথে, এটি ব্যানার দেখাতে পারে না বা আওয়াজও করতে পারে না।"</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"এই বিজ্ঞপ্তিগুলি বন্ধ করা যাবে না"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর মাধ্যমে"</string>
<string name="appops_camera" msgid="8100147441602585776">"এই অ্যাপটি ক্যামেরা ব্যবহার করছে।"</string>
<string name="appops_microphone" msgid="741508267659494555">"এই অ্যাপটি মাইক্রোফোন ব্যবহার করছে।"</string>
@@ -703,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"ক্যালেন্ডার"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ভলিউম নিয়ন্ত্রণ সহ দেখান"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"বিরক্ত করবেন না"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"বিরক্ত করবেন না"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ভলিউম বোতামের শর্টকাট"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ভলিউম বাড়ানোর মাধ্যেমে \'বিরক্ত করবেন না\' থেকে বেরিয়ে আসুন"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ভলিউম বাড়িয়ে \'বিরক্ত করবেন না\' মোড থেকে বেরিয়ে আসুন"</string>
<string name="battery" msgid="7498329822413202973">"ব্যাটারি"</string>
<string name="clock" msgid="7416090374234785905">"ঘড়ি"</string>
<string name="headset" msgid="4534219457597457353">"হেডসেট"</string>
@@ -846,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ব্রাউজারে যান"</string>
<string name="mobile_data" msgid="7094582042819250762">"মোবাইল ডেটা"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"ওয়াই ফাই বন্ধ আছে"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ব্লুটুথ বন্ধ আছে"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"বিরক্ত করবেন না বিকল্পটি বন্ধ আছে"</string>
@@ -875,36 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"সেটিংস"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"বুঝেছি"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g>টি অ্যাপ</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g>টি অ্যাপ</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> আপনার <xliff:g id="TYPES_LIST">%2$s</xliff:g> ব্যবহার করছে।"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"অ্যাপ্লিকেশনগুলি আপনার <xliff:g id="TYPES_LIST">%s</xliff:g> ব্যবহার করছে।"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ব্যবহার আছে:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g>টি অ্যাপ আপনার <xliff:g id="TYPE_5">%2$s</xliff:g> ব্যবহার করছে।</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g>টি অ্যাপ আপনার <xliff:g id="TYPE_5">%2$s</xliff:g> ব্যবহার করছে।</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"বুঝেছি"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"গোপনীয়তার সেটিংস"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"অ্যাপ আপনার <xliff:g id="TYPES_LIST">%s</xliff:g> ব্যবহার করছে"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"অ্যাপ আপনার <xliff:g id="TYPES_LIST">%s</xliff:g> ব্যবহার করছে"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" এবং "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ক্যামেরা"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"লোকেশন"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"মাইক্রোফোন"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g>টি অন্য অ্যাপ</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g>টি অন্য অ্যাপ</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"সেন্সর বন্ধ"</string>
<string name="device_services" msgid="1191212554435440592">"ডিভাইস সংক্রান্ত পরিষেবা"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"কোনও শীর্ষক নেই"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"এই অ্যাপ রিস্টার্ট করতে ট্যাপ করুন ও ফুল-স্ক্রিন ব্যবহার করুন।"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> খুলুন"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর জন্য বিজ্ঞপ্তি সেটিংস খুলুন"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"এই অ্যাপে বুদবুদ চালু করার অনুমতি দেবেন?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ব্লক করুন"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> বাবলের জন্য সেটিংস"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপের বাবল চালু করবেন?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"খারিজ করুন"</string>
<string name="yes_bubbles" msgid="668809525728633841">"অনুমতি দিন"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"আমাকে পরে জিজ্ঞাসা করুন"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> অ্যাপ থেকে <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> অ্যাপ এবং আরও <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>টি থেকে <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"সরান"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"উপরে বাঁদিকে সরান"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"উপরে ডানদিকে সরান"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"নিচে বাঁদিকে সরান"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"নিচে ডান দিকে সরান"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 11ba800010d2..f85ed358552c 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Koristite punjač koji ste dobili uz uređaj"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Postavke"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Uključiti Uštedu baterije?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Informacije o Uštedi baterije"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Uključi"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Uključi Uštedu baterije"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Postavke"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Korisnik koji je trenutno prijavljen na ovaj uređaj ne može uključiti opciju za otklanjanje grešaka koristeći USB. Da koristite tu funkciju, prebacite se na primarnog korisnika."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB priključak je onemogućen"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB priključak je onemogućen kako bi se vaš uređaj zaštitio od tečnosti i nečistoća i neće detektirati priključene uređaje.\n\nDobit ćete obavještenje kada ponovo bude sigurno koristiti USB priključak."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB priključak je omogućen za prepoznavanje punjača i pribora"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Omogući USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Uvećaj prikaz na ekran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Razvuci prikaz na ekran"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Snimak ekrana"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Otključaj bez korištenja otiska prsta"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skeniranje lica"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošalji"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljanje obavještenjima"</string>
<string name="unlock_label" msgid="8779712358041029439">"otključaj"</string>
<string name="phone_label" msgid="2320074140205331708">"otvori telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"otvori glasovnu pomoć"</string>
<string name="camera_label" msgid="7261107956054836961">"otvori kameru"</string>
<string name="cancel" msgid="6442560571259935130">"Otkaži"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Prostor za poruku za pomoć"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Potvrdite"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Pokušaj ponovo"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Dodirnite senzor za otisak prsta"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Prijenos podataka na mobilnoj mreži"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Prijenos podataka na mobilnoj mreži je uključen"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Prijenos podataka na mobilnoj mreži je isključen"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nije postavljeno za korištenje podataka"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Isključeno"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Dijeljenje Bluetooth veze."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Način rada u avionu."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Način rada u avionu je uključen."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"potpuna tišina"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"samo alarmi"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne ometaj."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Način rada Ne ometaj je isključen."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Način rada Ne ometaj je uključen."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne ometaj."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Način rada Ne ometaj je isključen."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Način rada Ne ometaj je uključen."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth isključen."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth uključen."</string>
@@ -269,12 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktiviran je zahtjev za lokaciju"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Uklanjanje svih obavještenja."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> i još <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Još <xliff:g id="NUMBER_1">%s</xliff:g> obavještenje unutra.</item>
<item quantity="few">Još <xliff:g id="NUMBER_1">%s</xliff:g> obavještenja unutra.</item>
<item quantity="other">Još <xliff:g id="NUMBER_1">%s</xliff:g> obavještenja unutra.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Postavke obavještenja"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Postavke aplikacije <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran će se automatski rotirati."</string>
@@ -287,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Čuvar ekrana"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Dodirnite i držite ikone za više opcija"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ne ometaj"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne ometaj"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Samo prioritetno"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Samo alarmi"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Potpuna tišina"</string>
@@ -440,8 +444,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Uključena je Ušteda baterije"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Minimizira rad i prijenos podataka u pozadini"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Isključi Uštedu baterije"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> će početi snimati sve na vašem ekranu uključujući obavještenja, lozinke, fotografije, poruke i informacije o plaćanju."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Dozvoliti aplikaciji <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> da snima ili emitira vaš ekran?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Prilikom snimanja ili emitiranja, aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> može snimiti sve osjetljive podatke, kao što su to zvuk koji reproducirate i vaše lozinke, podaci o plaćanju, fotografije i poruke."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Izlaganje osjetljivih podataka za vrijeme emitiranja/snimanja"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ne prikazuj opet"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Očisti sve"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Upravljaj"</string>
@@ -516,6 +520,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Postavke zvuka"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširi"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Suzi"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski titluj medije"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Savjet u titlu"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Promijenite izlazni uređaj"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekran je prikačen"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ekran ostaje prikazan ovako dok ga ne otkačite. Da ga otkačite, dodirnite i držite dugme Nazad."</string>
@@ -618,18 +624,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ova obavještenja će vas upozoriti"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Obično odbacujete ova obavještenja. \nNastaviti ih prikazivati?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gotovo"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Primijeni"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Nastaviti prikazivanje ovih obavještenja?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Zaustavi obavještenja"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Dostavi tiho"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokiraj"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Nastavi prikazivanje"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimiziraj"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Prikaži bez zvuka"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Diskretna"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Ostani u nečujnom načinu rada"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Upozori me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Ometajuća"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Nastavi upozoravati"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Isključi obavještenja"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Nastaviti prikazivanje obavještenja iz ove aplikacije?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokirana obavještenja se nigdje ne prikazuju niti emituju zvuk. Obavještenja možete deblokirati u postavkama."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Nečujna obavještenja se prikazuju u sjeni, ali se ne prikazuju na zaključanom ekranu, ne prikazuju baner i ne emituju zvuk."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ova obavještenja će emitirati zvuk i prikazat će se na panelu obavještenja, statusnoj traci i zaključanom ekranu"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ova obavještenja nije moguće isključiti"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ovdje nije moguće konfigurirati ovu grupu obavještenja"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"preko aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ova aplikacija koristi kameru."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ova aplikacija koristi mikrofon."</string>
@@ -710,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Prikazati sa kontrolama jačine zvuka"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ne ometaj"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne ometaj"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Prečica za dugmad za Jačinu zvuka"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Deaktiviraj način rada Ne ometaj kada se zvuk pojača"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Deaktiviraj način rada Ne ometaj kada se zvuk pojača"</string>
<string name="battery" msgid="7498329822413202973">"Baterija"</string>
<string name="clock" msgid="7416090374234785905">"Sat"</string>
<string name="headset" msgid="4534219457597457353">"Slušalice s mikrofonom"</string>
@@ -853,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Idi na preglednik"</string>
<string name="mobile_data" msgid="7094582042819250762">"Prijenos podataka"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"WiFi veza je isključena"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth je isključen"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Način rada Ne ometaj je isključen"</string>
@@ -882,39 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Postavke"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Razumijem"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Izdvoji SysUI mem."</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> koristi <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikacije koriste <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"U upotrebi:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija koristi <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplikacije koriste <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija koristi <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Razumijem"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Postavke privatnosti"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacija koristi odobrenja <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije koriste odobrenja <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" i "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kameru"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokaciju"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> druga aplikacija​</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> druge aplikacije​</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> drugih aplikacija​</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori su isključeni"</string>
<string name="device_services" msgid="1191212554435440592">"Usluge uređaja"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez naslova"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Dodirnite da ponovo pokrenete ovu aplikaciju i aktivirate prikaz preko cijelog ekrana."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvori aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvaranje postavki obavještenja za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Omogućiti mjehuriće iz ove aplikacije?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokiraj"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Postavke za mjehuriće aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Dozvoliti mjehuriće iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Odbij"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Dozvoli"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Pitaj me kasnije"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> od aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"Obavještenje <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g> i još <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Pomjeri"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Pomjeri gore lijevo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Pomjerite gore desno"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Pomjeri dolje lijevo"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Pomjerite dolje desno"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 0703954246ba..ce683ef52760 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Fes servir el carregador original del dispositiu"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Configuració"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Vols activar l\'estalvi de bateria?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Sobre la funció Estalvi de bateria"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activa"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activa l\'estalvi de bateria"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configuració"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"L\'usuari que té iniciada la sessió al dispositiu en aquest moment no pot activar la depuració per USB. Per utilitzar aquesta funció, cal canviar a l\'usuari principal."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"El port USB està desactivat"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Per protegir el teu dispositiu dels líquids o la pols, el port USB s\'ha desactivat i no detectarà cap accessori.\n\nRebràs una notificació quan sigui segur utilitzar-lo."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"S\'ha activat el port USB per detectar carregadors i accessoris"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Activa l\'USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom per omplir pantalla"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estira per omplir pant."</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de pantalla"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloqueja sense utilitzar l\'empremta digital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"S\'està escanejant la cara"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Envia"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestiona les notificacions"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloqueja"</string>
<string name="phone_label" msgid="2320074140205331708">"obre el telèfon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"obre l\'assistència per veu"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Dades mòbils"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Dades mòbils activades"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"S\'han desactivat les dades mòbils"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"No s\'ha definit per utilitzar dades"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desactivades"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Compartició de xarxa per Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode d\'avió."</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"S\'ha activat el Mode d\'avió."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silenci total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"només alarmes"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"No molestis."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"S\'ha desactivat el mode No molestis."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"S\'ha activat el mode No molestis."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivat."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activat."</string>
@@ -279,6 +277,7 @@
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> notificacions més a l\'interior.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> notificació més a l\'interior.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configuració de les notificacions"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configuració de l\'aplicació <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girarà automàticament."</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Estalvi de pantalla"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Mantén premudes les icones per veure més opcions"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"No molestis"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Només amb prioritat"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Només alarmes"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silenci total"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"S\'ha activat l\'estalvi de bateria"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Redueix el rendiment i l\'ús de les dades en segon pla."</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desactiva l\'estalvi de bateria"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Quan graves o emets vídeos, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pot capturar informació sensible, com ara l\'àudio que estiguis reproduint, contrasenyes, dades de pagament, fotos i missatges."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Es mostra informació sensible durant l\'emissió o la gravació"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"No ho tornis a mostrar"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Esborra-ho tot"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gestió"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Configuració del so"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Amplia"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Replega"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtítols automàtics"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tanca el consell sobre subtítols"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Canvia el dispositiu de sortida"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"La pantalla està fixada"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Aquest element es continuarà mostrant fins que deixis de fixar-lo. Per fer-ho, toca i mantén premudes els botons Enrere i Aplicacions recents."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Aquestes notificacions t\'enviaran una alerta"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Normalment ignores aquestes notificacions. \nVols que es continuïn mostrant?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Fet"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplica"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Vols continuar rebent aquestes notificacions?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Deixa d\'enviar notificacions"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Envia de manera silenciosa"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloqueja"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continua rebent"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimitza"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostra de manera silenciosa"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"En silenci"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Continua silenciant"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Emergents"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continua avisant-me"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desactiva les notificacions"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vols continuar rebent notificacions d\'aquesta aplicació?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Les notificacions bloquejades no es mostraran enlloc ni reproduiran cap so. Pots desbloquejar-les a Configuració."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Les notificacions silenciades es mostraran a l\'àrea de notificacions, però no ho faran a la pantalla de bloqueig, ni en forma d\'avís ni amb so."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Aquestes notificacions emetran un so i es mostraran al tauler de notificacions, a la barra d\'estat i a la pantalla de bloqueig"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Aquestes notificacions no es poden desactivar"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Aquest grup de notificacions no es pot configurar aquí"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"mitjançant <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Aquesta aplicació utilitza la càmera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Aquesta aplicació utilitza el micròfon."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendari"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostra amb els controls de volum"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"No molestis"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Drecera per als botons de volum"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Surt del mode No molestis apujant el volum"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Rellotge"</string>
<string name="headset" msgid="4534219457597457353">"Auriculars"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ves al navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Dades mòbils"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"La Wi-Fi està desactivada"</string>
<string name="bt_is_off" msgid="2640685272289706392">"El Bluetooth està desactivat"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"El mode No molestis està desactivat"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Aboca espai de SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> està fent servir el següent: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Algunes aplicacions estan fent servir el següent: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"D\'acord"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. de privadesa"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicació que fa servir: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicacions que fan servir: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" i "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"càmera"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors desactivats"</string>
<string name="device_services" msgid="1191212554435440592">"Serveis per a dispositius"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sense títol"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Toca per reiniciar l\'aplicació i passar a pantalla completa."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Obre <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Configuració de les bombolles: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Vols permetre les bombolles de l\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Denega"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permet"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Pregunta-m\'ho més tard"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de: <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (<xliff:g id="APP_NAME">%2$s</xliff:g>) i <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> més"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mou"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mou a dalt a l\'esquerra"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mou a dalt a la dreta"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mou a baix a l\'esquerra"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mou a baix a la dreta"</string>
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 0b10d79408c7..1ba20c2b8e3e 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Používejte originální nabíječku, která byla dodána spolu se zařízením."</string>
<string name="battery_low_why" msgid="4553600287639198111">"Nastavení"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Zapnout spořič baterie?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Informace o spořiči baterie"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Zapnout"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Zapnout spořič baterie"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nastavení"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout ladění přes USB. Chcete-li tuto funkci použít, přepněte na primárního uživatele."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Port USB je deaktivován"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Kvůli ochraně vašeho zařízení před tekutinami a nečistotami je port USB zakázán a nerozpozná žádné příslušenství.\n\nAž bude opět bezpečné port USB použít, budeme vás informovat."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Port USB může zjišťovat nabíječky a příslušenství"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Aktivovat USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Přiblížit na celou obrazovku"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Na celou obrazovku"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Snímek obrazovky"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Odemknout bez otisku prstu"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skenování obličeje"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Odeslat"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Spravovat oznámení"</string>
<string name="unlock_label" msgid="8779712358041029439">"odemknout"</string>
<string name="phone_label" msgid="2320074140205331708">"otevřít telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"otevřít hlasovou asistenci"</string>
<string name="camera_label" msgid="7261107956054836961">"spustit fotoaparát"</string>
<string name="cancel" msgid="6442560571259935130">"Zrušit"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Oblast pro zprávu nápovědy"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Potvrdit"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Zkusit znovu"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Dotkněte se snímače otisků prstů"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobilní data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobilní data jsou zapnuta"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobilní data jsou vypnuta"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nenastaveno k využití dat"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Vypnuto"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Sdílené připojení přes Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim Letadlo."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Režim Letadlo je zapnutý."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"úplné ticho"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"pouze budíky"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nerušit."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Stav Nerušit je vypnutý"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Stav Nerušit je zapnutý."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Nerušit."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Režim Nerušit je vypnutý."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Režim Nerušit je zapnutý."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Rozhraní Bluetooth je vypnuto."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Rozhraní Bluetooth je zapnuto."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktivní žádosti o polohu"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Vymazat všechna oznámení."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"a ještě <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="few">Skupina obsahuje ještě <xliff:g id="NUMBER_1">%s</xliff:g> oznámení.</item>
<item quantity="many">Skupina obsahuje ještě <xliff:g id="NUMBER_1">%s</xliff:g> oznámení.</item>
<item quantity="other">Skupina obsahuje ještě <xliff:g id="NUMBER_1">%s</xliff:g> oznámení.</item>
<item quantity="one">Skupina obsahuje ještě <xliff:g id="NUMBER_0">%s</xliff:g> oznámení.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Nastavení oznámení"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Nastavení aplikace <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka se automaticky otočí."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Spořič obrazovky"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Podržením ikon zobrazíte další možnosti"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Nerušit"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Nerušit"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Pouze prioritní"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Pouze budíky"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Úplné ticho"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Spořič baterie je zapnutý"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Omezuje výkon a data na pozadí"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Vypnout spořič baterie"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> začne zaznamenávat vše na obrazovce, včetně oznámení, hesel, fotek, zpráv a platebních údajů."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Povolit aplikaci <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> nahrávat nebo odesílat obrazovku?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Při nahrávání nebo odesílání může <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> zachytit citlivé údaje, např. přehrávanou hudbu, zadávaná hesla a platební údaje, fotky nebo zprávy."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Zobrazení citlivých údajů při nahrávání/odesílání"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Tuto zprávu příště nezobrazovat"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Smazat vše"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Spravovat"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Nastavení zvuku"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozbalit"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sbalit"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatické titulky k médiím"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tip k titulkům"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Přepnout zařízení pro výstup"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Obrazovka je připnuta"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Obsah bude připnut v zobrazení, dokud jej neuvolníte. Uvolníte jej stisknutím a podržením tlačítek Zpět a Přehled."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Tato oznámení vás upozorní"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Tato oznámení obvykle odmítáte. \nChcete je nadále zobrazovat?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Hotovo"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Použít"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Mají se tato oznámení nadále zobrazovat?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Přestat zobrazovat oznámení"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Zobrazovat tiše"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokovat"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Nadále zobrazovat"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimalizovat"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Zobrazovat tiše"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Nenápadná"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Nadále bez zvuku"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Upozornit"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Rušivá"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Dál upozorňovat"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Vypnout oznámení"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Mají se oznámení z této aplikace nadále zobrazovat?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokovaná oznámení se nezobrazují ani nevydávají zvuky. Oznámení můžete odblokovat v nastavení."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Tichá oznámení se zobrazí na panelu oznámení, ale nezobrazí se na obrazovce uzamčení, nezobrazí banner ani nepřehrají zvuk."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Tato oznámení vás upozorní pomocí zvuku a zobrazí se na panelu oznámení, stavovém řádku a obrazovce uzamčení"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Tato oznámení nelze deaktivovat"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"prostřednictvím aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Tato aplikace využívá fotoaparát."</string>
<string name="appops_microphone" msgid="741508267659494555">"Tato aplikace využívá mikrofon."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendář"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Zobrazit včetně ovládacích prvků hlasitosti"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Nerušit"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Nerušit"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Zkratka tlačítek hlasitosti"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Při zvýšení hlasitosti ukončit režim Nerušit"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Při zvýšení hlasitosti ukončit režim Nerušit"</string>
<string name="battery" msgid="7498329822413202973">"Baterie"</string>
<string name="clock" msgid="7416090374234785905">"Hodiny"</string>
<string name="headset" msgid="4534219457597457353">"Sluchátka"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Přejít do prohlížeče"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilní data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi je vypnuta"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth je vypnuto"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Režim Nerušit je vypnut"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Nastavení"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Rozumím"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Výpis haldy SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikace</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikace</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikací</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplikace</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Aplikace <xliff:g id="APP">%1$s</xliff:g> využívá tato oprávnění: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikace využívají tato oprávnění: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Používané:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplikace využívají tato oprávnění: <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="many"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikace využívá tato oprávnění: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikací využívá tato oprávnění: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikace využívá tato oprávnění: <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Rozumím"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Nastavení soukromí"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikace používající vaše údaje: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikace používající vaše údaje: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" a "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"fotoaparát"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"poloha"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> další aplikace​</item>
- <item quantity="many"><xliff:g id="NUM_APPS_1">%d</xliff:g> další aplikace​</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> dalších aplikací​</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> dalších aplikací</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzory jsou vypnuty"</string>
<string name="device_services" msgid="1191212554435440592">"Služby zařízení"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez názvu"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Klepnutím aplikaci restartujete a přejdete na režim celé obrazovky"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otevřít <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otevřít nastavení oznámení aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Povolit aplikaci zobrazovat bubliny?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokovat"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Nastavení bublin aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Povolit bubliny z aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Zakázat"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Povolit"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Zeptat se později"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"Oznámení <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> z aplikace <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> z aplikace <xliff:g id="APP_NAME">%2$s</xliff:g> a dalších (<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>)"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Přesunout"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Přesunout vlevo nahoru"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Přesunout vpravo nahoru"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Přesunout vlevo dolů"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Přesunout vpravo dolů"</string>
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 9d8631cc87f0..c861c4f8b0de 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Brug den oplader, der fulgte med din enhed"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Indstillinger"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Vil du aktivere Batterisparefunktion?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Om Batterisparefunktion"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktivér"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Aktivér batterisparefunktion"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Indstillinger"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Den bruger, der i øjeblikket er logget ind på denne enhed, kan ikke aktivere USB-fejlretning. Skift til den primære bruger for at bruge denne funktion."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-porten er deaktiveret"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB-porten er blevet deaktiveret for at beskytte din enhed mod væske og snavs. Den kan derfor ikke registrere noget tilbehør.\n\nDu får besked, når det er sikkert at bruge USB-porten igen."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-porten er aktiveret for at registrere opladere og tilbehør"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Aktivér USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom til fuld skærm"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stræk til fuld skærm"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Lås op uden at bruge dit fingeraftryk"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scanner ansigt"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Administrer notifikationer"</string>
<string name="unlock_label" msgid="8779712358041029439">"lås op"</string>
<string name="phone_label" msgid="2320074140205331708">"åbn telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"åbn taleassistent"</string>
<string name="camera_label" msgid="7261107956054836961">"åbn kamera"</string>
<string name="cancel" msgid="6442560571259935130">"Annuller"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Område med hjælpemeddelelse"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Bekræft"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Prøv igen"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Sæt fingeren på fingeraftrykslæseren"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobildata"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobildata er aktiveret"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobildata er deaktiveret"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ikke indstillet til at anvende data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Fra"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-netdeling."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Flytilstand."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Flytilstand er slået til."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"total stilhed"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"kun alarmer"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Forstyr ikke."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Forstyr ikke\" er slået fra."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Forstyr ikke\" er slået til."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Forstyr ikke."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Forstyr ikke er slået fra."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Forstyr ikke er slået til."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth er slået fra."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth er slået til."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktive placeringsanmodninger"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ryd alle notifikationer."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> mere"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> notifikation mere i gruppen.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> notifikationer mere i gruppen.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notifikationsindstillinger"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Indstillinger for <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skærmen roterer automatisk."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Pauseskærm"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Hold ikonerne nede for at se flere valgmuligheder"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Forstyr ikke"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Forstyr ikke"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Kun prioritet"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Kun alarmer"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Total stilhed"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Batterisparefunktion er aktiveret"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reducerer ydeevne og baggrundsdata"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Deaktiver batterisparefunktion"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> går i gang med at optage alt på din skærm, bl.a. notifikationer, adgangskoder, billeder, beskeder og betalingsoplysninger."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Vil du tillade, at <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> optager eller caster din skærm?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Mens der optages eller castes kan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> registrere alle følsomme oplysninger såsom lyd, som du afspiller, og dine adgangskoder, betalingsoplysninger, billeder og beskeder."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Følsomme oplysninger vises, mens der castes/optages"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Vis ikke igen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Ryd alt"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Administrer"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Lydindstillinger"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Udvid"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skjul"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Undertekster til medier"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Luk tip til undertekster"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Skift enhed til lydudgang"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skærmen er fastgjort"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Dette fastholder skærmen i visningen, indtil du frigør den. Tryk på Tilbage og Overblik, og hold fingeren nede for at frigøre skærmen."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Disse notifikationer underretter dig"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Du afviser som regel disse notifikationer. \nVil du blive ved med at se dem?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Udfør"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Anvend"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Vil du fortsætte med at se disse notifikationer?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stop notifikationer"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Vis lydløst"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloker"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Fortsæt med at vise notifikationer"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimer"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Vis lydløst"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Diskret"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Fortsæt med lydløse notifikationer"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Underret mig"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Forstyrrende"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Fortsæt med at underrette"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Deaktiver notifikationer"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vil du fortsætte med at se notifikationer fra denne app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokerede notifikationer vises ikke nogen steder og afspiller ikke nogen lyd. Du kan fjerne blokeringen af notifikationer i indstillingerne."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Lydløse notifikationer vises i underretningspanelet, men de vises ikke på låseskærmen eller via et banner, og de afspiller ingen lyd."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Når du modtager disse notifikationer, kan du høre en lyd og se dem i notifikationsskuffen, i statusbjælken og på låseskærmen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Disse notifikationer kan ikke deaktiveres"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Du kan ikke konfigurere denne gruppe notifikationer her"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Denne app anvender kameraet."</string>
<string name="appops_microphone" msgid="741508267659494555">"Denne app anvender mikrofonen."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Vis med lydstyrkeregulering"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Forstyr ikke"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Forstyr ikke"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Genvej til lydstyrkeknapper"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Afslut Forstyr ikke med Lydstyrke op"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Afslut Forstyr ikke med Lydstyrke op"</string>
<string name="battery" msgid="7498329822413202973">"Batteri"</string>
<string name="clock" msgid="7416090374234785905">"Ur"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Gå til en browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobildata"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi er slået fra"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth er slået fra"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Forstyr ikke er slået fra"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Indstillinger"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Gem SysUI-heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> anvender enhedens <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Apps anvender enhedens <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"I brug:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> app anvender din/dit <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> apps anvender din/dit <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privatlivsindstill."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App, der anvender din/dit <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps, der anvender din/dit <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" og "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"placering"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> anden app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> andre apps​</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Deaktiver sensorer"</string>
<string name="device_services" msgid="1191212554435440592">"Enhedstjenester"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ingen titel"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tryk for at genstarte denne app, og gå til fuld skærm."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Åbn <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Åbn notifikationsindstillingerne for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Vil du tillade bobler fra denne app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloker"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Indstillinger for <xliff:g id="APP_NAME">%1$s</xliff:g>-bobler"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Vil du tillade bobler fra <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Afvis"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Tillad"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Spørg mig senere"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> fra <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> fra <xliff:g id="APP_NAME">%2$s</xliff:g> og <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> andre"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Flyt"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Flyt op til venstre"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Flyt op til højre"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Flyt ned til venstre"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Flyt ned til højre"</string>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 72e754481c14..c185d1cae1b9 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Verwende das mit dem Gerät gelieferte Ladegerät"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Einstellungen"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Energiesparmodus aktivieren?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Über den Energiesparmodus"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktivieren"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Energiesparmodus aktivieren"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Einstellungen"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Der momentan auf diesem Gerät angemeldete Nutzer kann das USB-Debugging nicht aktivieren. Um diese Funktion verwenden zu können, wechsle zum primären Nutzer."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-Port deaktiviert"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Zum Schutz deines Geräts vor Flüssigkeiten oder Fremdkörpern ist der USB-Port deaktiviert und erkennt kein Zubehör.\n\nDu wirst benachrichtigt, wenn der USB-Port wieder sicher verwendet werden kann."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Erkennung von Ladegeräten und Zubehör am USB-Port aktiviert"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB aktivieren"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom auf Bildschirmgröße"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Auf Bildschirmgröße anpassen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Ohne Verwendung des Fingerabdrucks entsperren"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Gesicht wird gescannt"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Senden"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Benachrichtigungen verwalten"</string>
<string name="unlock_label" msgid="8779712358041029439">"Entsperren"</string>
<string name="phone_label" msgid="2320074140205331708">"Telefon öffnen"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"Sprachassistent öffnen"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobile Daten"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobile Datennutzung aktiviert"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobile Daten deaktiviert"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nicht für Datennutzung konfiguriert"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Aus"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-Tethering"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Flugmodus"</string>
@@ -227,12 +228,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Der Flugmodus ist aktiviert."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"lautlos"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"nur Wecker"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Nicht stören."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Bitte nicht stören\" deaktiviert."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Bitte nicht stören\" aktiviert"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth deaktiviert"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aktiviert"</string>
@@ -283,6 +281,7 @@
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> weitere Benachrichtigungen vorhanden.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> weitere Benachrichtigung vorhanden.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Benachrichtigungseinstellungen"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Einstellungen von <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Bildschirm wird automatisch gedreht."</string>
@@ -295,8 +294,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Bildschirmschoner"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Halte die Symbole gedrückt, um weitere Optionen zu sehen"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Bitte nicht stören"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Nur wichtige Unterbrechungen"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Nur Wecker"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Lautlos"</string>
@@ -447,10 +445,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Energiesparmodus ist aktiviert"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduzierung der Leistung und Hintergrunddaten"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Energiesparmodus deaktivieren"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Beim Aufnehmen oder Streamen kann <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> sensible Informationen wie beispielsweise wiedergegebenes Audio oder auch deine Passwörter, Zahlungsinformationen, Fotos und Nachrichten erfassen."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Beim Streamen/Aufzeichnen werden sensible Daten zugänglich gemacht"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Nicht mehr anzeigen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Alle löschen"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Verwalten"</string>
@@ -525,10 +521,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Toneinstellungen"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Maximieren"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minimieren"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Medien autom. untertiteln"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Untertitelinfo schließen"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Ausgabegerät wechseln"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Bildschirm ist fixiert"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Der Bildschirm bleibt so lange eingeblendet, bis du die Fixierung aufhebst. Berühre und halte dazu \"Zurück\" und \"Übersicht\"."</string>
@@ -537,7 +531,7 @@
<string name="screen_pinning_description_recents_invisible_accessible" msgid="6134833683151189507">"Der Bildschirm wird so lange angezeigt, bis du die Fixierung aufhebst. Berühre und halte dazu \"Startbildschirm\"."</string>
<string name="screen_pinning_toast" msgid="2266705122951934150">"Um die Fixierung für diesen Bildschirm aufzuheben, berühre und halte \"Zurück\" und \"Übersicht\""</string>
<string name="screen_pinning_toast_recents_invisible" msgid="8252402309499161281">"Um die Fixierung für diesen Bildschirm aufzuheben, berühre und halte \"Zurück\" und \"Startbildschirm\""</string>
- <string name="screen_pinning_positive" msgid="3783985798366751226">"OK"</string>
+ <string name="screen_pinning_positive" msgid="3783985798366751226">"Ok"</string>
<string name="screen_pinning_negative" msgid="3741602308343880268">"Nein danke"</string>
<string name="screen_pinning_start" msgid="1022122128489278317">"Bildschirm fixiert"</string>
<string name="screen_pinning_exit" msgid="5187339744262325372">"Fixierung für Bildschirm aufgehoben"</string>
@@ -601,7 +595,7 @@
<string name="tuner_warning_title" msgid="7094689930793031682">"Für einige ein Vergnügen, aber nicht für alle"</string>
<string name="tuner_warning" msgid="8730648121973575701">"Mit System UI Tuner erhältst du zusätzliche Möglichkeiten, die Android-Benutzeroberfläche anzupassen. Achtung: Diese Testfunktionen können sich ändern, abstürzen oder in zukünftigen Versionen verschwinden."</string>
<string name="tuner_persistent_warning" msgid="8597333795565621795">"Achtung: Diese Testfunktionen können sich ändern, abstürzen oder in zukünftigen Versionen verschwinden."</string>
- <string name="got_it" msgid="2239653834387972602">"OK"</string>
+ <string name="got_it" msgid="2239653834387972602">"Ok"</string>
<string name="tuner_toast" msgid="603429811084428439">"Herzlichen Glückwunsch! System UI Tuner wurde \"Einstellungen\" hinzugefügt."</string>
<string name="remove_from_settings" msgid="8389591916603406378">"Aus \"Einstellungen\" entfernen"</string>
<string name="remove_from_settings_prompt" msgid="6069085993355887748">"System UI Tuner aus \"Einstellungen\" entfernen und die Verwendung von allen zugehörigen Funktionen beenden?"</string>
@@ -629,27 +623,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Diese Benachrichtigungen werden als Warnungen angezeigt"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Normalerweise schließt du diese Benachrichtigungen. \nSollen sie trotzdem weiter angezeigt werden?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Fertig"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Anwenden"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Diese Benachrichtigungen weiterhin anzeigen?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Benachrichtigungen nicht mehr anzeigen"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Ohne Ton zustellen"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blockieren"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Weiterhin anzeigen"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimieren"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Ohne Ton anzeigen"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Stumm"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Weiter lautlos bleiben"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Pop-up"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Weiterhin Benachrichtigungen senden"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Benachrichtigungen deaktivieren"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Benachrichtigungen dieser App weiterhin anzeigen?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Blockierte Benachrichtigungen erscheinen nirgendwo und spielen auch kein Tonsignal ab. Du kannst das Blockieren von Benachrichtigungen jedoch in den Einstellungen deaktivieren."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Lautlose Benachrichtigungen erscheinen unterlegt, jedoch nicht auf dem Sperrbildschirm, zeigen kein Banner an und geben kein Tonsignal wieder."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Diese Benachrichtigungen werden mit einem Ton angekündigt. Außerdem werden sie in der Benachrichtigungsleiste, Statusleiste und auf dem Sperrbildschirm angezeigt."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Diese Benachrichtigungen können nicht deaktiviert werden"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"über <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Diese App verwendet die Kamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Diese App verwendet das Mikrofon."</string>
@@ -659,7 +650,7 @@
<string name="appops_mic_overlay" msgid="4835157962857919804">"Diese App wird über anderen Apps auf dem Bildschirm angezeigt und verwendet das Mikrofon."</string>
<string name="appops_camera_mic_overlay" msgid="6718768197048030993">"Diese App wird über anderen Apps auf dem Bildschirm angezeigt und verwendet das Mikrofon und die Kamera."</string>
<string name="notification_appops_settings" msgid="1028328314935908050">"Einstellungen"</string>
- <string name="notification_appops_ok" msgid="1156966426011011434">"OK"</string>
+ <string name="notification_appops_ok" msgid="1156966426011011434">"Ok"</string>
<string name="notification_channel_controls_opened_accessibility" msgid="6553950422055908113">"Benachrichtigungseinstellungen für <xliff:g id="APP_NAME">%1$s</xliff:g> geöffnet"</string>
<string name="notification_channel_controls_closed_accessibility" msgid="7521619812603693144">"Benachrichtigungseinstellungen für <xliff:g id="APP_NAME">%1$s</xliff:g> geschlossen"</string>
<string name="notification_channel_switch_accessibility" msgid="3420796005601900717">"Benachrichtigungen von diesem Kanal zulassen"</string>
@@ -728,11 +719,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Einschließlich Lautstärkeregler anzeigen"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Bitte nicht stören"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Tastenkombination für Lautstärketasten"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"\"Bitte nicht stören\" bei \"Lauter\" deaktivieren"</string>
<string name="battery" msgid="7498329822413202973">"Akku"</string>
<string name="clock" msgid="7416090374234785905">"Uhr"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -873,6 +862,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Browser öffnen"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobile Daten"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"WLAN ist deaktiviert"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth ist deaktiviert"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"Bitte nicht stören\" ist deaktiviert"</string>
@@ -900,14 +890,10 @@
<string name="auto_saver_enabled_title" msgid="6726474226058316862">"Geplanter Energiesparmodus aktiviert"</string>
<string name="auto_saver_enabled_text" msgid="874711029884777579">"Der Energiesparmodus wird bei einem Akkustand von <xliff:g id="PERCENTAGE">%d</xliff:g> %% automatisch aktiviert."</string>
<string name="open_saver_setting_action" msgid="8314624730997322529">"Einstellungen"</string>
- <string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
+ <string name="auto_saver_okay_action" msgid="2701221740227683650">"Ok"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> verwendet gerade Folgendes: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Apps verwenden gerade Folgendes: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Datenschutzeinst."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App, die <xliff:g id="TYPES_LIST">%s</xliff:g> verwendet"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps, die <xliff:g id="TYPES_LIST">%s</xliff:g> verwenden"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" und "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"Kamera"</string>
@@ -916,30 +902,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensoren aus"</string>
<string name="device_services" msgid="1191212554435440592">"Gerätedienste"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Kein Titel"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Tippe, um die App im Vollbildmodus neu zu starten."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> öffnen"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Einstellungen für <xliff:g id="APP_NAME">%1$s</xliff:g>-Infofelder"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Infofelder von <xliff:g id="APP_NAME">%1$s</xliff:g> zulassen?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Ablehnen"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Zulassen"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Später fragen"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> von <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> aus <xliff:g id="APP_NAME">%2$s</xliff:g> und <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> weiteren"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Verschieben"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Nach oben links verschieben"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Nach rechts oben verschieben"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Nach unten links verschieben"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Nach unten rechts verschieben"</string>
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index aab426e16a2c..c5fc1263a01d 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Χρησιμοποιήστε τον φορτιστή που συνοδεύει τη συσκευή σας"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Ρυθμίσεις"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Να ενεργοποιηθεί η Εξοικονόμηση μπαταρίας;"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Σχετικά με την Εξοικονόμηση μπαταρίας"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ενεργοποίηση"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Ενεργοποίηση Εξοικονόμησης μπαταρίας"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ρυθμίσεις"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Ο χρήστης που είναι συνδεδεμένος αυτήν τη στιγμή σε αυτήν τη συσκευή δεν μπορεί να ενεργοποιήσει τον εντοπισμό σφαλμάτων USB. Για να χρησιμοποιήσετε αυτήν τη λειτουργία, κάντε εναλλαγή στον κύριο χρήστη."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Η θύρα USB απενεργοποιήθηκε"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Για την προστασία της συσκευής σας από υγρασία ή ακαθαρσίες, η θύρα USB έχει απενεργοποιηθεί και δεν θα εντοπίζει τυχόν αξεσουάρ.\n\nΘα ειδοποιηθείτε όταν μπορείτε να χρησιμοποιήσετε ξανά με ασφάλεια τη θύρα USB."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Η θύρα USB ενεργοποιήθηκε για τον εντοπισμό φορτιστών και αξεσουάρ"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Ενεργοποίηση USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Ζουμ σε πλήρη οθόνη"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Προβoλή σε πλήρη οθ."</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Στιγμιότυπο οθόνης"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Ξεκλείδωμα χωρίς τη χρήση του μοναδικού χαρακτηριστικού σας"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Σάρωση προσώπου"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Αποστολή"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Διαχείριση ειδοποιήσεων"</string>
<string name="unlock_label" msgid="8779712358041029439">"ξεκλείδωμα"</string>
<string name="phone_label" msgid="2320074140205331708">"άνοιγμα τηλεφώνου"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"άνοιγμα φωνητικής υποβοήθησης"</string>
<string name="camera_label" msgid="7261107956054836961">"άνοιγμα φωτογραφικής μηχανής"</string>
<string name="cancel" msgid="6442560571259935130">"Ακύρωση"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Περιοχή μηνυμάτων βοήθειας"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Επιβεβαίωση"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Δοκιμάστε ξανά"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Δεδομένα κινητής τηλεφωνίας"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Τα δεδομένα κινητής τηλεφωνίας ενεργοποιήθηκαν"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Τα δεδομένα κινητής τηλεφωνίας απενεργοποιήθηκαν"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Δεν ρυθμίστηκε ώστε να χρησιμοποιεί δεδομένα"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Ανενεργά"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Πρόσδεση Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Λειτουργία πτήσης."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Ενεργή λειτουργία πτήσης."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"πλήρης σίγαση"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"μόνο ξυπνητήρια"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Μην ενοχλείτε."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Η λειτουργία \"Μην ενοχλείτε\" απενεργοποιήθηκε."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Η λειτουργία \"Μην ενοχλείτε\" ενεργοποιήθηκε."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Μην ενοχλείτε."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Η λειτουργία Μην ενοχλείτε απενεργοποιήθηκε."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Η λειτουργία Μην ενοχλείτε ενεργοποιήθηκε."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Ανενεργό Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Ενεργό Bluetooth."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Τα αιτήματα τοποθεσίας έχουν ενεργοποιηθεί"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Διαγραφή όλων των ειδοποιήσεων."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> επιπλέον ειδοποιήσεις εντός της ομάδας.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> επιπλέον ειδοποίηση εντός της ομάδας.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ρυθμίσεις ειδοποιήσεων"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Ρυθμίσεις <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Θα γίνεται αυτόματη περιστροφή της οθόνης."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Προφύλαξη οθόνης"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Αγγίξτε παρατεταμένα τα εικονίδια, για να δείτε περισσότερες επιλογές"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Μην ενοχλείτε"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Μην ενοχλείτε"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Μόνο προτεραιότητας"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Μόνο ειδοποιήσεις"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Πλήρης σίγαση"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Η Εξοικονόμηση μπαταρίας είναι ενεργή"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Μειώνει την απόδοση και τα δεδομένα παρασκηνίου"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Απενεργοποίηση Εξοικονόμησης μπαταρίας"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Το <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> θα ξεκινήσει τη λήψη όλου του περιεχομένου της οθόνης σας, συμπεριλαμβανομένων ειδοποιήσεων, κωδικών πρόσβασης, φωτογραφιών, μηνυμάτων και στοιχείων πληρωμής."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Να επιτρέπεται στο <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> η εγγραφή ή μετάδοση της οθόνης σας;"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Κατά την εγγραφή ή τη μετάδοση, η εφαρμογή <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> μπορεί να καταγράφει τυχόν ευαίσθητες πληροφορίες, όπως ήχο του οποίου γίνεται αναπαραγωγή και τους κωδικούς πρόσβασής σας, τα στοιχεία πληρωμής, τις φωτογραφίες και τα μηνύματα."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Έκθεση ευαίσθητων πληροφοριών κατά τη μετάδοση/εγγραφή"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Να μην εμφανιστεί ξανά"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Διαγραφή όλων"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Διαχείριση"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ρυθμίσεις ήχου"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Ανάπτυξη"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Σύμπτυξη"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Αυτόματοι υπότιτλοι στο μέσο"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Συμβουλή υπότιτλων"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Εναλλαγή συσκευής εξόδου"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Η οθόνη καρφιτσώθηκε"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Με αυτόν τον τρόπο παραμένει σε προβολή μέχρι να το ξεκαρφιτσώσετε. Αγγίξτε παρατεταμένα τα στοιχεία \"Επιστροφή\" και \"Επισκόπηση\" για ξεκαρφίτσωμα."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Αυτές οι ειδοποιήσεις θα σας ενημερώνουν"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Συνήθως απορρίπτετε αυτές τις ειδοποιήσεις. \nΝα εξακολουθήσουν να εμφανίζονται;"</string>
<string name="inline_done_button" msgid="492513001558716452">"Τέλος"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Εφαρμογή"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Να συνεχίσουν να εμφανίζονται αυτές οι ειδοποιήσεις;"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Διακοπή ειδοποιήσεων"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Παράδοση σιωπηλά"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Αποκλεισμός"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Συνέχιση εμφάνισης"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Ελαχιστοποίηση"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Εμφάνιση σιωπηλά"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Διακριτικές"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Διατήρηση σε σίγαση"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Να ειδοποιούμαι"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Παρεμβατικές"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Να συνεχιστούν οι ειδοποιήσεις"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Απενεργοποίηση ειδοποιήσεων"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Να συνεχίσουν να εμφανίζονται ειδοποιήσεις από αυτήν την εφαρμογή;"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Οι αποκλεισμένες ειδοποιήσεις δεν εμφανίζονται πουθενά και δεν ενεργοποιούν αναπαραγωγή ήχου. Μπορείτε να καταργήσετε τον αποκλεισμό των ειδοποιήσεων στις ρυθμίσεις."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Οι ειδοποιήσεις σε σίγαση εμφανίζονται στο πλαίσιο σκίασης, όχι όμως στην οθόνη κλειδώματος, εμφανίζεται ένα banner και γίνεται αναπαραγωγή ήχου."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Αυτές οι ειδοποιήσεις θα παράγουν έναν ήχο και θα εμφανίζονται στο συρτάρι ειδοποιήσεων, στη γραμμή κατάστασης και στην οθόνη κλειδώματος"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Αδύνατη η απενεργοποίηση αυτών των ειδοποιήσεων"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"μέσω <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Αυτή η εφαρμογή χρησιμοποιεί την κάμερα."</string>
<string name="appops_microphone" msgid="741508267659494555">"Αυτή η εφαρμογή χρησιμοποιεί το μικρόφωνο."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Ημερολόγιο"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Εμφάνιση με στοιχεία ελέγχου έντασης ήχου"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Μην ενοχλείτε"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Μην ενοχλείτε"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Συντόμευση κουμπιών έντασης ήχου"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Απενεργοποίηση λειτουργίας \"Μην ενοχλείτε\" κατά την αύξηση της έντασης ήχου"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Απενεργοποίηση λειτ. Μην ενοχλείτε κατά την αύξηση έντασης"</string>
<string name="battery" msgid="7498329822413202973">"Μπαταρία"</string>
<string name="clock" msgid="7416090374234785905">"Ρολόι"</string>
<string name="headset" msgid="4534219457597457353">"Ακουστικά"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Μετάβ. σε πρόγ. περ."</string>
<string name="mobile_data" msgid="7094582042819250762">"Δεδομένα κινητής τηλεφωνίας"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Το Wi-Fi είναι ανενεργό"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Το Bluetooth είναι ανενεργό"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Η λειτουργία \"Μην ενοχλείτε\" είναι ανενεργή"</string>
@@ -870,41 +883,33 @@
<string name="auto_saver_title" msgid="1217959994732964228">"Πατήστε για προγραμματισμό της Εξοικονόμησης μπαταρίας"</string>
<string name="auto_saver_text" msgid="6324376061044218113">"Αυτόματη ενεργοποίηση όταν η στάθμη της μπαταρίας είναι στο <xliff:g id="PERCENTAGE">%d</xliff:g>%%"</string>
<string name="no_auto_saver_action" msgid="8086002101711328500">"Όχι, ευχαριστώ"</string>
- <string name="auto_saver_enabled_title" msgid="6726474226058316862">"Το χρονοδιάγραμμα της Εξοικονόμησης μπαταρίας ενεργοποιήθηκε"</string>
+ <string name="auto_saver_enabled_title" msgid="6726474226058316862">"Το πρόγραμμα της Εξοικονόμησης μπαταρίας ενεργοποιήθηκε"</string>
<string name="auto_saver_enabled_text" msgid="874711029884777579">"Η Εξοικονόμηση μπαταρίας θα ενεργοποιηθεί αυτόματα μόλις η στάθμη της μπαταρίας φτάσει κάτω από <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string>
<string name="open_saver_setting_action" msgid="8314624730997322529">"Ρυθμίσεις"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Το κατάλαβα"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Στιγμ. μνήμης SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> εφαρμογές</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> εφαρμογή</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> χρησιμοποιεί τις λειτουργίες <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Οι εφαρμογές χρησιμοποιούν τις λειτουργίες <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Σε χρήση:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> εφαρμογές χρησιμοποιούν το <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> εφαρμογή χρησιμοποιεί το <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Κατάλαβα"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Ρυθμίσεις απορρήτου"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Εφαρμογή που χρησιμοποιεί τις λειτουργίες <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Εφαρμογές που χρησιμοποιούν τις λειτουργίες <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" και "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"κάμερα"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"τοποθεσία"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"μικρόφωνο"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> εφαρμογές ακόμα</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> εφαρμογή ακόμα</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Αισθητήρες ανενεργοί"</string>
<string name="device_services" msgid="1191212554435440592">"Υπηρεσίες συσκευής"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Χωρίς τίτλο"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Πατήστε για επανεκκίνηση αυτής της εφαρμογής και ενεργοποίηση πλήρους οθόνης."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Άνοιγμα <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Άνοιγμα ρυθμίσεων ειδοποιήσεων για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Να επιτρέπονται συννεφάκια από αυτήν την εφαρμογή;"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Αποκλεισμός"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Ρυθμίσεις για συννεφάκια <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Να επιτρέπονται συννεφάκια από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>;"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Όχι"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Να επιτρέπεται"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Να ερωτηθώ αργότερα"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> από <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> από την εφαρμογή <xliff:g id="APP_NAME">%2$s</xliff:g> και <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ακόμη"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Μετακίνηση"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Μετακίνηση επάνω αριστερά"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Μετακίνηση επάνω δεξιά"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Μετακίνηση κάτω αριστερά"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Μετακίνηση κάτω δεξιά"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 1360b871237c..98d551ec95fc 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Use the charger that came with your device"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Settings"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Turn on Battery Saver?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"About Battery Saver"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Turn on"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Turn on Battery Saver"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Settings"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s safe to use the USB port again."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB port enabled to detect chargers and accessories"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Enable USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Unlock without using your fingerprint"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string>
<string name="unlock_label" msgid="8779712358041029439">"unlock"</string>
<string name="phone_label" msgid="2320074140205331708">"open phone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string>
<string name="camera_label" msgid="7261107956054836961">"open camera"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Help message area"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirm"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Try again"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Touch the fingerprint sensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobile data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobile data on"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobile data off"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Not set to use data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Off"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Aeroplane mode"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Aeroplane mode turned on."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"total silence"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarms only"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Do not disturb"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\'Do not disturb\' turned off."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\'Do not disturb\' turned on."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Do Not Disturb."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Do Not Disturb turned off."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Do Not Disturb turned on."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth off."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> more notifications inside.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> more notification inside.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Touch &amp; hold icons for more options"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Do not disturb"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Do Not Disturb"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Priority only"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarms only"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Total silence"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Battery Saver is on"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduces performance and background data"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Turn off Battery Saver"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> will start capturing everything on your screen including notifications, passwords, photos, messages and payment information."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Allow <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> to record or cast your screen?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"While recording or casting, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> can capture any sensitive information, such as audio that you play and your passwords, payment info, photos and messages."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposing sensitive info during casting/recording"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Don\'t show again"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Clear all"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Manage"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch &amp; hold Back and Overview to unpin."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"These notifications will alert you"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"You usually dismiss these notifications. \nKeep showing them?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Done"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Apply"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Keep showing these notifications?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stop notifications"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Deliver Silently"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Block"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Keep showing"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimise"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Show silently"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Gentle"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Stay silent"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Alert me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Interruptive"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Keep alerting"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Turn off notifications"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blocked notifications do not appear anywhere or play a sound. You can unblock notifications in settings."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Silent notifications appear in the shade, but do not appear on the lock screen, present a banner or play a sound."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"These notifications will make a sound and show in the notification drawer, status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"These notifications can\'t be turned off"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"This app is using the camera."</string>
<string name="appops_microphone" msgid="741508267659494555">"This app is using the microphone."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Show with volume controls"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Do not disturb"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Volume buttons shortcut"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Exit Do Not Disturb on volume up"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Exit Do Not Disturb on volume up"</string>
<string name="battery" msgid="7498329822413202973">"Battery"</string>
<string name="clock" msgid="7416090374234785905">"Clock"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Go to browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobile data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi is off"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth is off"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Do Not Disturb is off"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Settings"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> is using your <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Applications are using your <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"In use:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> applications are using your <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" and "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"camera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"location"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microphone"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> other apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> other app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tap to restart this app and go full screen."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Allow bubbles from this app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Block"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Settings for <xliff:g id="APP_NAME">%1$s</xliff:g> bubbles"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Allow bubbles from <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Deny"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Allow"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ask me later"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g> and <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> more"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Move"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Move top left"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Move top right"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Move bottom left"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Move bottom right"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 926b077fab79..d2fac3dda42a 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Use the charger that came with your device"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Settings"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Turn on Battery Saver?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"About Battery Saver"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Turn on"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Turn on Battery Saver"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Settings"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s safe to use the USB port again."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB port enabled to detect chargers and accessories"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Enable USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Unlock without using your fingerprint"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string>
<string name="unlock_label" msgid="8779712358041029439">"unlock"</string>
<string name="phone_label" msgid="2320074140205331708">"open phone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string>
<string name="camera_label" msgid="7261107956054836961">"open camera"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Help message area"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirm"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Try again"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Touch the fingerprint sensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobile data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobile data on"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobile data off"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Not set to use data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Off"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Airplane mode."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Airplane mode turned on."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"total silence"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarms only"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Do not disturb"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\'Do not disturb\' turned off."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\'Do not disturb\' turned on."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Do Not Disturb."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Do Not Disturb turned off."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Do Not Disturb turned on."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth off."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> more notifications inside.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> more notification inside.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Touch &amp; hold icons for more options"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Do not disturb"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Do Not Disturb"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Priority only"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarms only"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Total silence"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Battery Saver is on"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduces performance and background data"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Turn off Battery Saver"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> will start capturing everything on your screen including notifications, passwords, photos, messages and payment information."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Allow <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> to record or cast your screen?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"While recording or casting, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> can capture any sensitive information, such as audio that you play and your passwords, payment info, photos and messages."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposing sensitive info during casting/recording"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Don\'t show again"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Clear all"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Manage"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch &amp; hold Back and Overview to unpin."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"These notifications will alert you"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"You usually dismiss these notifications. \nKeep showing them?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Done"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Apply"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Keep showing these notifications?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stop notifications"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Deliver Silently"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Block"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Keep showing"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimise"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Show silently"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Gentle"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Stay silent"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Alert me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Interruptive"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Keep alerting"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Turn off notifications"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blocked notifications do not appear anywhere or play a sound. You can unblock notifications in settings."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Silent notifications appear in the shade, but do not appear on the lock screen, present a banner or play a sound."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"These notifications will make a sound and show in the notification drawer, status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"These notifications can\'t be turned off"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"This app is using the camera."</string>
<string name="appops_microphone" msgid="741508267659494555">"This app is using the microphone."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Show with volume controls"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Do not disturb"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Volume buttons shortcut"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Exit Do Not Disturb on volume up"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Exit Do Not Disturb on volume up"</string>
<string name="battery" msgid="7498329822413202973">"Battery"</string>
<string name="clock" msgid="7416090374234785905">"Clock"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Go to browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobile data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi is off"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth is off"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Do Not Disturb is off"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Settings"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> is using your <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Applications are using your <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"In use:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> applications are using your <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" and "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"camera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"location"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microphone"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> other apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> other app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tap to restart this app and go full screen."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Allow bubbles from this app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Block"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Settings for <xliff:g id="APP_NAME">%1$s</xliff:g> bubbles"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Allow bubbles from <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Deny"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Allow"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ask me later"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g> and <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> more"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Move"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Move top left"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Move top right"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Move bottom left"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Move bottom right"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 1360b871237c..98d551ec95fc 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Use the charger that came with your device"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Settings"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Turn on Battery Saver?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"About Battery Saver"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Turn on"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Turn on Battery Saver"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Settings"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s safe to use the USB port again."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB port enabled to detect chargers and accessories"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Enable USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Unlock without using your fingerprint"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string>
<string name="unlock_label" msgid="8779712358041029439">"unlock"</string>
<string name="phone_label" msgid="2320074140205331708">"open phone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string>
<string name="camera_label" msgid="7261107956054836961">"open camera"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Help message area"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirm"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Try again"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Touch the fingerprint sensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobile data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobile data on"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobile data off"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Not set to use data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Off"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Aeroplane mode"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Aeroplane mode turned on."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"total silence"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarms only"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Do not disturb"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\'Do not disturb\' turned off."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\'Do not disturb\' turned on."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Do Not Disturb."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Do Not Disturb turned off."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Do Not Disturb turned on."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth off."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> more notifications inside.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> more notification inside.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Touch &amp; hold icons for more options"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Do not disturb"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Do Not Disturb"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Priority only"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarms only"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Total silence"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Battery Saver is on"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduces performance and background data"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Turn off Battery Saver"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> will start capturing everything on your screen including notifications, passwords, photos, messages and payment information."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Allow <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> to record or cast your screen?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"While recording or casting, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> can capture any sensitive information, such as audio that you play and your passwords, payment info, photos and messages."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposing sensitive info during casting/recording"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Don\'t show again"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Clear all"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Manage"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch &amp; hold Back and Overview to unpin."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"These notifications will alert you"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"You usually dismiss these notifications. \nKeep showing them?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Done"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Apply"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Keep showing these notifications?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stop notifications"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Deliver Silently"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Block"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Keep showing"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimise"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Show silently"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Gentle"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Stay silent"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Alert me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Interruptive"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Keep alerting"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Turn off notifications"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blocked notifications do not appear anywhere or play a sound. You can unblock notifications in settings."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Silent notifications appear in the shade, but do not appear on the lock screen, present a banner or play a sound."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"These notifications will make a sound and show in the notification drawer, status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"These notifications can\'t be turned off"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"This app is using the camera."</string>
<string name="appops_microphone" msgid="741508267659494555">"This app is using the microphone."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Show with volume controls"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Do not disturb"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Volume buttons shortcut"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Exit Do Not Disturb on volume up"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Exit Do Not Disturb on volume up"</string>
<string name="battery" msgid="7498329822413202973">"Battery"</string>
<string name="clock" msgid="7416090374234785905">"Clock"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Go to browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobile data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi is off"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth is off"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Do Not Disturb is off"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Settings"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> is using your <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Applications are using your <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"In use:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> applications are using your <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" and "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"camera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"location"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microphone"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> other apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> other app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tap to restart this app and go full screen."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Allow bubbles from this app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Block"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Settings for <xliff:g id="APP_NAME">%1$s</xliff:g> bubbles"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Allow bubbles from <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Deny"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Allow"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ask me later"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g> and <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> more"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Move"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Move top left"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Move top right"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Move bottom left"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Move bottom right"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 1360b871237c..98d551ec95fc 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Use the charger that came with your device"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Settings"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Turn on Battery Saver?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"About Battery Saver"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Turn on"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Turn on Battery Saver"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Settings"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s safe to use the USB port again."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB port enabled to detect chargers and accessories"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Enable USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom to fill screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stretch to fill screen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Unlock without using your fingerprint"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string>
<string name="unlock_label" msgid="8779712358041029439">"unlock"</string>
<string name="phone_label" msgid="2320074140205331708">"open phone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string>
<string name="camera_label" msgid="7261107956054836961">"open camera"</string>
<string name="cancel" msgid="6442560571259935130">"Cancel"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Help message area"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirm"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Try again"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Touch the fingerprint sensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobile data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobile data on"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobile data off"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Not set to use data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Off"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Aeroplane mode"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Aeroplane mode turned on."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"total silence"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarms only"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Do not disturb"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\'Do not disturb\' turned off."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\'Do not disturb\' turned on."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Do Not Disturb."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Do Not Disturb turned off."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Do Not Disturb turned on."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth off."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Location requests active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Clear all notifications."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+<xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> more notifications inside.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> more notification inside.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Notification settings"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> settings"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Screen will rotate automatically."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Touch &amp; hold icons for more options"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Do not disturb"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Do Not Disturb"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Priority only"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarms only"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Total silence"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Battery Saver is on"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduces performance and background data"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Turn off Battery Saver"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> will start capturing everything on your screen including notifications, passwords, photos, messages and payment information."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Allow <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> to record or cast your screen?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"While recording or casting, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> can capture any sensitive information, such as audio that you play and your passwords, payment info, photos and messages."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposing sensitive info during casting/recording"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Don\'t show again"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Clear all"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Manage"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Sound settings"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expand"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch &amp; hold Back and Overview to unpin."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"These notifications will alert you"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"You usually dismiss these notifications. \nKeep showing them?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Done"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Apply"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Keep showing these notifications?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stop notifications"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Deliver Silently"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Block"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Keep showing"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimise"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Show silently"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Gentle"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Stay silent"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Alert me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Interruptive"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Keep alerting"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Turn off notifications"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Keep showing notifications from this app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blocked notifications do not appear anywhere or play a sound. You can unblock notifications in settings."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Silent notifications appear in the shade, but do not appear on the lock screen, present a banner or play a sound."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"These notifications will make a sound and show in the notification drawer, status bar and lock screen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"These notifications can\'t be turned off"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"This app is using the camera."</string>
<string name="appops_microphone" msgid="741508267659494555">"This app is using the microphone."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Show with volume controls"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Do not disturb"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Do Not Disturb"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Volume buttons shortcut"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Exit Do Not Disturb on volume up"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Exit Do Not Disturb on volume up"</string>
<string name="battery" msgid="7498329822413202973">"Battery"</string>
<string name="clock" msgid="7416090374234785905">"Clock"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Go to browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobile data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi is off"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth is off"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Do Not Disturb is off"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Settings"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> is using your <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Applications are using your <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"In use:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> applications are using your <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> application is using your <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Got it"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacy settings"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps using your <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" and "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"camera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"location"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microphone"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> other apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> other app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensors off"</string>
<string name="device_services" msgid="1191212554435440592">"Device Services"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"No title"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tap to restart this app and go full screen."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Open <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Open notification settings for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Allow bubbles from this app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Block"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Settings for <xliff:g id="APP_NAME">%1$s</xliff:g> bubbles"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Allow bubbles from <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Deny"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Allow"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ask me later"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> from <xliff:g id="APP_NAME">%2$s</xliff:g> and <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> more"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Move"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Move top left"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Move top right"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Move bottom left"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Move bottom right"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index e23236ac2244..2f76dd15b18c 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‏‎Use the charger that came with your device‎‏‎‎‏‎"</string>
<string name="battery_low_why" msgid="4553600287639198111">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‏‏‎Settings‎‏‎‎‏‎"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‎‎Turn on Battery Saver?‎‏‎‎‏‎"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‏‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‎‎‎‏‏‏‎‎‎About Battery Saver‎‏‎‎‏‎"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‎‎‏‎Turn on‎‏‎‎‏‎"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‏‎Turn on Battery Saver‎‏‎‎‏‎"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‏‎‎‎‎‎Settings‎‏‎‎‏‎"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‏‎‎‏‎The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user.‎‏‎‎‏‎"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎‎USB port disabled‎‏‎‎‏‎"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‎To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎You’ll be notified when it’s safe to use the USB port again.‎‏‎‎‏‎"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎USB port enabled to detect chargers and accessories‎‏‎‎‏‎"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‏‎‏‎‎‎‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‎‎‏‎Enable USB‎‏‎‎‏‎"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‎Zoom to fill screen‎‏‎‎‏‎"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‏‏‎‏‎‎Stretch to fill screen‎‏‎‎‏‎"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‏‏‎‏‎‏‏‎Screenshot‎‏‎‎‏‎"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‏‏‎‎Unlock without using your fingerprint‎‏‎‎‏‎"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎Scanning face‎‏‎‎‏‎"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎Send‎‏‎‎‏‎"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‏‏‎‏‏‎‏‏‏‎‎‏‎Manage notifications‎‏‎‎‏‎"</string>
<string name="unlock_label" msgid="8779712358041029439">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎unlock‎‏‎‎‏‎"</string>
<string name="phone_label" msgid="2320074140205331708">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‎‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‎open phone‎‏‎‎‏‎"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎‏‏‏‎‎open voice assist‎‏‎‎‏‎"</string>
<string name="camera_label" msgid="7261107956054836961">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‏‏‎‏‏‏‎‎‎‎‏‎open camera‎‏‎‎‏‎"</string>
<string name="cancel" msgid="6442560571259935130">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‏‎‎Cancel‎‏‎‎‏‎"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‏‏‎‏‏‏‏‏‎Help message area‎‏‎‎‏‎"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎Confirm‎‏‎‎‏‎"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‎Try again‎‏‎‎‏‎"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎‎‎‎‎‏‎Touch the fingerprint sensor‎‏‎‎‏‎"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎Mobile Data‎‏‎‎‏‎"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎Mobile Data On‎‏‎‎‏‎"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎‎‎‎Mobile data off‎‏‎‎‏‎"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‏‎‎‏‎‏‎‎‎Not set to use data‎‏‎‎‏‎"</string>
<string name="cell_data_off" msgid="1051264981229902873">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‏‎Off‎‏‎‎‏‎"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎Bluetooth tethering.‎‏‎‎‏‎"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‎‎‎Airplane mode.‎‏‎‎‏‎"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‎‎‎‏‏‎‎‎‎‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‎‎‎‎Airplane mode turned on.‎‏‎‎‏‎"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‏‏‎‎‏‎‏‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‏‏‏‎‎‎‏‎‏‎‏‏‏‎‎‎total silence‎‏‎‎‏‎"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎alarms only‎‏‎‎‏‎"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‎‏‎‏‏‏‎Do not disturb.‎‏‎‎‏‎"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎Do not disturb turned off.‎‏‎‎‏‎"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎Do not disturb turned on.‎‏‎‎‏‎"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎Do Not Disturb.‎‏‎‎‏‎"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‎Do Not Disturb turned off.‎‏‎‎‏‎"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‎Do Not Disturb turned on.‎‏‎‎‏‎"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‎‎Bluetooth.‎‏‎‎‏‎"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‎‏‎‎‏‏‎Bluetooth off.‎‏‎‎‏‎"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎Bluetooth on.‎‏‎‎‏‎"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎Location requests active‎‏‎‎‏‎"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‏‎‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‏‎‎‏‎‏‏‏‏‏‏‏‎‏‎Clear all notifications.‎‏‎‎‏‎"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‏‏‎+ ‎‏‎‎‏‏‎<xliff:g id="NUMBER">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‎‏‎‏‎‏‎‎‏‎‏‏‏‏‎‎‎‏‏‏‎‎‏‏‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>‎‏‎‎‏‏‏‎, +‎‏‎‎‏‏‎<xliff:g id="OVERFLOW">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_1">%s</xliff:g>‎‏‎‎‏‏‏‎ more notifications inside.‎‏‎‎‏‎</item>
<item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUMBER_0">%s</xliff:g>‎‏‎‎‏‏‏‎ more notification inside.‎‏‎‎‏‎</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="CONTACT_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎: ‎‏‎‎‏‏‎<xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎Notification settings‎‏‎‎‏‎"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%s</xliff:g>‎‏‎‎‏‏‏‎ settings‎‏‎‎‏‎"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‎Screen will rotate automatically.‎‏‎‎‏‎"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‎‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎Screen saver‎‏‎‎‏‎"</string>
<string name="ethernet_label" msgid="7967563676324087464">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‎‎‎‎Ethernet‎‏‎‎‏‎"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎Touch &amp; hold icons for more options‎‏‎‎‏‎"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‎‎‎Do not disturb‎‏‎‎‏‎"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‎‏‏‎Do Not Disturb‎‏‎‎‏‎"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‏‏‎‎‎‏‎‎‎Priority only‎‏‎‎‏‎"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‎‎‎‎‏‏‎‏‎‏‏‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‎Alarms only‎‏‎‎‏‎"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎‎‎‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‏‏‏‎‎‏‏‎‎Total silence‎‏‎‎‏‎"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎Battery Saver is on‎‏‎‎‏‎"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‎Reduces performance and background data‎‏‎‎‏‎"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‏‎Turn off Battery Saver‎‏‎‎‏‎"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>‎‏‎‎‏‏‏‎ will start capturing everything on your screen including notifications, passwords, photos, messages and payment information.‎‏‎‎‏‎"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎Allow ‎‏‎‎‏‏‎<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>‎‏‎‎‏‏‏‎ to record or cast your screen?‎‏‎‎‏‎"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‎‎‏‏‎‎‎‎‎While recording or casting, ‎‏‎‎‏‏‎<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>‎‏‎‎‏‏‏‎ can capture any sensitive information, such as audio that you play and your passwords, payment info, photos, and messages.‎‏‎‎‏‎"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‎‎‎‎‎‎‎‏‎‏‏‎‎‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‎‎Exposing sensitive info during casting/recording‎‏‎‎‏‎"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎Don\'t show again‎‏‎‎‏‎"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‏‎‎‎Clear all‎‏‎‎‏‎"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎Manage‎‏‎‎‏‎"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎Sound settings‎‏‎‎‏‎"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‎‏‎Expand‎‏‎‎‏‎"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‎‏‏‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‎Collapse‎‏‎‎‏‎"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎Automatically caption media‎‏‎‎‏‎"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‎‎‎‎‏‎‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‎‏‏‏‎Close captions tip‎‏‎‎‏‎"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‎‏‏‎‎‏‏‏‎‎‏‎‎‏‎‎‎‎Switch output device‎‏‎‎‏‎"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‏‎Screen is pinned‎‏‎‎‏‎"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‎This keeps it in view until you unpin. Touch &amp; hold Back and Overview to unpin.‎‏‎‎‏‎"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎These notifications will alert you‎‏‎‎‏‎"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‏‏‏‏‏‎You usually dismiss these notifications. ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Keep showing them?‎‏‎‎‏‎"</string>
<string name="inline_done_button" msgid="492513001558716452">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎Done‎‏‎‎‏‎"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‎‎‎‎‎‏‏‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‏‎Apply‎‏‎‎‏‎"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‏‎‏‎‎Keep showing these notifications?‎‏‎‎‏‎"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‏‎Stop notifications‎‏‎‎‏‎"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‏‎‎‎‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‏‎‏‎‎‎Deliver Silently‎‏‎‎‏‎"</string>
<string name="inline_block_button" msgid="8735843688021655065">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‏‎‎‏‎Block‎‏‎‎‏‎"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎Keep showing‎‏‎‎‏‎"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‏‏‎‏‎‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎Minimize‎‏‎‎‏‎"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‎‎‏‎‎‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‏‏‎‎‏‎‎‏‏‎‏‏‏‏‎‎Show silently‎‏‎‎‏‎"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎Gentle‎‏‎‎‏‎"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‎‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‏‎Stay silent‎‏‎‎‏‎"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‎Alert me‎‏‎‎‏‎"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‏‎Interruptive‎‏‎‎‏‎"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‎‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‎‎‏‏‎‏‎Keep alerting‎‏‎‎‏‎"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎Turn off notifications‎‏‎‎‏‎"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‎‎‏‎‎‎‎‎‏‎Keep showing notifications from this app?‎‏‎‎‏‎"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‎Blocked notifications do not appear anywhere or play a sound. You can unblock notifications in settings.‎‏‎‎‏‎"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎Silent notifications appear in the shade, but do not appear on the lock screen, present a banner, or play a sound.‎‏‎‎‏‎"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎These notifications will make a sound and show in the notification drawer, status bar, and lock screen‎‏‎‎‏‎"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‎‎These notifications can\'t be turned off‎‏‎‎‏‎"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‎‎‏‏‎‎This group of notifications cannot be configured here‎‏‎‎‏‎"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎via ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="appops_camera" msgid="8100147441602585776">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‎‏‎‏‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‎This app is using the camera.‎‏‎‎‏‎"</string>
<string name="appops_microphone" msgid="741508267659494555">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‎‏‏‎This app is using the microphone.‎‏‎‎‏‎"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎YouTube‎‏‎‎‏‎"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎Calendar‎‏‎‎‏‎"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‏‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎Show with volume controls‎‏‎‎‏‎"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‏‏‏‎‎‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎Do not disturb‎‏‎‎‏‎"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎Do Not Disturb‎‏‎‎‏‎"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‎‎‏‏‏‎Volume buttons shortcut‎‏‎‎‏‎"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎Exit do not disturb on volume up‎‏‎‎‏‎"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‏‎‏‏‎‎‏‏‏‏‎Exit Do Not Disturb on volume up‎‏‎‎‏‎"</string>
<string name="battery" msgid="7498329822413202973">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‎‎‎‎‏‏‏‎‏‎Battery‎‏‎‎‏‎"</string>
<string name="clock" msgid="7416090374234785905">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎‏‏‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‎‎‎‏‎Clock‎‏‎‎‏‎"</string>
<string name="headset" msgid="4534219457597457353">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎‎‏‎Headset‎‏‎‎‏‎"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‎‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎Go to browser‎‏‎‎‏‎"</string>
<string name="mobile_data" msgid="7094582042819250762">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‏‎‏‏‏‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‎‏‎‎Mobile data‎‏‎‎‏‎"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="ID_1">%1$s</xliff:g>‎‏‎‎‏‏‏‎ — ‎‏‎‎‏‏‎<xliff:g id="ID_2">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‎‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‏‎‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="CARRIER_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‎‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‎Wi-Fi is off‎‏‎‎‏‎"</string>
<string name="bt_is_off" msgid="2640685272289706392">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‏‏‏‎‎‎‎‎‎‎‏‏‎‎‏‏‎‎‎‎Bluetooth is off‎‏‎‎‏‎"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‎‎‎Do Not Disturb is off‎‏‎‎‏‎"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎‎‏‎‎‎‎‏‎Settings‎‏‎‎‏‎"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‏‏‏‎‎‏‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‎‏‎‎‎‎‏‎‎Got it‎‏‎‎‏‎"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎Dump SysUI Heap‎‏‎‎‏‎"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUM_APPS_2">%d</xliff:g>‎‏‎‎‏‏‏‎ apps‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‎‎‏‏‎<xliff:g id="NUM_APPS_0">%d</xliff:g>‎‏‎‎‏‏‏‎ app‎‏‎‎‏‎</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‎‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is using your ‎‏‎‎‏‏‎<xliff:g id="TYPES_LIST">%2$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎Applications are using your ‎‏‎‎‏‏‎<xliff:g id="TYPES_LIST">%s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‎In use:‎‏‎‎‏‎"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUM_APPS_4">%1$d</xliff:g>‎‏‎‎‏‏‏‎ applications are using your ‎‏‎‎‏‏‎<xliff:g id="TYPE_5">%2$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUM_APPS_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ application is using your ‎‏‎‎‏‏‎<xliff:g id="TYPE_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎Got it‎‏‎‎‏‎"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎Privacy settings‎‏‎‎‏‎"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‎‎‎App using your ‎‏‎‎‏‏‎<xliff:g id="TYPES_LIST">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‎Apps using your ‎‏‎‎‏‏‎<xliff:g id="TYPES_LIST">%s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‎‏‏‏‏‏‏‎, ‎‏‎‎‏‎ "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‏‎‏‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎ and ‎‏‎‎‏‎ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‏‎camera‎‏‎‎‏‎"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‎location‎‏‎‎‏‎"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‏‏‎‏‎‏‎‎‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‏‎‏‎‎microphone‎‏‎‎‏‎"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUM_APPS_1">%d</xliff:g>‎‏‎‎‏‏‏‎ other apps‎‏‎‎‏‎</item>
- <item quantity="one">‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NUM_APPS_0">%d</xliff:g>‎‏‎‎‏‏‏‎ other app‎‏‎‎‏‎</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‎‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎Sensors off‎‏‎‎‏‎"</string>
<string name="device_services" msgid="1191212554435440592">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‏‏‏‎‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‎‎‎‎‎Device Services‎‏‎‎‏‎"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‏‏‎No title‎‏‎‎‏‎"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‏‎‏‏‎‏‏‎‎‏‎‏‎‏‏‎Tap to restart this app and go full screen.‎‏‎‎‏‎"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎Open ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‏‎‎‎‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‎‎‎Open notification settings for ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎‏‎‎‎Allow bubbles from this app?‎‏‎‎‏‎"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎Block‎‏‎‎‏‎"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎‏‎‏‎Settings for ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ bubbles‎‏‎‎‏‎"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‎Allow bubbles from ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‏‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‏‎‏‏‏‎‎‏‏‏‎Deny‎‏‎‎‏‎"</string>
<string name="yes_bubbles" msgid="668809525728633841">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‎‏‎‎‎‎‎‎‏‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‏‏‏‏‏‏‎‎‎‏‎Allow‎‏‎‎‏‎"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎Ask me later‎‏‎‎‏‎"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‏‏‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ from ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ from ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ and ‎‏‎‎‏‏‎<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>‎‏‎‎‏‏‏‎ more‎‏‎‎‏‎"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎Move‎‏‎‎‏‎"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‏‎‎‎‎‎‏‏‎‎‏‏‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‎‎‏‎‎‏‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎Move top left‎‏‎‎‏‎"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎‏‎‎‎‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‎Move top right‎‏‎‎‏‎"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‏‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎‎‎‏‎Move bottom left‎‏‎‎‏‎"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‎Move bottom right‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index cb707aea4477..10f49ed73a01 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Usa el cargador que se incluyó con el dispositivo"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Configuración"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"¿Activar el Ahorro de batería?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Acerca del Ahorro de batería"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activar"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activar el Ahorro de batería"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configuración"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"El usuario al que accediste en este dispositivo no puede activar la depuración por USB. Para usar esta función, debes cambiar al usuario principal."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Puerto USB inhabilitado"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para proteger tu dispositivo de líquidos o suciedad, el puerto USB está inhabilitado y no detectará ningún accesorio.\n\nTe avisaremos cuando sea seguro usar el puerto USB de nuevo."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Se habilitó el puerto USB para detectar cargadores y accesorios"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Habilitar USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom para ocupar la pantalla"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estirar p/ ocupar la pantalla"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de pantalla"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloquear sin utilizar la huella digital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Escaneando rostro"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Administrar notificaciones"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string>
<string name="phone_label" msgid="2320074140205331708">"abrir teléfono"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"abrir el asistente de voz"</string>
<string name="camera_label" msgid="7261107956054836961">"abrir cámara"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Área de mensajes de ayuda"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirmar"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Volver a intentarlo"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Toca el sensor de huellas digitales"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Datos móviles"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Activar datos móviles"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Datos móviles desactivados"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"No se configuró para usar datos"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desactivados"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conexión mediante Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modo de avión activado"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silencio total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"solo alarmas"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"No interrumpir"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"No interrumpir desactivado"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"No interrumpir activado"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"No interrumpir."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"La función No interrumpir está desactivada."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Se activó la opción No interrumpir."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivado"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activado"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de ubicación activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas las notificaciones"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> más"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (+<xliff:g id="OVERFLOW">%2$s</xliff:g>)"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> notificaciones más en el grupo.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> notificación más en el grupo.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configuración de notificaciones"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configuración de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Protector pantalla"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Mantén presionados los íconos para ver más opciones"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"No interrumpir"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"No interrumpir"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Solo prioridad"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Solo alarmas"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silencio total"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"El Ahorro de batería está activado"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduce el rendimiento y el uso de datos en segundo plano."</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desactivar el Ahorro de batería"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> comenzará a capturar todo lo que aparezca en la pantalla como notificaciones, contraseñas, fotos, información de pago y mensajes."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"¿Quieres permitir que <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> grabe o transmita la pantalla?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Durante la grabación o transmisión de contenido, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> puede capturar información sensible, como audio que reproduces y tus contraseñas, información de pago, fotos y mensajes."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposición de información sensible durante la grabación o transmisión"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"No volver a mostrar"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Borrar todo"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Administrar"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Configuración de sonido"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Contraer"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtitular automáticamente"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sugerencia de subtítulos"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambiar dispositivo de salida"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Pantalla fija"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Esta función mantiene la pantalla visible hasta que dejes de fijarla. Para ello, mantén presionados los botones Atrás y Recientes."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Estas notificaciones te enviarán una alerta"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Sueles descartar estas notificaciones. \n¿Quieres seguir recibiéndolas?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Listo"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicar"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"¿Quieres seguir viendo estas notificaciones?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Detener notificaciones"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Enviar sin emitir sonido"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquear"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Seguir viendo"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizar"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostrar sin emitir sonido"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Silenciosas"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Silenciar notificaciones"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Avisarme"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Emergentes"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Seguir recibiendo alertas"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desactivar notificaciones"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"¿Quieres seguir viendo las notificaciones de esta app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Las notificaciones bloqueadas no aparecerán en ningún lugar ni reproducirán sonido. Puedes desbloquear las notificaciones desde la configuración."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Las notificaciones silenciosas aparecen en el panel, pero no se muestran en la pantalla bloqueada, no presentan un banner ni reproducen sonido."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Estas notificaciones sonarán y aparecerán en el panel lateral de notificaciones, la barra de estado y la pantalla bloqueada"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"No se pueden desactivar estas notificaciones"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"No se puede configurar aquí este grupo de notificaciones"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"por medio de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Esta app está usando la cámara."</string>
<string name="appops_microphone" msgid="741508267659494555">"Esta app está usando el micrófono."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendario"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostrar con controles de volumen"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"No interrumpir"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"No interrumpir"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Combinación de teclas de botones de volumen"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Desactivar el modo No interrumpir al subir el volumen"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Desactivar el modo No interrumpir al subir el volumen"</string>
<string name="battery" msgid="7498329822413202973">"Batería"</string>
<string name="clock" msgid="7416090374234785905">"Reloj"</string>
<string name="headset" msgid="4534219457597457353">"Auriculares"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ir al navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Datos móviles"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi desactivado"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth desactivado"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"No interrumpir desactivado"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Configuración"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Entendido"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Volcar pila de SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> está usando tu <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Hay aplicaciones que están usando tu <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"En uso:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicaciones están usando tu <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicación está usando tu <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Entendido"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. privacidad"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Una app está usando tu <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps que están usando tu <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" y "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"cámara"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ubicación"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"micrófono"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> apps más</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app más</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Se desactivaron los sensores"</string>
<string name="device_services" msgid="1191212554435440592">"Servicios del dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sin título"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Presiona para reiniciar esta app y acceder al modo de pantalla completa."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abrir la configuración de notificaciones de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"¿Quieres permitir los cuadros de esta app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloquear"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Configuración para cuadros de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"¿Quieres permitir cuadros de <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Denegar"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permitir"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Preguntarme más tarde"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> y <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> más"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mover"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Ubicar arriba a la izquierda"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Ubicar arriba a la derecha"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Ubicar abajo a la izquierda"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Ubicar abajo a la derecha"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index e4ae787b2fe0..2153ab760808 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Utiliza el cargador original incluido con el dispositivo"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Ajustes"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"¿Activar Ahorro de batería?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Información de Ahorro de batería"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activar"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activar Ahorro de batería"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ajustes"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"El usuario con el que se ha iniciado sesión en este dispositivo no puede activar la depuración USB. Para utilizar esta función, inicia sesión con la cuenta de usuario principal."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Puerto USB inhabilitado"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para proteger tu dispositivo de los líquidos y la suciedad, el puerto USB se ha inhabilitado y no detectará ningún accesorio.\n\nRecibirás una notificación cuando puedas volver a usarlo."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Puerto USB habilitado para detectar cargadores y accesorios"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Habilitar USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom para ajustar"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Expandir para ajustar"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de pantalla"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloquear sin usar tu huella digital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Escaneando cara"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestionar notificaciones"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string>
<string name="phone_label" msgid="2320074140205331708">"abrir teléfono"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"abrir el asistente de voz"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Datos móviles"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Datos móviles activados"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Datos desactiv."</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"No está establecido para usar los datos"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desactivados"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Compartir conexión por Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modo avión activado."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silencio total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"solo alarmas"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"No molestar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"No molestar desactivado."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"No molestar activado."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivado."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activado."</string>
@@ -279,6 +277,7 @@
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> notificaciones más dentro.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> notificación más dentro.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ajustes de notificaciones"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Ajustes de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"La pantalla girará automáticamente."</string>
@@ -291,9 +290,8 @@
<string name="start_dreams" msgid="5640361424498338327">"Salvapantallas"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Mantén pulsados los iconos para ver más opciones"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
- <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Solo prioritarias"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"No molestar"</string>
+ <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Solo interrupciones prioritarias"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Solo alarmas"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silencio total"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
@@ -399,7 +397,7 @@
<string name="camera_hint" msgid="7939688436797157483">"Desliza desde el icono para abrir la cámara"</string>
<string name="interruption_level_none_with_warning" msgid="5114872171614161084">"Silencio total (también se silenciarán los lectores de pantalla)."</string>
<string name="interruption_level_none" msgid="6000083681244492992">"Silencio total"</string>
- <string name="interruption_level_priority" msgid="6426766465363855505">"Solo prioritarias"</string>
+ <string name="interruption_level_priority" msgid="6426766465363855505">"Solo interrupciones prioritarias"</string>
<string name="interruption_level_alarms" msgid="5226306993448328896">"Solo alarmas"</string>
<string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silencio\ntotal"</string>
<string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Solo\ncon prioridad"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Ahorro de batería activado"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduce el rendimiento y los datos en segundo plano"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desactivar Ahorro de batería"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Mientras graba o envía contenido, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> puede obtener información sensible, como el audio que reproduces, contraseñas, información de pagos, fotos y mensajes."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Se muestra información sensible durante el envío y la grabación"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"No volver a mostrar"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Borrar todo"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gestionar"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ajustes de sonido"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Mostrar"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ocultar"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtítulos autom. multimedia"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Cerrar las recomendaciones de subtítulos"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambiar dispositivo de salida"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Pantalla fijada"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"La pantalla se mantiene visible hasta que dejas de fijarla. Para ello, mantén pulsados los botones Atrás y Aplicaciones recientes."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Estas notificaciones te avisarán con sonido"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Normalmente ignoras estas notificaciones. \n¿Quieres seguir viéndolas?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Listo"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicar"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"¿Quieres seguir viendo estas notificaciones?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Detener las notificaciones"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Enviar en silencio"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquear"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Seguir mostrando"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizar"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostrar en silencio"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"En silencio"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Silenciar notificaciones"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Emergentes"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Quiero seguir recibiendo alertas"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desactivar notificaciones"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"¿Quieres seguir viendo las notificaciones de esta aplicación?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Las notificaciones bloqueadas no aparecen en ningún lugar ni reproducen sonido. Puedes desbloquear las notificaciones en Ajustes."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Las notificaciones que están en silencio aparecen en el panel, la pantalla de bloqueo; presentan un banner y reproducen sonido."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Estas notificaciones sonarán y aparecerán en el panel de notificaciones, la barra de estado y la pantalla de bloqueo"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Estas notificaciones no se pueden desactivar"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Este grupo de notificaciones no se puede configurar aquí"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"mediante <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Esta aplicación está usando la cámara."</string>
<string name="appops_microphone" msgid="741508267659494555">"Esta aplicación está usando el micrófono."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendario"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostrar con controles de volumen"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"No molestar"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Combinación de teclas para los botones de volumen"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Salir de No molestar al subir el volumen"</string>
<string name="battery" msgid="7498329822413202973">"Batería"</string>
<string name="clock" msgid="7416090374234785905">"Reloj"</string>
<string name="headset" msgid="4534219457597457353">"Auriculares"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ir al navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Datos móviles"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> ‑ <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi desactivado"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth desactivado"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"No molestar está desactivado"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Volcar pila de SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> está usando tu <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Hay aplicaciones que usan tu <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Entendido"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Ajustes privacidad"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicación que usa tu <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicaciones que usan tu <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" y "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"cámara"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desactivados"</string>
<string name="device_services" msgid="1191212554435440592">"Servicios del dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sin título"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Toca para reiniciar esta aplicación e ir a la pantalla completa."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Ajustes de los cuadros de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"¿Quieres permitir los cuadros de <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Denegar"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permitir"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Preguntarme más tarde"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> y <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> más"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mover"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mover arriba a la izquierda"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mover arriba a la derecha"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mover abajo a la izquierda."</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mover abajo a la derecha"</string>
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 2c33935c2290..7df6494dc532 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Kasutage seadmega kaasas olnud laadijat"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Seaded"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Kas lülitada akusäästja sisse?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Teave akusäästja kohta"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Lülita sisse"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Akusäästja sisselülitamine"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Seaded"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Sellesse seadmesse praegu sisse logitud kasutaja ei saa USB-silumist sisse lülitada. Selle funktsiooni kasutamiseks vahetage peamisele kasutajale."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-port on keelatud"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Selleks et kaitsta teie seadet vedeliku või mustuse eest, on USB-port keelatud ja see ei tuvasta lisatarvikuid.\n\nKui USB-porti on taas ohutu kasutada, saate selle kohta märguande."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-pordil on lubatud tuvastada laadijaid ja tarvikuid"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Luba USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Suumi ekraani täitmiseks"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Venita ekraani täitmiseks"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Ekraanipilt"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Ava sõrmejälge kasutamata"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Näo skannimine"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Saada"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Halda märguandeid"</string>
<string name="unlock_label" msgid="8779712358041029439">"ava lukk"</string>
<string name="phone_label" msgid="2320074140205331708">"ava telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ava häälabi"</string>
<string name="camera_label" msgid="7261107956054836961">"ava kaamera"</string>
<string name="cancel" msgid="6442560571259935130">"Tühista"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Abisõnumi ala"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Kinnita"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Proovi uuesti"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Puudutage sõrmejäljeandurit"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobiilne andmeside"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobiilne andmeside on sees"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobiilne andmeside on väljas"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ei ole andmeside kasutamiseks seadistatud"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Väljas"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Jagamine Bluetoothiga."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Lennurežiim."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Lennurežiim on sisse lülitatud."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"täielik vaikus"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ainult alarmid"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Mitte segada."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Funktsioon Mitte segada on välja lülitatud."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Funktsioon Mitte segada on sisse lülitatud."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Mitte segada."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Funktsioon Mitte segada on välja lülitatud."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Funktsioon Mitte segada on sisse lülitatud."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth on väljas."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on sees."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Asukoha taotlused on aktiivsed"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Kustuta kõik teatised."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, üle <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Sees on veel <xliff:g id="NUMBER_1">%s</xliff:g> märguannet.</item>
<item quantity="one">Sees on veel <xliff:g id="NUMBER_0">%s</xliff:g> märguanne.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Märguandeseaded"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Rakenduse <xliff:g id="APP_NAME">%s</xliff:g> seaded"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekraani pööramine toimub automaatselt."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ekraanisäästja"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Lisavalikute nägemiseks vajutage pikalt ikoone"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Mitte segada"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Mitte segada"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Ainult prioriteetsed"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Ainult äratused"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Täielik vaikus"</string>
@@ -351,7 +355,7 @@
<string name="quick_settings_notifications_label" msgid="4818156442169154523">"Märguanded"</string>
<string name="quick_settings_flashlight_label" msgid="2133093497691661546">"Taskulamp"</string>
<string name="quick_settings_cellular_detail_title" msgid="3661194685666477347">"Mobiilne andmeside"</string>
- <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"Andmekasutus"</string>
+ <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"Andmeside kasutus"</string>
<string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"Järelejäänud andmemaht"</string>
<string name="quick_settings_cellular_detail_over_limit" msgid="967669665390990427">"Üle limiidi"</string>
<string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> on kasutatud"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Akusäästja on sisse lülitatud"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Vähendab jõudlust ja taustaandmeid"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Akusäästja väljalülitamine"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> jäädvustab kõik ekraanil kuvatu, sh märguanded, paroolid, fotod, sõnumid ja makseteabe."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Kas lubada rakendusel <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> teie ekraanikuva salvestada või üle kanda?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> võib salvestamisel ja ülekandmisel jäädvustada tundlikku teavet, näiteks esitatavat heli ning teie paroole, makseteavet, fotosid ja sõnumeid."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Ülekandmise/salvestamise ajal kuvatakse tundlikku teavet"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ära kuva uuesti"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Tühjenda kõik"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Haldamine"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Heliseaded"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Laiendamine"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ahendamine"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automaatsed subtiitrid"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sule subtiitrite nõuanne"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Väljundseadme vahetamine"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekraan on kinnitatud"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"See hoitakse kuval, kuni selle vabastate. Vabastamiseks puudutage pikalt nuppe Tagasi ja Ülevaade."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Need märguanded teavitavad teid heliga"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Tavaliselt loobute nendest märguannetest. \nKas soovite neid jätkuvalt näidata?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Valmis"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Rakenda"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Kas soovite nende märguannete kuvamist jätkata?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Peata märguanded"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Esita vaikselt"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokeeri"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Jätka kuvamist"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimeeri"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Kuva vaikselt"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Rahulik"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Kuva helita"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Teavita mind"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Segavad"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Teavita ka edaspidi"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Lülita märguanded välja"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Kas jätkata selle rakenduse märguannete kuvamist?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokeeritud märguandeid ei kuvata ja nende puhul ei esitata heli. Märguannete blokeeringu saab seadetes tühistada."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Hääletud märguanded kuvatakse märguandealal, ent mitte lukustuskuval ega ribal ja nende puhul ei esitata heli."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Nende märguannete puhul esitatakse heli ja need kuvatakse märguandesahtlis, olekuribal ja lukustuskuval"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Neid märguandeid ei saa välja lülitada"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Seda märguannete rühma ei saa siin seadistada"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> kaudu"</string>
<string name="appops_camera" msgid="8100147441602585776">"See rakendus kasutab kaamerat."</string>
<string name="appops_microphone" msgid="741508267659494555">"See rakendus kasutab mikrofoni."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Kuva koos helitugevuse juhtnuppudega"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Mitte segada"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Mitte segada"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Helitugevuse nuppude otsetee"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Lülita helitugevuse suurendamisel välja funkt. Mitte segada"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Lülita režiim Mitte segada helitugevuse suurendamisel välja"</string>
<string name="battery" msgid="7498329822413202973">"Aku"</string>
<string name="clock" msgid="7416090374234785905">"Kell"</string>
<string name="headset" msgid="4534219457597457353">"Peakomplekt"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ava brauser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobiilne andmeside"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"WiFi on välja lülitatud"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth on välja lülitatud"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Funktsioon Mitte segada on välja lülitatud"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Seaded"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Selge"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> rakendust</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> rakendus</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> kasutab järgmisi: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Rakendused kasutavad järgmisi: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Kasutuses:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> rakendust kasutavad üksust <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> rakendus kasutab üksust <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Selge"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privaatsusseaded"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Rakendus, mis kasutab üksusi <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Rakendused, mis kasutavad üksusi <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ja "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kaamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"asukoht"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Veel <xliff:g id="NUM_APPS_1">%d</xliff:g> rakendust</item>
- <item quantity="one">Veel <xliff:g id="NUM_APPS_0">%d</xliff:g> rakendus</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Andurid on välja lülitatud"</string>
<string name="device_services" msgid="1191212554435440592">"Seadme teenused"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Pealkiri puudub"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Puudutage rakenduse taaskäivitamiseks ja täisekraanrežiimi aktiveerimiseks."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ava <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Ava rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> märguandeseaded"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Kas lubada sellest rakendusest mullid?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokeeri"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> mullide seaded"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Kas soovite rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> mullid lubada?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Keela"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Luba"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Küsi hiljem"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> rakendusest <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> rakenduselt <xliff:g id="APP_NAME">%2$s</xliff:g> ja veel <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Teisalda"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Teisalda üles vasakule"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Teisalda üles paremale"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Teisalda alla vasakule"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Teisalda alla paremale"</string>
</resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 03ea7b824ffd..2c917b67c787 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Erabili gailuaren kargagailua"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Ezarpenak"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Bateria-aurrezlea aktibatu nahi duzu?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Bateria-aurrezleari buruz"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktibatu"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Aktibatu bateria-aurrezlea"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ezarpenak"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Gailu honetan saioa hasita duen erabiltzaileak ezin du aktibatu USB arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Desgaitu egin da USB ataka"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB ataka desgaitu egin da gailua likido edo zikinkeriengandik babesteko, eta ez du hautemango osagarririk.\n\nUSB ataka berriz erabiltzea segurua denean jakinaraziko zaizu."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB ataka gaitu da kargagailuak eta osagarriak hautemateko"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Gaitu USB ataka"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Handiagotu pantaila betetzeko"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Luzatu pantaila betetzeko"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Pantaila-argazkia"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desblokeatu hatz-markaren bidez"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Aurpegia eskaneatzen"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Bidali"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Kudeatu jakinarazpenak"</string>
<string name="unlock_label" msgid="8779712358041029439">"desblokeatu"</string>
<string name="phone_label" msgid="2320074140205331708">"ireki telefonoan"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ireki ahots-laguntza"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Datu-konexioa"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Datu-konexioa aktibatuta"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Desaktibatuta dago datu-konexioa"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ez dago ezarrita datuak erabiltzeko"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desaktibatuta"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Konexioa partekatzea (Bluetooth)"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Hegaldi-modua"</string>
@@ -223,13 +224,10 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Hegaldi modua aktibatu egin da."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"isiltasun osoa"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarmak soilik"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
- <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ez molestatu."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Desaktibatu egin da \"Ez molestatu\" eginbidea."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Aktibatu egin da \"Ez molestatu\" modua."</string>
+ <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth-a."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth konexioa desaktibatuta dago."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth konexioa aktibatuta dago."</string>
<string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"Bluetooth bidez konektatzen ari da."</string>
@@ -279,6 +277,7 @@
<item quantity="other">Beste <xliff:g id="NUMBER_1">%s</xliff:g> jakinarazpen daude barnean.</item>
<item quantity="one">Beste <xliff:g id="NUMBER_0">%s</xliff:g> jakinarazpen daude barnean.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Jakinarazpen-ezarpenak"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ezarpenak"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Pantaila automatikoki biratuko da."</string>
@@ -291,12 +290,11 @@
<string name="start_dreams" msgid="5640361424498338327">"Pantaila-babeslea"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Aukera gehiago ikusteko, eduki sakatuta ikonoak"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ez molestatu"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Lehentasunezkoak soilik"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarmak soilik"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Isiltasun osoa"</string>
- <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
+ <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth-a"</string>
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetootha (<xliff:g id="NUMBER">%d</xliff:g> gailu)"</string>
<string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetootha desaktibatuta"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"Ez dago parekatutako gailurik erabilgarri"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Aktibatuta dago bateria-aurrezlea"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Errendimendua eta atzeko planoko datuak murrizten ditu"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desaktibatu bateria-aurrezlea"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Edukia grabatzen edo igortzen ari zaren bitartean, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> aplikazioak kontuzko informazioa bil dezake, hala nola erreproduzitzen duzun audioa, pasahitzak, ordainketa-informazioa, argazkiak eta mezuak."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Kontuzko informazioa erakutsiko da edukia igorri edo grabatzean"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ez erakutsi berriro"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Garbitu guztiak"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Kudeatu"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Soinuaren ezarpenak"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Zabaldu"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Tolestu"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Ezarri azpitituluak automatikoki"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Azpitituluei buruzko aholkua"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Aldatu irteerako gailua"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Pantaila ainguratuta dago"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Horrela, ikusgai egongo da aingura kendu arte. Aingura kentzeko, eduki sakatuta \"Atzera\" eta \"Ikuspegi orokorra\" botoiak."</string>
@@ -546,7 +540,7 @@
<string name="stream_music" msgid="9086982948697544342">"Multimedia-edukia"</string>
<string name="stream_alarm" msgid="5209444229227197703">"Alarma"</string>
<string name="stream_notification" msgid="2563720670905665031">"Jakinarazpena"</string>
- <string name="stream_bluetooth_sco" msgid="2055645746402746292">"Bluetooth konexioa"</string>
+ <string name="stream_bluetooth_sco" msgid="2055645746402746292">"Bluetooth-a"</string>
<string name="stream_dtmf" msgid="2447177903892477915">"Tonu anitzeko maiztasun duala"</string>
<string name="stream_accessibility" msgid="301136219144385106">"Erabilerraztasuna"</string>
<string name="ring_toggle_title" msgid="3281244519428819576">"Deiak"</string>
@@ -569,7 +563,7 @@
<string name="output_calls_title" msgid="8717692905017206161">"Telefono-deiaren irteera"</string>
<string name="output_none_found" msgid="5544982839808921091">"Ez da aurkitu gailurik"</string>
<string name="output_none_found_service_off" msgid="8631969668659757069">"Ez da aurkitu gailurik. Aktibatu <xliff:g id="SERVICE">%1$s</xliff:g>."</string>
- <string name="output_service_bt" msgid="6224213415445509542">"Bluetooth konexioa"</string>
+ <string name="output_service_bt" msgid="6224213415445509542">"Bluetooth-a"</string>
<string name="output_service_wifi" msgid="3749735218931825054">"Wi-Fi konexioa"</string>
<string name="output_service_bt_wifi" msgid="4486837869988770896">"Bluetooth eta Wi-Fi konexioak"</string>
<string name="system_ui_tuner" msgid="708224127392452018">"Sistemako erabiltzaile-interfazearen konfiguratzailea"</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Jakinarazpen hauek soinu bidezko alerta bidez erakutsiko dira"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Baztertu egin ohi dituzu jakinarazpen hauek. \nHaiek erakusten jarraitzea nahi duzu?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Eginda"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplikatu"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Jakinarazpenak erakusten jarraitzea nahi duzu?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Blokeatu jakinarazpenak"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Erakutsi soinurik egin gabe"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokeatu"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Jarraitu erakusten"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizatu"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Erakutsi soinurik egin gabepen"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Jakinarazi soinurik gabe"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Jarraitu isilik"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Jakinarazi soinu eta guzti"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Jarraitu jakinarazpenak bidaltzen"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desaktibatu jakinarazpenak"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Aplikazio honen jakinarazpenak erakusten jarraitzea nahi duzu?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokeatutako jakinarazpenak ez dira inon agertzen eta ez dute soinurik egiten. Jakinarazpenak desblokeatzeko, joan ezarpenetara."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Ilundutako eremuetan agertzen dira jakinarazpen isilak, baina ez pantaila blokeatuan; ez da agertzen haien iragarki-bandarik eta ez dute egiten soinurik."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Jakinarazpen hauek soinua egingo dute eta jakinarazpenen panel lerrakorrean, egoera-barran eta pantaila blokeatuan agertuko dira."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Jakinarazpen hauek ezin dira desaktibatu"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren bidez"</string>
<string name="appops_camera" msgid="8100147441602585776">"Kamera erabiltzen ari da aplikazioa."</string>
<string name="appops_microphone" msgid="741508267659494555">"Mikrofonoa erabiltzen ari da aplikazioa."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Erakutsi bolumena kontrolatzeko aukerekin"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ez molestatu"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Bolumen-botoietarako lasterbidea"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Irten \"Ez molestatu\" egoeratik bolumena igotzean"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Erlojua"</string>
<string name="headset" msgid="4534219457597457353">"Mikrofonodun entzungailua"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Joan arakatzailera"</string>
<string name="mobile_data" msgid="7094582042819250762">"Datu-konexioa"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> (<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>)"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi konexioa desaktibatuta dago"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth konexioa desaktibatuta dago"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"Ez molestatu\" modua desaktibatuta dago"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> <xliff:g id="TYPES_LIST">%2$s</xliff:g> erabiltzen ari da."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikazio batzuk <xliff:g id="TYPES_LIST">%s</xliff:g> erabiltzen ari dira."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ados"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Pribatutasun-ezarpenak"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> erabiltzen ari den aplikazioa"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g> erabiltzen ari diren aplikazioak"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" eta "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sentsoreak desaktibatuta daude"</string>
<string name="device_services" msgid="1191212554435440592">"Gailuetarako zerbitzuak"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ez du izenik"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Berrabiarazi aplikazio hau eta ezarri pantaila osoko modua."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ireki <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren ezarpenen globoak"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioaren globoak onartu nahi dituzu?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Ukatu"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Onartu"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Galdetu geroago"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (<xliff:g id="APP_NAME">%2$s</xliff:g>)"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioaren \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\" jakinarazpena, eta beste <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Eraman"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Eraman goialdera, ezkerretara"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Eraman goialdera, eskuinetara"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Eraman behealdera, ezkerretara"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Eraman behealdera, eskuinetara"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index fc6751486bb7..9a7d1b79355b 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"از شارژر ارائه‌شده با دستگاه استفاده کنید"</string>
<string name="battery_low_why" msgid="4553600287639198111">"تنظیمات"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"بهینه‌سازی باتری روشن شود؟"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"درباره بهینه‌سازی باتری"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"روشن کردن"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"بهینه‌سازی باتری را روشن کنید"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"تنظیمات"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"‏کاربری که درحال حاضر در این دستگاه وارد سیستم شده است نمی‌تواند اشکال‌زدایی USB را روشن کند. برای استفاده از این قابلیت، به کاربر اصلی تغییر وضعیت دهید."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"‏درگاه USB غیرفعال شده است"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"‏برای محافظت از دستگاهتان دربرابر مایعات یا خاکروبه، درگاه USB غیرفعال شده است و هیچ‌کدام از لوازم جانبی را شناسایی نخواهد کرد.\n\nهرزمان که استفاده از درگاه USB ایمن باشد، به شما اطلاع داده می‌شود."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"‏درگاه USB برای تشخیص شارژرها و لوازم جانبی فعال شد"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"‏فعال کردن USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"بزرگ‌نمایی برای پر کردن صفحه"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"گسترده کردن برای پر کردن صفحه"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"عکس صفحه‌نمایش"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"باز کردن قفل بدون استفاده از اثر انگشت"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"درحال اسکن کردن چهره"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ارسال"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"مدیریت اعلان‌ها"</string>
<string name="unlock_label" msgid="8779712358041029439">"بازکردن قفل"</string>
<string name="phone_label" msgid="2320074140205331708">"باز کردن تلفن"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"«دستیار صوتی» را باز کنید"</string>
<string name="camera_label" msgid="7261107956054836961">"باز کردن دوربین"</string>
<string name="cancel" msgid="6442560571259935130">"لغو"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"بخش پیام راهنما"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"تأیید"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"امتحان مجدد"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"حسگر اثر انگشت را لمس کنید"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"داده‌ تلفن همراه"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"داده تلفن همراه روشن"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"داده تلفن همراه خاموش است"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"برای استفاده از داده تنظیم نشده است"</string>
<string name="cell_data_off" msgid="1051264981229902873">"خاموش"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"اتصال اینترنت با بلوتوث تلفن همراه."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"حالت هواپیما."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"حالت هواپیما روشن شد."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"سکوت کامل"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"فقط زنگ ساعت"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"مزاحم نشوید."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"«مزاحم نشوید» خاموش شد."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"«مزاحم نشوید» روشن شد."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"مزاحم نشوید."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"«مزاحم نشوید» خاموش شد."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"«مزاحم نشوید» روشن شد."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"بلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"بلوتوث خاموش است."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"بلوتوث روشن است."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"درخواست‌های موقعیت مکانی فعال است"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"پاک کردن تمام اعلان‌ها"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>، +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> اعلان دیگر در گروه.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> اعلان دیگر در گروه.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"تنظیمات اعلان"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"تنظیمات <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"صفحه به صورت خودکار می‌چرخد."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"محافظ صفحه"</string>
<string name="ethernet_label" msgid="7967563676324087464">"اترنت"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"برای گزینه‌های بیشتر، نمادها را لمس کنید و نگه‌دارید"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"مزاحم نشوید"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"مزاحم نشوید"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"فقط اولویت‌دار"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"فقط هشدارها"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"سکوت کامل"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"بهینه‌سازی باتری روشن است"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"عملکرد و اطلاعات پس‌زمینه را کاهش می‌دهد"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"بهینه‌سازی باتری را خاموش کنید"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> هرچیزی که در صفحه‌نمایش شماست، ازجمله اعلان‌ها، گذرواژه‌ها، عکس‌ها، پیام‌ها و اطلاعات پرداخت، ضبط می‌کند."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"به <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> اجازه می‌دهید صفحه‌نمایشتان را ضبط کند یا به آن ارسال محتوا کند؟"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"درحین ضبط یا ارسال محتوا، <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> می‌تواند هرگونه اطلاعات حساسی را، مانند محتواهای صوتی‌ای که پخش می‌کنید و گذرواژه‌هایتان، اطلاعات پرداخت، عکس‌ها، و پیام‌ها را ضبط کند."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"افشای اطلاعات حساس درحین ارسال/ضبط محتوا"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"دوباره نشان داده نشود"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"پاک کردن همه موارد"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"مدیریت"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"تنظیمات صدا"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"بزرگ کردن"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"کوچک کردن"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"رسانه زیرنویس خودکار"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"نکته مربوط به زیرنویس ناشنوایان"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"تغییر دستگاه خروجی"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"صفحه نمایش پین شد"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"تا زمانی که پین را بردارید، در نما نگه‌داشته می‌شود. برای برداشتن پین، «برگشت» و «نمای کلی» را لمس کنید و نگه‌دارید."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"این اعلان‌ها به شما هشدار خواهند داد"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"معمولاً این اعلان‌ها را رد می‌کنید. \nهمچنان نشان داده شود؟"</string>
<string name="inline_done_button" msgid="492513001558716452">"تمام"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"اعمال"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"نمایش این اعلان‌ها ادامه یابد؟"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"توقف اعلان‌ها"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"دریافت بی‌صدا"</string>
<string name="inline_block_button" msgid="8735843688021655065">"مسدود کردن"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"همچنان نشان داده شود"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"کوچک کردن"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"نمایش به‌صورت بی‌صدا"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"آرام"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"بی‌صدا بماند"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"به من اطلاع داده شود"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"مزاحم"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"همچنان اطلاع داده شود"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"خاموش کردن اعلان‌ها"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"نمایش اعلان از این برنامه ادامه یابد؟"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"اعلان‌های مسدود‌شده جایی نشان داده نمی‌شود و صدایی پخش نمی‌کند. می‌توانید اعلان‌ها را در تنظیمات لغو انسداد کنید."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"اعلان‌های بی‌صدا در تاریکی نشان داده می‌شوند، اما درحالت صفحه قفل ظاهر نمی‌شوند، در قالب برنما نمایش داده نمی‌شوند، یا صدایی پخش نمی‌کنند."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"این اعلان‌ها باصدا هستند و در کشوی اعلان، نوار وضعیت و صفحه قفل نشان داده می‌شوند."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"نمی‌توان این اعلان‌ها را خاموش کرد"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"نمی‌توانید این گروه اعلان‌ها را در اینجا پیکربندی کنید"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"ازطریق <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"این برنامه از دوربین استفاده می‌کند."</string>
<string name="appops_microphone" msgid="741508267659494555">"این برنامه از میکروفون استفاده می‌کند."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"تقویم"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"نمایش با کنترل‌های صدا"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"مزاحم نشوید"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"مزاحم نشوید"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"میان‌بر دکمه‌های صدا"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"خارج شدن از حالت «مزاحم نشوید» در میزان صدای بالا"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"خارج شدن از حالت «مزاحم نشوید» در میزان صدای بالا"</string>
<string name="battery" msgid="7498329822413202973">"باتری"</string>
<string name="clock" msgid="7416090374234785905">"ساعت"</string>
<string name="headset" msgid="4534219457597457353">"هدست"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"رفتن به مرورگر"</string>
<string name="mobile_data" msgid="7094582042819250762">"داده تلفن همراه"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>، <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"‏Wi-Fi خاموش است"</string>
<string name="bt_is_off" msgid="2640685272289706392">"بلوتوث خاموش است"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"«مزاحم نشوید» خاموش است"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"تنظیمات"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"متوجه شدم"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> برنامه</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> برنامه</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> از <xliff:g id="TYPES_LIST">%2$s</xliff:g> شما استفاده می‌کند."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"برنامه‌ها از <xliff:g id="TYPES_LIST">%s</xliff:g> شما استفاده می‌‌کنند."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"استفاده از:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> برنامه درحال استفاده از <xliff:g id="TYPE_5">%2$s</xliff:g> شما است.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> برنامه درحال استفاده از <xliff:g id="TYPE_5">%2$s</xliff:g> شما است.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"متوجه شدم"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"تنظیمات حریم خصوصی"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"برنامه‌ای که از <xliff:g id="TYPES_LIST">%s</xliff:g> شما استفاده می‌کند"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"برنامه‌هایی که از <xliff:g id="TYPES_LIST">%s</xliff:g> شما استفاده می‌کنند"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"، "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" و "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"دوربین"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"مکان"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"میکروفون"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> برنامه دیگر</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> برنامه دیگر</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"حسگرها خاموش است"</string>
<string name="device_services" msgid="1191212554435440592">"سرویس‌های دستگاه"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"بدون عنوان"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"برای بازراه‌اندازی این برنامه و تغییر به حالت تمام‌صفحه، ضربه بزنید."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"باز کردن <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"تنظیمات اعلان <xliff:g id="APP_NAME">%1$s</xliff:g> را باز کنید"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"به ابزارک‌های اعلان این برنامه اجازه داده شود؟"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"مسدود کردن"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"تنظیم برای ابزارک‌های اعلان <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"برای <xliff:g id="APP_NAME">%1$s</xliff:g>، ابزارک‌های اعلان مجاز شوند؟"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"رد کردن"</string>
<string name="yes_bubbles" msgid="668809525728633841">"اجازه دادن"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"بعداً پرسیده شود"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> از <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> از <xliff:g id="APP_NAME">%2$s</xliff:g> و <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> مورد بیشتر"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"انتقال"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"انتقال به بالا سمت راست"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"انتقال به بالا سمت چپ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"انتقال به پایین سمت راست"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"انتقال به پایین سمت چپ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index e12733a4a35d..9203a19c86a2 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Käytä laitteesi mukana tullutta laturia"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Asetukset"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Otetaanko virransäästö käyttöön?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Tietoa virransäästöstä"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ota käyttöön"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Ota virransäästö käyttöön"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Asetukset"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Laitteelle tällä hetkellä kirjautunut käyttäjä ei voi ottaa USB-vianetsintää käyttöön. Vaihda käyttäjäksi ensisijainen käyttäjä, jotta voit käyttää tätä ominaisuutta."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-portti poistettu käytöstä"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Laitteen suojaamiseksi nesteiltä ja lialta USB-portti on poistettu käytöstä, eikä se havaitse lisävarusteita.\n\nSaat ilmoituksen, kun USB-porttia voi taas käyttää."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-portti on käytössä ja voi havaita latureita sekä lisävarusteita"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Ota USB käyttöön"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoomaa koko näyttöön"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Venytä koko näyttöön"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Kuvakaappaus"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Avaa lukitus jollakin muulla tavalla kuin sormenjäljellä"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Kasvojen skannaus"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Lähetä"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Ilmoitusasetusten muuttaminen"</string>
<string name="unlock_label" msgid="8779712358041029439">"avaa lukitus"</string>
<string name="phone_label" msgid="2320074140205331708">"avaa puhelin"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"Avaa ääniapuri"</string>
<string name="camera_label" msgid="7261107956054836961">"avaa kamera"</string>
<string name="cancel" msgid="6442560571259935130">"Peruuta"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Ohjeviestialue"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Vahvista"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Yritä uudelleen"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Kosketa sormenjälkitunnistinta"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobiilidata"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobiilidata käytössä"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobiilidata poistettu käytöstä"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ei käytä dataa"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Pois käytöstä"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internetin jakaminen Bluetoothin kautta."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Lentokonetila."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Lentokonetila otettiin käyttöön."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"hiljennä kaikki"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"vain herätykset"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Älä häiritse."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Älä häiritse -tila on pois päältä."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Älä häiritse -tila on päällä."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Älä häiritse."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Älä häiritse -tila poistettiin käytöstä."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Älä häiritse -tila otettiin käyttöön."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth on pois päältä."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth on päällä."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Sijaintipyynnöt aktiiviset"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tyhjennä kaikki ilmoitukset."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">+<xliff:g id="NUMBER_1">%s</xliff:g> ilmoitusta ryhmässä</item>
<item quantity="one">+<xliff:g id="NUMBER_0">%s</xliff:g> ilmoitus ryhmässä</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ilmoitusasetukset"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Asetukset – <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ruutu kääntyy automaattisesti."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Näytönsäästäjä"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Katso lisää vaihtoehtoja koskettamalla kuvakkeita pitkään"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Älä häiritse"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Älä häiritse"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Vain tärkeät"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Vain herätykset"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Täydellinen hiljaisuus"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Virransäästö on käytössä"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Rajoittaa suorituskykyä ja taustatiedonsiirtoa"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Poista virransäästö käytöstä"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> alkaa tallentaa kaiken näytölläsi näkyvän, kuten ilmoitukset, salasanat, kuvat, viestit ja maksutiedot."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Saako <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> nauhoittaa tai striimata näyttöäsi?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Tallennuksen tai suoratoiston aikana <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> voi tallentaa mitä tahansa arkaluontoisia tietoja, kuten toistettavaa ääntä, salasanoja, maksutietoja, kuvia ja viestejä."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Arkaluontoiset tiedot saatavilla suoratoiston tai tallennuksen aikana"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Älä näytä uudelleen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Poista kaikki"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Muuta asetuksia"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ääniasetukset"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Laajenna."</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Tiivistä."</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Tekstitä media automaatt."</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sulje tekstitysvinkki"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Vaihda toistolaitetta"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Näyttö on kiinnitetty"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Pysyy näkyvissä, kunnes irrotat sen. Irrota painamalla pitkään Edellinen ja Viimeisimmät."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Nämä ilmoitukset hälyttävät"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Hylkäät yleensä nämä ilmoitukset. \nHaluatko, että niitä näytetään myös jatkossa?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Valmis"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Käytä"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Jatketaanko näiden ilmoitusten näyttämistä?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Lopeta ilmoitukset"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Lähetä ilman ääntä"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Estä"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Jatka näyttämistä"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Pienennä"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Näytä ilman ääntä"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Hiljainen"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Jatka äänettömyyttä"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Hälytä"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Huomattava"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Jatka ilmoituksista hälyttämistä"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Poista ilmoitukset käytöstä"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Jatketaanko ilmoitusten näyttämistä tästä sovelluksesta?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Estetyt ilmoitukset eivät näy missään eivätkä toista ääniä. Voit kumota ilmoitusten eston asetuksissa."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Hiljaiset ilmoitukset näkyvät ilmoitusalueella, mutta ne eivät näy lukitusnäytöllä, näytä banneria tai toista ääntä."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ilmoituksista kuuluu ääni ja ne näytetään ilmoituspaneelissa, tilapalkissa ja lukitusnäytöllä"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Näitä ilmoituksia ei voi poistaa käytöstä"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Tämä sovellus käyttää kameraa."</string>
<string name="appops_microphone" msgid="741508267659494555">"Tämä sovellus käyttää mikrofonia."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalenteri"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Näytä äänenvoimakkuuden säätimien yhteydessä"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Älä häiritse"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Älä häiritse"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Äänenvoimakkuuspainikkeiden pikanäppäin"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Poistu Älä häiritse -tilasta, kun äänenvoimakkuus nousee"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Poistu Älä häiritse -tilasta, kun äänenvoimakkuus nousee"</string>
<string name="battery" msgid="7498329822413202973">"Akku"</string>
<string name="clock" msgid="7416090374234785905">"Kello"</string>
<string name="headset" msgid="4534219457597457353">"Kuulokemikrofoni"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Siirry selaimeen"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobiilitiedonsiirto"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi on pois käytöstä"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth ei ole käytössä"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Älä häiritse ‑tila on pois käytöstä"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Asetukset"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Selvä"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Luo SysUI-keon vedos"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> sovellusta</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> sovellus</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> käyttää ominaisuuksia (<xliff:g id="TYPES_LIST">%2$s</xliff:g>)."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"<xliff:g id="TYPES_LIST">%s</xliff:g> ovat sovellusten käytössä."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Käytössä:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="TYPE_5">%2$s</xliff:g> on <xliff:g id="NUM_APPS_4">%1$d</xliff:g> sovelluksen käytössä.</item>
- <item quantity="one"><xliff:g id="TYPE_1">%2$s</xliff:g> on <xliff:g id="NUM_APPS_0">%1$d</xliff:g> sovelluksen käytössä.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Selvä"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Tietosuoja-asetukset"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Sovellus, jolla on <xliff:g id="TYPES_LIST">%s</xliff:g> ‑käyttöoikeus"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Sovellukset, joilla on <xliff:g id="TYPES_LIST">%s</xliff:g> ‑käyttöoikeus"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ja "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"sijainti"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofoni"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> muuta sovellusta</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> muu sovellus</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Anturit pois päältä"</string>
<string name="device_services" msgid="1191212554435440592">"Laitepalvelut"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ei nimeä"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Napauta, niin sovellus käynnistyy uudelleen ja siirtyy koko näytön tilaan."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Avaa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Avaa ilmoitusasetukset (<xliff:g id="APP_NAME">%1$s</xliff:g>)"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Sallitaanko kuplat tästä sovelluksesta?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Estä"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Kuplien asetukset: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Sallitaanko kuplat (<xliff:g id="APP_NAME">%1$s</xliff:g>)?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Estä"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Salli"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Kysy myöhemmin"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>: <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (<xliff:g id="APP_NAME">%2$s</xliff:g>) ja <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> muuta"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Siirrä"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Siirrä vasempaan yläreunaan"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Siirrä oikeaan yläreunaan"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Siirrä vasempaan alareunaan"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Siirrä oikeaan alareunaan"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index be5ec211382a..6e0bd3378060 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Servez-vous du chargeur fourni avec votre appareil"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Paramètres"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Activer la fonction Économie d\'énergie?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"À propos du mode Économiseur de pile"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activer"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activer la fonction Économie d\'énergie"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Paramètres"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Le port USB a été désactivé"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Pour protéger votre appareil contre les liquides et les débris, le port USB est désactivé et ne détectera pas les accessoires connectés.\n\nVous recevrez une notification lorsque vous pourrez utiliser le port USB de nouveau."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Le port USB a été activé afin de détecté les chargeurs et les accessoires"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Activer l\'USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoomer pour remplir l\'écran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Étirer pour remplir l\'écran"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Capture d\'écran"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Déverrouiller le système sans utiliser votre empreinte digitale"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Numérisation du visage"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Envoyer"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gérer les notifications"</string>
<string name="unlock_label" msgid="8779712358041029439">"déverrouiller"</string>
<string name="phone_label" msgid="2320074140205331708">"Ouvrir le téléphone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ouvrir l\'assistance vocale"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Données cellulaires"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Données cellulaires activées"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Désactivées"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Non configuré pour l\'utilisation des données cellulaires"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Désactivé"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Partage de connexion Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Le mode Avion est activé."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"aucune interruption"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarmes seulement"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne pas déranger."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Le mode Ne pas déranger est désactivé."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Le mode Ne pas déranger est activé."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth désactivé."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activé."</string>
@@ -279,6 +277,7 @@
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> autre notification à l\'intérieur.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> autres notifications à l\'intérieur.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g> : <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Paramètres de notification"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Paramètres de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Écran de veille"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Maintenez le doigt sur les icônes pour afficher plus d\'options"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne pas déranger"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Prioritaires seulement"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarmes seulement"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Aucune interruption"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"La fonction Économie d\'énergie est activée"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Réduire les performances et de fond"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Désactiver la fonction Économie d\'énergie"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Durant l\'enregistrement ou la diffusion, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> peut capturer de l\'information confidentielle, comme l\'audio que vous faites jouer et vos mots de passe, vos données de paiement, vos photos et vos messages."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposer des renseignements sensibles durant la diffusion ou l\'enregistrement"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ne plus afficher"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Tout effacer"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gérer"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Paramètres sonores"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Développer"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Réduire"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Aj. auto. s-titres aux médias"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Astuce concernant les sous-titres"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Changer d\'appareil de sortie"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"L\'écran est épinglé"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Cet écran est épinglé jusqu\'à ce que vous annuliez l\'opération. Pour annuler l\'épinglage, maintenez le doigt sur « Retour » et « Aperçu »."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ces notifications vous alerteront"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Vous ignorez habituellement ces notifications. \nSouhaitez-vous continuer à les afficher?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Terminé"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Appliquer"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Continuer à afficher ces notifications?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Arrêter les notifications"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Afficher silencieusement"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquer"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuer à afficher"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Réduire"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Afficher en silence"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Alertes discrètes"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Continuer d\'util. mode silencieux"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Alertes perturbatrices"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continuer d\'envoyer des alertes"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Désactiver les notifications"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuer à afficher les notifications de cette application?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Les notifications bloquées ne s\'affichent nulle part et n\'émettent aucun son. Vous pouvez débloquer les notifications dans les paramètres."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Les notifications silencieuses s\'affichent dans l\'ombre, mais pas sur l\'écran de verrouillage ni dans une bannière, et elles n\'émettent aucun son."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ces notifications émettront un son et s\'afficheront dans le panneau des notifications, dans la barre d\'état et sur l\'écran de verrouillage"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ces notifications ne peuvent pas être désactivées"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ce groupe de notifications ne peut pas être configuré ici"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"par <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Cette application utilise l\'appareil photo."</string>
<string name="appops_microphone" msgid="741508267659494555">"Cette application utilise le microphone."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Agenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Afficher avec les commandes de volume"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne pas déranger"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Raccourci des boutons de volume"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Quitter le mode Ne pas déranger avec le bouton augm. volume"</string>
<string name="battery" msgid="7498329822413202973">"Pile"</string>
<string name="clock" msgid="7416090374234785905">"Horloge"</string>
<string name="headset" msgid="4534219457597457353">"Écouteurs"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ouvrir le navigateur"</string>
<string name="mobile_data" msgid="7094582042819250762">"Données cellulaires"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> : <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Le Wi-Fi est désactivé"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Le Bluetooth est désactivé"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Le mode Ne pas déranger est désactivé"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Capturer mémoire SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> utilise votre <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Des applications utilisent votre <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"J\'ai compris"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Param. de confident."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Application qui utilise votre <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Applications qui utilisent votre <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" et "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"appareil photo"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Capteurs désactivés"</string>
<string name="device_services" msgid="1191212554435440592">"Services de l\'appareil"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sans titre"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Touchez pour redémarrer cette application et passer en plein écran."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ouvrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Paramètres pour les bulles de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Autoriser les bulles de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Refuser"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Autoriser"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Me demander plus tard"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> et <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> autres"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Déplacer"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Déplacer dans coin sup. gauche"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Déplacer dans coin sup. droit"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Déplacer dans coin inf. gauche"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Déplacer dans coin inf. droit"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 2f87f3209446..b4cc5bd44b4d 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Utiliser le chargeur d\'origine fourni avec votre appareil"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Paramètres"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Activer l\'économiseur de batterie ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"À propos de l\'économiseur de batterie"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activer"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activer l\'économiseur de batterie ?"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Paramètres"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Port USB désactivé"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Pour protéger votre appareil des liquides et des saletés, le port USB est désactivé et ne détecte plus les accessoires.\n\nVous recevrez une notification lorsque vous pourrez de nouveau utiliser le port USB en toute sécurité."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Port USB activé pour détecter les chargeurs et les accessoires"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Activer le port USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoomer pour remplir l\'écran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Étirer pour remplir l\'écran"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Capture d\'écran"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Déverrouiller le système sans utiliser votre empreinte digitale"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Analyse du visage en cours"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Envoyer"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gérer les notifications"</string>
<string name="unlock_label" msgid="8779712358041029439">"déverrouiller"</string>
<string name="phone_label" msgid="2320074140205331708">"ouvrir le téléphone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ouvrir l\'assistance vocale"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Données mobiles"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Données mobiles activées"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Désactivées"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Non configuré pour utiliser les données"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Désactivées"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Partage de connexion Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode Avion"</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Le mode Avion est activé."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"aucune interruption"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alarmes uniquement"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne pas déranger."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Le mode Ne pas déranger a été désactivé."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Le mode Ne pas déranger a été activé."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth désactivé."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activé."</string>
@@ -279,6 +277,7 @@
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> autre notification à l\'intérieur.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> autres notifications à l\'intérieur.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g> : <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Paramètres de notification"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Paramètres de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"L\'écran pivote automatiquement."</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Économiseur d\'écran"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Appuyez de manière prolongée sur les icônes pour accéder à d\'autres options"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne pas déranger"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Prioritaires uniquement"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alarmes uniquement"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Aucune interruption"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Économiseur de batterie activé"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Limite les performances et les données en arrière-plan."</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Désactiver l\'économiseur de batterie"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Pendant que vous enregistrez ou castez un contenu, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> peut capturer des informations sensibles, comme le fichier audio que vous écoutez, vos mots de passe, vos informations de paiement, vos photos et vos messages."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposition d\'informations sensibles lors de l\'enregistrement ou de la diffusion de contenu"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ne plus afficher"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Tout effacer"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gérer"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Paramètres audio"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Développer"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Réduire"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Sous-titres automatiques"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Fermer l\'info-bulle des sous-titres"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Changer de périphérique de sortie"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Écran épinglé"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Cet écran est épinglé jusqu\'à l\'annulation de l\'opération. Pour annuler l\'épinglage, appuyez de manière prolongée sur les boutons Retour et Aperçu."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ces notifications vous alerteront avec un son"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Vous ignorez généralement ces notifications. \nSouhaitez-vous continuer de les recevoir ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"OK"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Appliquer"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Continuer d\'afficher ces notifications ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Arrêter les notifications"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Notifications silencieuses"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquer"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuer d\'afficher les notifications"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Réduire"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Affichage silencieux"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Alertes discrètes"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Notifications silencieuses"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Alertes interruptives"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continuer de m\'avertir"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Désactiver les notifications"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuer d\'afficher les notifications de cette application ?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Les notifications bloquées n\'apparaissent nulle part et n\'émettent pas de son. Vous pouvez les débloquer dans les paramètres."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Les notifications silencieuses s\'affichent dans le volet, mais pas sur l\'écran de verrouillage. Elles ne s\'accompagnent pas non plus d\'une bannière ni n\'émettent de son."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ces notifications émettent un son et s\'affichent dans le panneau des notifications, la barre d\'état et l\'écran de verrouillage"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ces notifications ne peuvent pas être désactivées"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Vous ne pouvez pas configurer ce groupe de notifications ici"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Cette application utilise la caméra."</string>
<string name="appops_microphone" msgid="741508267659494555">"Cette application utilise le micro."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Agenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Afficher avec les commandes de volume"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne pas déranger"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Raccourci des boutons de volume"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Désactiver le mode Ne pas déranger via la touche volume+"</string>
<string name="battery" msgid="7498329822413202973">"Batterie"</string>
<string name="clock" msgid="7416090374234785905">"Horloge"</string>
<string name="headset" msgid="4534219457597457353">"Casque"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Accéder au navigateur"</string>
<string name="mobile_data" msgid="7094582042819250762">"Données mobiles"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi désactivé"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth désactivé"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Mode \"Ne pas déranger\" désactivé"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Copier mémoire SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> utilise votre <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Des applications utilisent votre <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Confidentialité"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Application utilisant votre/vos <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Applications utilisant votre/vos <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" et "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"appareil photo"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Capteurs désactivés"</string>
<string name="device_services" msgid="1191212554435440592">"Services pour l\'appareil"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sans titre"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Appuyez pour redémarrer cette application et activer le mode plein écran."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ouvrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Paramètres des bulles de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Autoriser les bulles pour <xliff:g id="APP_NAME">%1$s</xliff:g> ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Refuser"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Autoriser"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Me demander plus tard"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de l\'application <xliff:g id="APP_NAME">%2$s</xliff:g> et <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> autres"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Déplacer"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Déplacer en haut à gauche"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Déplacer en haut à droite"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Déplacer en bas à gauche"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Déplacer en bas à droite"</string>
</resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 524401ad0d23..62da3b643dbc 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Utiliza o cargador que incluía o dispositivo"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Configuración"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Queres activar a función Aforro de batería?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Acerca de Aforro de batería"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activar"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activar a función Aforro de batería"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configuración"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"O usuario coa sesión iniciada actualmente neste dispositivo non pode activar a depuración por USB. Para utilizar esta función, cambia ao usuario principal."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"O porto USB está desactivado"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para protexer o dispositivo de líquidos ou residuos, desactivouse o porto USB e non detectará ningún accesorio.\n\nRecibirás unha notificación cando o poidas usar de novo."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Activouse o porto USB para detectar cargadores e accesorios"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Activar USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Ampliar ata ocupar todo"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estirar ata ocupar todo"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de pantalla"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloquea sen usar a túa impresión dixital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Analizando cara"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Xestionar notificacións"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string>
<string name="phone_label" msgid="2320074140205331708">"abrir teléfono"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"abrir asistente de voz"</string>
<string name="camera_label" msgid="7261107956054836961">"abrir cámara"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Área de mensaxes de axuda"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirmar"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Tentar de novo"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Toca o sensor de impresión dixital"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Datos móbiles"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Os datos móbiles están activados"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Os datos móbiles están desactivados"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Non se configurou para utilizar datos"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desactivado"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conexión compartida por Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avión"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Activouse o modo avión."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silencio total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"só alarmas"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Non molestar."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Desactivouse a opción Non molestar."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Activouse a opción Non molestar."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Modo Non molestar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Desactivouse o modo Non molestar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Activouse o modo Non molestar."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desactivado."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth activado."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitudes de localización activas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Eliminar todas as notificacións."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> máis"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (+<xliff:g id="OVERFLOW">%2$s</xliff:g>)"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> notificacións máis no grupo.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> notificación máis no grupo.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configuración das notificacións"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configuración de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A pantalla xirará automaticamente."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Protector pantalla"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Mantén premidas as iconas para ver máis opcións"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Non molestar"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Non molestar"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Só prioridade"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Só alarmas"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silencio total"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"A función Aforro de batería está activada"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduce o rendemento e os datos en segundo plano"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desactivar a función Aforro de batería"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> empezará a capturar todo o que aparece na túa pantalla, incluídas as notificacións, os contrasinais, as fotos, as mensaxes e a información de pago."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Queres permitir que <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> grave ou emita a túa pantalla?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Mentres graves ou emitas contido, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pode captar información confidencial, como o audio que reproduzas, os contrasinais, a información de pago, as fotos e as mensaxes."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Revelar información confidencial durante a emisión ou a gravación"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Non mostrar outra vez"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Eliminar todas"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Xestionar"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Configuración do son"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Ampliar"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Contraer"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Crear subtítulos automáticos"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Pechar consello sobre subtítulos"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambia ao dispositivo de saída"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"A pantalla está fixada"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"A pantalla manterase visible ata que a soltes. Para facelo, mantén premido Atrás e Visión xeral."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Estas notificacións mostraranse con son"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Ignoras estas notificacións a miúdo. \nQueres seguir recibíndoas?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Feito"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicar"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Queres seguir mostrando estas notificacións?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Deter notificacións"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Enviar en silencio"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquear"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuar mostrando notificacións"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizar"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostrar en silencio"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"En silencio"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Notificacións silenciosas"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Recibir notificacións"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Emerxente"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continuar recibindo notificacións"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desactivar notificacións"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Queres seguir mostrando as notificacións desta aplicación?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"As notificacións bloqueada non aparecen en ningures nin reproducen ningún son. Podes desbloquealas na configuración."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"As notificacións silenciosas aparecen no menú despregable da parte superior da pantalla, pero non na pantalla de bloqueo. Tampouco conteñen ningún báner nin reproducen ningún son."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Estas notificacións soarán e mostraranse no panel de notificacións, na barra de estado e na pantalla de bloqueo"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Non se poden desactivar estas notificacións"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Aquí non se pode configurar este grupo de notificacións"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"mediante <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Esta aplicación está utilizando a cámara."</string>
<string name="appops_microphone" msgid="741508267659494555">"Esta aplicación está utilizando o micrófono."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendario"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostrar cos controis de volume"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Non molestar"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Non molestar"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Atallo dos botóns de volume"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Desactivar o modo Non molestar ao subir o volume"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Desactivar modo Non molestar ao subir o volume"</string>
<string name="battery" msgid="7498329822413202973">"Batería"</string>
<string name="clock" msgid="7416090374234785905">"Reloxo"</string>
<string name="headset" msgid="4534219457597457353">"Auriculares"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ir ao navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Datos móbiles"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g>-<xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"A wifi está desactivada"</string>
<string name="bt_is_off" msgid="2640685272289706392">"O Bluetooth está desactivado"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"O modo Non molestar está desactivado"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Configuración"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"De acordo"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Baleirar mont. SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplicacións</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplicación</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> está utilizando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Hai aplicacións que están utilizando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"En uso:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicacións utilizan o teu dispositivo (<xliff:g id="TYPE_5">%2$s</xliff:g>).</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicación utiliza o teu dispositivo (<xliff:g id="TYPE_1">%2$s</xliff:g>).</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"De acordo"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. privacidade"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicación que utiliza o seguinte: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicacións que utilizan o seguinte: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" e "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"a cámara"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"a localiz."</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"o micrófono"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplicacións máis</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplicación máis</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Desactivar sensores"</string>
<string name="device_services" msgid="1191212554435440592">"Servizos do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sen título"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Toca o botón para reiniciar esta aplicación e abrila en pantalla completa."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abre a aplicación <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abre a configuración de notificacións para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Queres permitir burbullas desta aplicación?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloquear"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Configuración dos globos de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Queres permitir que se mostren os globos de <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Denegar"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permitir"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Preguntarme máis tarde"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> e <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> máis"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mover"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mover á parte super. esquerda"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mover á parte superior dereita"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mover á parte infer. esquerda"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mover á parte inferior dereita"</string>
</resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index ac2af3464921..42e1fef0b78c 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"તમારા ઉપકરણ સાથે આવેલ ચાર્જરનો ઉપયોગ કરો"</string>
<string name="battery_low_why" msgid="4553600287639198111">"સેટિંગ્સ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"બૅટરી સેવર ચાલુ કરીએ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"બૅટરી સેવર વિશે"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ચાલુ કરો"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"બૅટરી સેવર ચાલુ કરો"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"સેટિંગ્સ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"હાલમાં આ ઉપકરણમાં સાઇન ઇન થયેલ વપરાશકર્તા USB ડિબગીંગ ચાલુ કરી શકતા નથી. આ સુવિધાનો ઉપયોગ કરવા માટે પ્રાથમિક વપરાશકર્તા પર સ્વિચ કરો."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB પોર્ટ બંધ કરવામાં આવ્યો છે"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"પ્રવાહી અથવા ધૂળથી તમારા ડિવાઇસનું રક્ષણ કરવા માટે, USB પોર્ટ બંધ કરવામાં આવ્યો છે અને કોઈ ઍક્સેસરી શોધશે નહીં.\n\nફરી USB પોર્ટનો ઉપયોગ કરવાનું સુરક્ષિત હશે ત્યારે તમને નોટિફિકેશન આપવામાં આવશે."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ચાર્જર અને ઍક્સેસરીની ઓળખ માટે USB પોર્ટ ચાલુ કર્યું"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB ચાલુ કરો"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"સ્ક્રીન ભરવા માટે ઝૂમ કરો"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"સ્ક્રીન ભરવા માટે ખેંચો"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"સ્ક્રીનશૉટ"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"તમારી ફિંગરપ્રિન્ટનો ઉપયોગ કર્યા વગર અનલૉક કરો"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ચહેરો સ્કૅન કરવો"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"મોકલો"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"નોટિફિકેશનને મેનેજ કરો"</string>
<string name="unlock_label" msgid="8779712358041029439">"અનલૉક કરો"</string>
<string name="phone_label" msgid="2320074140205331708">"ફોન ખોલો"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"વૉઇસ સહાય ખોલો"</string>
<string name="camera_label" msgid="7261107956054836961">"કૅમેરો ખોલો"</string>
<string name="cancel" msgid="6442560571259935130">"રદ કરો"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"સહાય સંદેશનું ક્ષેત્ર"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"કન્ફર્મ કરો"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ફરી પ્રયાસ કરો"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"ફિંગરપ્રિન્ટના સેન્સરને સ્પર્શ કરો"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"મોબાઇલ ડેટા"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"મોબાઇલ ડેટા ચાલુ છે"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"મોબાઇલ ડેટા બંધ છે"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ડેટાનો ઉપયોગ કરવાનું સેટ કર્યું નથી"</string>
<string name="cell_data_off" msgid="1051264981229902873">"બંધ કરો"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"બ્લૂટૂથ ટિથરિંગ."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"એરપ્લેન મોડ."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"એરપ્લેન મોડ ચાલુ કર્યો."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"બિલકુલ અવાજ નહીં"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"માત્ર અલાર્મ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ખલેલ પાડશો નહીં."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ખલેલ પાડશો નહીં બંધ કર્યું."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ખલેલ પાડશો નહીં ચાલુ કર્યું."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ખલેલ પાડશો નહીં."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"ખલેલ પાડશો નહીં બંધ કર્યું."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"ખલેલ પાડશો નહીં ચાલુ કર્યું."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"બ્લૂટૂથ."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"બ્લૂટૂથ બંધ."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"બ્લૂટૂથ ચાલુ."</string>
@@ -269,11 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"સ્થાન વિનંતીઓ સક્રિય"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"બધા સૂચનો સાફ કરો."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> વધુ સૂચના અંદર છે.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> વધુ સૂચના અંદર છે.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"સૂચનાઓની સેટિંગ્સ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> સેટિંગ્સ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"સ્ક્રીન આપમેળે ફરશે."</string>
@@ -286,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"સ્ક્રીન સેવર"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ઇથરનેટ"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"વધુ વિકલ્પો માટે આઇકનને સ્પર્શ કરી રાખો"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"ખલેલ પાડશો નહીં"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"ખલેલ પાડશો નહીં"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ફક્ત પ્રાધાન્યતા"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"ફક્ત એલાર્મ્સ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"સાવ શાંતિ"</string>
@@ -437,8 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"બૅટરી સેવર ચાલુ છે"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"પ્રદર્શન અને બૅકગ્રાઉન્ડ ડેટા ઘટાડે છે"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"બૅટરી સેવર બંધ કરો"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>, નોટિફિકેશન, પાસવર્ડ, ફોટા, સંદેશા અને ચુકવણીની માહિતી સહિત તમારી સ્ક્રીન પર રહેલી દરેક વસ્તુને કૅપ્ચર કરવાનું શરૂ કરશે."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>ને તમારી સ્ક્રીનને રેકોર્ડ અથવા કાસ્ટ કરવાની મંજૂરી આપીએ?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"રેકોર્ડ અથવા કાસ્ટ કરતી વખતે, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> કોઈ પણ સંવેદનશીલ માહિતી કૅપ્ચર કરી શકે છે, જેમ કે તમે વગાડો તે ઑડિયો અને તમારા પાસવર્ડ, ચુકવણીની માહિતી, ફોટા અને સંદેશા."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"કાસ્ટિંગ/રેકોર્ડિંગ દરમિયાન સંવેદનશીલ માહિતી દર્શાવવી"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ફરીથી બતાવશો નહીં"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"બધુ સાફ કરો"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"મેનેજ કરો"</string>
@@ -513,6 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"સાઉન્ડ સેટિંગ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"વિસ્તૃત કરો"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"સંકુચિત કરો"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"મીડિયામાં કૅપ્શન આપમેળે ઉમેરો"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"કૅપ્શન ટિપ બંધ કરો"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"આઉટપુટ ઉપકરણ સ્વિચ કરો"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"સ્ક્રીન પિન કરેલ છે"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"તમે જ્યાં સુધી અનપિન કરશો નહીં ત્યાં સુધી આ તેને દૃશ્યક્ષમ રાખે છે. અનપિન કરવા માટે પાછળ અને ઝલકને સ્પર્શ કરી રાખો."</string>
@@ -613,18 +620,30 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"આ બધા નોટિફિકેશન તમને અલર્ટ કરશે"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"તમે સામાન્ય રીતે આ નોટીફિકેશનને છોડી દો છો. \nતેમને બતાવવાનું ચાલુ રાખીએ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"થઈ ગયું"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"આ નોટિફિકેશન બતાવવાનું ચાલુ રાખીએ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"નોટિફિકેશન બંધ કરો"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"ચુપચાપ મોકલો"</string>
<string name="inline_block_button" msgid="8735843688021655065">"બ્લૉક કરો"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"બતાવવાનું ચાલુ રાખો"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"નાનું કરો"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"સાઇલન્ટલી બતાવો"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"સાઇલન્ટ મોડ ચાલુ રાખો"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"મને અલર્ટ બતાવો"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"અલર્ટ કરવાનું ચાલુ રાખો"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"આ ઍપમાંથી નોટિફિકેશન બતાવવાનું ચાલુ રાખીએ?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"બ્લૉક કરેલાં નોટિફિકેશન ક્યાંય દેખાતાં નથી કે અવાજ સંભળાવતાં નથી. તમે સેટિંગમાં જઈને નોટિફિકેશનને અનબ્લૉક કરી શકો છો."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"સાઇલન્ટ નોટિફિકેશન શેડમાં દેખાય છે, પણ લૉક સ્ક્રીન પર દેખાતાં નથી, બૅનર પ્રસ્તુત કરે છે અથવા ધ્વનિ વગાડે છે."</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"આ નોટિફિકેશન બંધ કરી શકશો નહીં"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> મારફતે"</string>
<string name="appops_camera" msgid="8100147441602585776">"આ ઍપ કૅમેરાનો ઉપયોગ કરી રહી છે."</string>
<string name="appops_microphone" msgid="741508267659494555">"આ ઍપ માઇક્રોફોનનો ઉપયોગ કરી રહી છે."</string>
@@ -703,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"કૅલેન્ડર"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"વૉલ્યૂમ નિયંત્રણ સાથે બતાવો"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ખલેલ પાડશો નહીં"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"ખલેલ પાડશો નહીં"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"વૉલ્યૂમ બટન્સ શૉર્ટકટ"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"વૉલ્યૂમ વધારવા પર ખલેલ પાડશો નહીંમાંથી બહાર નિકળો"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"વૉલ્યૂમ વધારવા પર ખલેલ પાડશો નહીંમાંથી બહાર નીકળો"</string>
<string name="battery" msgid="7498329822413202973">"બૅટરી"</string>
<string name="clock" msgid="7416090374234785905">"ઘડિયાળ"</string>
<string name="headset" msgid="4534219457597457353">"હૅડસેટ"</string>
@@ -846,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"બ્રાઉઝર પર જાઓ"</string>
<string name="mobile_data" msgid="7094582042819250762">"મોબાઇલ ડેટા"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"વાઇ-ફાઇ બંધ છે"</string>
<string name="bt_is_off" msgid="2640685272289706392">"બ્લૂટૂથ બંધ છે"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"ખલેલ પાડશો નહીં બંધ છે"</string>
@@ -875,36 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"સેટિંગ"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"સમજાઈ ગયું"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> ઍપ</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ઍપ</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ઍપ તમારા <xliff:g id="TYPES_LIST">%2$s</xliff:g>નો ઉપયોગ કરી રહી છે."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ઍપ્લિકેશન તમારા <xliff:g id="TYPES_LIST">%s</xliff:g>નો ઉપયોગ કરી રહી છે."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"વપરાશમાં:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ઍપ્લિકેશન તમારા <xliff:g id="TYPE_5">%2$s</xliff:g>નો ઉપયોગ કરી રહી છે.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ઍપ્લિકેશનો તમારા <xliff:g id="TYPE_5">%2$s</xliff:g>નો ઉપયોગ કરી રહી છે.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"સમજાઈ ગયું"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"પ્રાઇવસી સેટિંગ"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"અ‍ૅપ તમારા <xliff:g id="TYPES_LIST">%s</xliff:g>નો ઉપયોગ કરી રહી છે"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"અ‍ૅપ તમારા <xliff:g id="TYPES_LIST">%s</xliff:g>નો ઉપયોગ કરી રહી છે"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" અને "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"કૅમેરા"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"સ્થાન"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"માઇક્રોફોન"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> અન્ય ઍપ</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> અન્ય ઍપ</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"સેન્સર બંધ છે"</string>
<string name="device_services" msgid="1191212554435440592">"ડિવાઇસ સેવાઓ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"કોઈ શીર્ષક નથી"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"આ ઍપ ફરીથી ચાલુ કરવા માટે ટૅપ કરીને પૂર્ણ સ્ક્રીન કરો."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ખોલો"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> માટે નોટિફિકેશનની સેટિંગ ખોલો"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"આ ઍપ માટે બબલ ચાલુ કરીએ?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"બ્લૉક કરો"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> બબલ માટેનાં સેટિંગ"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> પરના બબલને મંજૂરી આપીએ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"નકારો"</string>
<string name="yes_bubbles" msgid="668809525728633841">"મંજૂરી આપો"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"મને થોડા સમય પછી પૂછશો"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> તરફથી <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> અને વધુ <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> તરફથી <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ખસેડો"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ઉપર ડાબે ખસેડો"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ઉપર જમણે ખસેડો"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"નીચે ડાબે ખસેડો"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"નીચે જમણે ખસેડો"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index c81a1594aa29..cf1617968634 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"अपने डिवाइस के साथ मिलने वाले चार्जर का इस्तेमाल करें"</string>
<string name="battery_low_why" msgid="4553600287639198111">"सेटिंग"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"क्या आप बैटरी सेवर चालू करना चाहते हैं?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"बैटरी सेवर के बारे में"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"चालू करें"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"बैटरी सेवर चालू करें"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"सेटिंग"</string>
@@ -62,6 +63,10 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"अभी इस डिवाइस में जिस उपयोगकर्ता ने साइन इन किया है, वो USB डीबगिंग चालू नहीं कर सकता. इस सुविधा का इस्तेमाल करने के लिए, प्राथमिक उपयोगकर्ता में बदलें."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"यूएसबी पोर्ट बंद है"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"तरल चीज़ या कचरे से आपके डिवाइस की सुरक्षा करने के लिए, यूएसबी पोर्ट को बंद कर दिया गया है और वह किसी भी एक्सेसरी की पहचान नहीं करेगा.\n\nयूएसबी पोर्ट का दोबारा इस्तेमाल करना सुरक्षित होने पर आपको सूचित किया जाएगा."</string>
+ <!-- no translation found for usb_port_enabled (7906141351687694867) -->
+ <skip />
+ <!-- no translation found for usb_disable_contaminant_detection (2103905315747120033) -->
+ <skip />
<string name="compat_mode_on" msgid="6623839244840638213">"स्‍क्रीन भरने के लिए ज़ूम करें"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"स्‍क्रीन भरने के लिए खींचें"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"स्क्रीनशॉट"</string>
@@ -108,12 +113,13 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"अपने फ़िंगरप्रिंट का इस्तेमाल किए बिना अनलॉक करें"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"डिवाइस अनलॉक करने के लिए चेहरा स्कैन किया जाता है"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"भेजें"</string>
+ <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
+ <skip />
<string name="unlock_label" msgid="8779712358041029439">"अनलॉक करें"</string>
<string name="phone_label" msgid="2320074140205331708">"फ़ोन खोलें"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"आवाज़ से डिवाइस को इस्तेमाल करें"</string>
<string name="camera_label" msgid="7261107956054836961">"कैमरा खोलें"</string>
<string name="cancel" msgid="6442560571259935130">"रद्द करें"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"सहायता का मैसेज दिखाने की जगह"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"पुष्टि करें"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"फिर से कोशिश करें"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"फ़िंगरप्रिंट सेंसर को छुएं"</string>
@@ -179,6 +185,8 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"मोबाइल डेटा"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"मोबाइल डेटा चालू है"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"मोबाइल डेटा बंद है"</string>
+ <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
+ <skip />
<string name="cell_data_off" msgid="1051264981229902873">"बंद है"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लूटूथ से टेदरिंग."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाई जहाज मोड."</string>
@@ -220,9 +228,12 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"हवाई जहाज़ मोड को चालू किया गया."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"कोई आवाज़ सुनाई नहीं देगी"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"सिर्फ़ अलार्म की आवाज़ सुनाई देगी"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"परेशान ना करें."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"परेशान ना करें बंद किया गया."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"परेशान ना करें चालू किया गया."</string>
+ <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
+ <skip />
+ <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
+ <skip />
+ <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
+ <skip />
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ब्लूटूथ."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ब्लूटूथ बंद है."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ब्लूटूथ चालू है."</string>
@@ -269,11 +280,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"जगह का अनुरोध किया जा रहा है"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सभी सूचनाएं साफ़ करें."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">इसमें <xliff:g id="NUMBER_1">%s</xliff:g> और सूचनाएं हैं.</item>
<item quantity="other">इसमें <xliff:g id="NUMBER_1">%s</xliff:g> और सूचनाएं हैं.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"सूचना सेटिंग"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> सेटिंग"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्‍क्रीन स्‍वचालित रूप से घूमेगी."</string>
@@ -286,7 +298,8 @@
<string name="start_dreams" msgid="5640361424498338327">"स्क्रीन सेवर"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ईथरनेट"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ज़्यादा विकल्प देखने के लिए आइकॉन को दबाकर रखें"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"परेशान ना करें"</string>
+ <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
+ <skip />
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"सिर्फ़ प्राथमिकता"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"सिर्फ़ अलार्म"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"पूरी तरह शांत"</string>
@@ -437,8 +450,10 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"बैटरी सेवर चालू है"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"निष्‍पादन और पृष्ठभूमि डेटा को कम करता है"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"बैटरी सेवर बंद करें"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> आपकी स्क्रीन की सभी सामग्री कैप्चर करेगा. इसमें सूचनाएं, पासवर्ड, फ़ोटो, मैसेज, और पैसे चुकाने की जानकारी भी शामिल होगी."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> को अपनी स्क्रीन रिकॉर्ड या कास्ट करने की मंज़ूरी दें?"</string>
+ <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
+ <skip />
+ <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
+ <skip />
<string name="media_projection_remember_text" msgid="3103510882172746752">"फिर से न दिखाएं"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"सभी को हटाएं"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"प्रबंधित करें"</string>
@@ -513,6 +528,10 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"साउंड सेटिंग"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तार करें"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"छोटा करें"</string>
+ <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
+ <skip />
+ <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
+ <skip />
<string name="accessibility_output_chooser" msgid="8185317493017988680">"आउटपुट डिवाइस बदलें"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"स्‍क्रीन पिन कर दी गई है"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"इससे वह तब तक दिखता रहता है जब तक कि आप उसे अनपिन नहीं कर देते. अनपिन करने के लिए, \'वापस जाएं\' और \'खास जानकारी\' को दबाकर रखें."</string>
@@ -613,18 +632,32 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ये सूचनाएं आपको अलर्ट करेंगी"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"अाप अक्सर इन सूचनाओं को खारिज कर देते हैं. \nआगे भी इन्हें देखना जारी रखना चाहते हैं?"</string>
<string name="inline_done_button" msgid="492513001558716452">"हो गया"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"ये सूचनाएं दिखाना जारी रखें?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"सूचनाएं दिखाना बंद करें"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"बिना आवाज़ के भेजें"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ब्लॉक करें"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"दिखाना जारी रखें"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"सूचनाएं छोटी करें"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"बिना आवाज़ के दिखाएं"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"साइलेंट मोड में सूचनाएं पाएं"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"मुझे सूचना दें"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"सूचना देना जारी रखें"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"इस ऐप्लिकेशन से जुड़ी सूचनाएं दिखाना जारी रखें?"</string>
+ <!-- no translation found for hint_text_block (3554459167504485284) -->
+ <skip />
+ <!-- no translation found for hint_text_silent (859468056340177016) -->
+ <skip />
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ये सूचनाएं दिखाया जाना बंद नहीं किया जा सकता"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> के ज़रिए"</string>
<string name="appops_camera" msgid="8100147441602585776">"यह ऐप्लिकेशन कैमरे का इस्तेमाल कर रहा है."</string>
<string name="appops_microphone" msgid="741508267659494555">"यह ऐप्लिकेशन माइक्रोफ़ोन का इस्तेमाल कर रहा है."</string>
@@ -703,9 +736,11 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"कैलेंडर"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"वॉल्यूम नियंत्रणों के साथ दिखाएं"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"परेशान न करें"</string>
+ <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
+ <skip />
<string name="volume_dnd_silent" msgid="4363882330723050727">"वॉल्यूम बटन का शॉर्टकट"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"वॉल्यूम बढ़ाएं पर परेशान न करें से बाहर निकलें"</string>
+ <!-- no translation found for volume_up_silent (7545869833038212815) -->
+ <skip />
<string name="battery" msgid="7498329822413202973">"बैटरी"</string>
<string name="clock" msgid="7416090374234785905">"घड़ी"</string>
<string name="headset" msgid="4534219457597457353">"हेडसेट"</string>
@@ -846,6 +881,8 @@
<string name="go_to_web" msgid="2650669128861626071">"ब्राउज़र पर जाएं"</string>
<string name="mobile_data" msgid="7094582042819250762">"मोबाइल डेटा"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <!-- no translation found for mobile_carrier_text_format (3241721038678469804) -->
+ <skip />
<string name="wifi_is_off" msgid="1838559392210456893">"वाई-फ़ाई बंद है"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ब्लूटूथ बंद है"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"परेशान न करें बंद है"</string>
@@ -875,36 +912,40 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"सेटिंग"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ठीक है"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> ऐप्लिकेशन</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ऐप्लिकेशन</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> आपकी <xliff:g id="TYPES_LIST">%2$s</xliff:g> का इस्तेमाल कर रहा है."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ऐप्लिकेशन आपकी <xliff:g id="TYPES_LIST">%s</xliff:g> का इस्तेमाल कर रहे हैं."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"उपयोग में:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ऐप्लिकेशन आपके <xliff:g id="TYPE_5">%2$s</xliff:g> का इस्तेमाल कर रहे हैं.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ऐप्लिकेशन आपके <xliff:g id="TYPE_5">%2$s</xliff:g> का इस्तेमाल कर रहे हैं.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ठीक है"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"निजता सेटिंग"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> का इस्तेमाल कर रहा ऐप्लिकेशन"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"आपके <xliff:g id="TYPES_LIST">%s</xliff:g> का इस्तेमाल कर रहे ऐप्लिकेशन"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" और "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"कैमरा"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"जगह"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"माइक्रोफ़ोन"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> दूसरे ऐप्लिकेशन</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> दूसरे ऐप्लिकेशन</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"सेंसर बंद हैं"</string>
<string name="device_services" msgid="1191212554435440592">"डिवाइस सेवाएं"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"कोई शीर्षक नहीं"</string>
+ <!-- no translation found for restart_button_description (2035077840254950187) -->
+ <skip />
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> खोलें"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> के लिए \'सूचना सेटिंग\' खोलें"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"इस ऐप्लिकेशन को बबल दिखाने की मंज़ूरी दें?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ब्लॉक करें"</string>
+ <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
+ <skip />
+ <!-- no translation found for bubbles_prompt (8807968030159469710) -->
+ <skip />
+ <!-- no translation found for no_bubbles (337101288173078247) -->
+ <skip />
<string name="yes_bubbles" msgid="668809525728633841">"अनुमति दें"</string>
+ <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
+ <skip />
+ <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
+ <skip />
+ <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 3173f71a354b..7018cfd500b3 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Koristite punjač koji ste dobili s uređajem"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Postavke"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Želite li uključiti Štednju baterije?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"O Štednji baterije"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Uključi"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Uključite Štednju baterije"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Postavke"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Korisnik koji je trenutačno prijavljen na ovaj uređaj ne može uključiti otklanjanje pogrešaka putem USB-a. Da biste upotrebljavali tu značajku, prijeđite na primarnog korisnika."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Onemogućen je USB priključak"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Radi zaštite uređaja od tekućine ili prljavštine USB priključak onemogućen je i neće otkrivati pribor.\n\nPrimit ćete obavijest kad upotreba USB priključka ponovo bude sigurna."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB priključak omogućen za otkrivanje punjača i opreme"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Omogući USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zumiraj i ispuni zaslon"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rastegni i ispuni zaslon"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Snimka zaslona"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Otključavanje bez otiska prsta"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skeniranje lica"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošalji"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljanje obavijestima"</string>
<string name="unlock_label" msgid="8779712358041029439">"otključavanje"</string>
<string name="phone_label" msgid="2320074140205331708">"otvaranje telefona"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"otvaranje glasovne pomoći"</string>
<string name="camera_label" msgid="7261107956054836961">"otvaranje fotoaparata"</string>
<string name="cancel" msgid="6442560571259935130">"Odustani"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Područje poruke za pomoć"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Potvrdi"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Pokušaj ponovo"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Dodirnite senzor otiska prsta"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobilni podaci"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobilni su podaci uključeni"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobilni su podaci isključeni"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nije postavljeno za upotrebu podataka"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Isključeno"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Posredno povezivanje Bluetootha."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Način rada u zrakoplovu"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Način rada u zrakoplovu uključen."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"potpuna tišina"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"samo alarmi"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne ometaj."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Ne ometaj\" isključeno."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Ne ometaj\" uključeno."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne uznemiravaj."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Isključena je značajka Ne uznemiravaj."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Uključena je značajka Ne uznemiravaj."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth isključen."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth uključen."</string>
@@ -269,12 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Zahtjevi za lokaciju aktivni su"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Brisanje svih obavijesti."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"još <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">U skupini je još <xliff:g id="NUMBER_1">%s</xliff:g> obavijest.</item>
<item quantity="few">U skupini su još <xliff:g id="NUMBER_1">%s</xliff:g> obavijesti.</item>
<item quantity="other">U skupini je još <xliff:g id="NUMBER_1">%s</xliff:g> obavijesti.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Postavke obavijesti"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Postavke aplikacije <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon će se automatski zakrenuti."</string>
@@ -287,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Čuvar zaslona"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Dodirnite ikone i zadržite pritisak da biste vidjeli više opcija"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ne ometaj"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne uznemiravaj"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Samo prioritetno"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Samo alarmi"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Potpuna tišina"</string>
@@ -440,8 +444,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Štednja baterije je uključena"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Smanjuje količinu rada i pozadinske podatke"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Isključite Štednju baterije"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> će početi snimati sve na zaslonu, uključujući obavijesti, zaporke, fotografije, poruke i podatke o plaćanju."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Dopustiti aplikaciji <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> da snima ili emitira vaš zaslon?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Tijekom snimanja ili emitiranja <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> može zabilježiti sve osjetljive podatke, na primjer audiozapis koji reproducirate i vaše zaporke, podatke o plaćanjima, fotografije i poruke."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Izlaganje osjetljivih podataka tijekom emitiranja/snimanja"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ne prikazuj ponovo"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Izbriši sve"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Upravljajte"</string>
@@ -516,6 +520,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Postavke zvuka"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Proširivanje"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sažimanje"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski opisi medija"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zatvorite opis"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Promijenite izlazni uređaj"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Zaslon je prikvačen"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Zaslon će tako ostati u prvom planu dok ga ne otkvačite. Dodirnite i zadržite Natrag i Pregled da biste ga otkvačili."</string>
@@ -616,18 +622,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ove obavijesti imat će zvučni signal"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Obično odbacujete te obavijesti. \nŽelite li da se nastave prikazivati?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gotovo"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Primijeni"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Želite li da se obavijesti nastave prikazivati?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Zaustavi obavijesti"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Isporuči tiho"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokiraj"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Nastavi prikazivati"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimiziraj"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Prikaži tiho"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Tiho"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Nastavi tiho"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Obavijesti me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Prekidajuća"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Nastavi obavještavati"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Isključi obavijesti"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite li da se obavijesti te aplikacije nastave prikazivati?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokirane obavijesti ne prikazuju se nigdje i ne emitiraju zvukove. Obavijesti možete deblokirati u postavkama."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Tihe obavijesti prikazuju se na zaslonu obavijesti, no ne prikazuju se na zaključanom zaslonu, ne prikazuju natpis i ne reproduciraju zvuk."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Te će obavijesti reproducirati zvučni signal i prikazat će se u ladici obavijesti te na traci statusa i zaključanom zaslonu"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Te se obavijesti ne mogu isključiti"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"putem aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ova aplikacija upotrebljava kameru."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ova aplikacija upotrebljava mikrofon."</string>
@@ -708,9 +720,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Prikaži s kontrolama glasnoće"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ne ometaj"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne uznemiravaj"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Prečac tipki za glasnoću"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Zaustavi \"Ne ometaj\" kada je zvuk pojačan"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Zaustavi Ne uznemiravaj kad je zvuk pojačan"</string>
<string name="battery" msgid="7498329822413202973">"Baterija"</string>
<string name="clock" msgid="7416090374234785905">"Sat"</string>
<string name="headset" msgid="4534219457597457353">"Slušalice"</string>
@@ -851,6 +863,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Otvori preglednik"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilni podaci"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi je isključen"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth je isključen"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Način Ne ometaj isključen"</string>
@@ -880,39 +893,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Postavke"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Shvaćam"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Izdvoji mem. SysUI-a"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> upotrebljava <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikacije upotrebljavaju <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Upotreba:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija upotrebljava <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplikacije upotrebljavaju <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija upotrebljava <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Shvaćam"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Postavke privatnosti"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacije koje upotrebljavaju <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije koje upotrebljavaju <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" i "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"fotoaparat"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokaciju"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">Još <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacija</item>
- <item quantity="few">Još <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other">Još <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacija​</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori su isključeni"</string>
<string name="device_services" msgid="1191212554435440592">"Usluge uređaja"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez naslova"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Dodirnite da biste ponovo pokrenuli tu aplikaciju i prikazali je na cijelom zaslonu."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvorite aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otvorite postavke obavijesti za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Dopustiti oblačiće iz ove aplikacije?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokiraj"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Postavke za oblačiće za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Želite li dopustiti oblačiće iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Odbij"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Dopusti"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Pitaj me kasnije"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g> i još <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Premjesti"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Premjesti u gornji lijevi kut"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Premjesti u gornji desni kut"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Premjesti u donji lijevi kut"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Premjestite u donji desni kut"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 815c8bc4c646..7bc45eaf6408 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Használja az eszközhöz kapott eredeti töltőt"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Beállítások"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Bekapcsolja az Akkumulátorkímélő módot?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Az Akkumulátorkímélő módról"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Bekapcsolás"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Akkumulátorkímélő mód bekapcsolása"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Beállítások"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Az eszközre jelenleg bejelentkezett felhasználó nem engedélyezheti az USB-hibakeresést. A funkció használatához váltson az elsődleges felhasználóra."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-port letiltva"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Az eszköz folyadéktól és szennyeződésektől való megóvása érdekében az USB-portot letiltottuk, így az nem észleli a kiegészítőket.\n\nÉrtesítést küldünk, amikor ismét biztonságosan használhatja az USB-portot."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Az USB-csatlakozó számára engedélyezve van a töltők és más tartozékok észlelése"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB engedélyezése"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Nagyítás a kitöltéshez"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Nyújtás kitöltéshez"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Képernyőkép"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Feloldás ujjlenyomat nélkül"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Arc keresése"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Küldés"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Értesítések kezelése"</string>
<string name="unlock_label" msgid="8779712358041029439">"feloldás"</string>
<string name="phone_label" msgid="2320074140205331708">"telefon megnyitása"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"hangsegéd megnyitása"</string>
<string name="camera_label" msgid="7261107956054836961">"kamera megnyitása"</string>
<string name="cancel" msgid="6442560571259935130">"Mégse"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Súgószöveg területe"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Megerősítés"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Újrapróbálkozás"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Érintse meg az ujjlenyomat-érzékelőt"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobiladatok"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobiladatok bekapcsolva"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobiladatok kikapcsolva"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nincs beállítva az adathasználat"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Ki"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth megosztása."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Repülőgép üzemmód."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Repülős üzemmód bekapcsolva."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"teljes némítás"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"csak ébresztések"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne zavarjanak"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"A „Ne zavarjanak” mód kikapcsolva."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"A „Ne zavarjanak” mód bekapcsolva."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne zavarjanak."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"A Ne zavarjanak mód kikapcsolva."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"A Ne zavarjanak mód bekapcsolva."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth kikapcsolva."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth bekapcsolva."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktív helylekérések"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Minden értesítés törlése"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> további értesítés.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> további értesítés.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Értesítési beállítások"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> beállításai"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A képernyő automatikusan forogni fog."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Képernyővédő"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Tartsa lenyomva az ikonokat a további lehetőségek megjelenítéséhez"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ne zavarjanak"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne zavarjanak"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Csak prioritásos"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Csak ébresztések"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Teljes némítás"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Akkumulátorkímélő mód bekapcsolva"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Csökkenti a teljesítményt és a háttéradatok használatát"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Akkumulátorkímélő mód kikapcsolása"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"A(z) <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> mindent rögzíteni kezd, ami a képernyőn látható (beleértve az értesítéseket, a jelszavakat, a fotókat, az üzeneteket és a fizetési információkat is)."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Engedélyezi a(z) <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> számára, hogy rögzíthesse, illetve átküldhesse a képernyő tartalmát?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Felvétel készítésekor vagy átküldés során a(z) <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> rögzíthet bizalmas információkat, például a lejátszott hangokat, a jelszavakat, a fizetési adatokat, a fotókat és az üzeneteket."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Bizalmas adatok feltárása átküldés vagy rögzítés során"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ne jelenjen meg többé"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Az összes törlése"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Kezelés"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Hangbeállítások"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Kibontás"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Összecsukás"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatikus feliratozás"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Feliratokkal kapcsolatos tipp"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Váltás másik kimeneti eszközre"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"A képernyő rögzítve van"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Megjelenítve tartja addig, amíg Ön fel nem oldja a rögzítést. A feloldáshoz tartsa lenyomva a Vissza és az Áttekintés lehetőséget."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Az ilyen értesítések riasztást küldenek"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Általában elveti ezeket az értesítéseket.\nSzeretné, hogy továbbra is megjelenjenek?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Kész"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Alkalmaz"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Továbbra is megjelenjenek ezek az értesítések?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Értesítések letiltása"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Hang nélküli megjelenítés"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Tiltás"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Megjelenítés továbbra is"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Kis méret"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Megjelenítés hang nélkül"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Diszkrét"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Néma megjelenítés"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Értesítsen"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Megszakító"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Értesítések folytatása"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Az értesítések kikapcsolása"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Továbbra is megjelenjenek az alkalmazás értesítései?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"A letiltott értesítések sehol sem jelennek meg, és hangjelzést sem adnak. Az értesítések letiltását a beállításokban oldhatja fel."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"A néma értesítések megjelennek az értesítési felületen, de nem jelennek meg a lezárási képernyőn, nem jelenítenek meg alkalmazásszalagot, és nem adnak hangjelzést."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ezek az értesítések hangot adnak, valamint megjelennek az értesítési fiókban, az állapotsoron és a lezárási képernyőn"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ezeket az értesítéseket nem lehet kikapcsolni"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Az értesítések jelen csoportját itt nem lehet beállítani"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"a(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás használatával"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ez az alkalmazás használja a kamerát."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ez az alkalmazás használja a mikrofont."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Naptár"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Megjelenítés hangerőszabályzóval"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ne zavarjanak"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne zavarjanak"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"A hangerőgombok gyorsbillentyűk"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"„Ne zavarjanak” deaktiválása hangerőnöveléskor"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"A Ne zavarjanak mód kikapcsolása a hangerő növelésekor"</string>
<string name="battery" msgid="7498329822413202973">"Akkumulátor"</string>
<string name="clock" msgid="7416090374234785905">"Óra"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ugrás a böngészőbe"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobiladatok"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"A Wi-Fi ki van kapcsolva"</string>
<string name="bt_is_off" msgid="2640685272289706392">"A Bluetooth ki van kapcsolva"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"A „Ne zavarjanak” mód ki van kapcsolva"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Beállítások"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Értem"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI-memória-kiírás"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> alkalmazás</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> alkalmazás</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"A(z) <xliff:g id="APP">%1$s</xliff:g> használja a következőket: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Több alkalmazás használja a következőket: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Használva:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> alkalmazás használja a következőt: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> alkalmazás használja a következőt: <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Értem"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Adatvédelmi beállítások"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"A következőket használó alkalmazás: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"A következőt használó alkalmazások: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" és "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"helyadatok"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> további alkalmazás</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> további alkalmazás</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Érzékelők kikapcsolva"</string>
<string name="device_services" msgid="1191212554435440592">"Eszközszolgáltatások"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nincs cím"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Koppintson az alkalmazás újraindításához és a teljes képernyős mód elindításához."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> megnyitása"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> – az alkalmazás értesítési beállításainak megnyitása"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Engedélyezi az alkalmazás értesítési buborékjait?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Tiltás"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g>-buborékok beállításai"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Engedélyezi a(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazásból származó buborékokat?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Tiltás"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Engedélyezés"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Kérdezzen rá később"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> a(z) <xliff:g id="APP_NAME">%2$s</xliff:g> alkalmazásból és <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> további"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Áthelyezés"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Áthelyezés fel és balra"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Áthelyezés fel és jobbra"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Áthelyezés le és balra"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Áthelyezés le és jobbra"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index b1a8509a155f..a95bbb145e3f 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Օգտագործեք սարքի լիցքավորիչը"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Կարգավորումներ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Միացնե՞լ մարտկոցի տնտեսումը"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Մարտկոցի տնտեսման ռեժիմի մասին"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Միացնել"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Միացնել մարտկոցի տնտեսումը"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Կարգավորումներ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Ընթացիկ հաշվի օգտատերը չի կարող միացնել USB վրիպազերծումը: Այս գործառույթը միացնելու համար մուտք գործեք հիմնական օգտատիրոջ հաշվով:"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB միացքն անջատված է"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB միացքն անջատվել է, որպեսզի ձեր սարքը չթրջվի կամ չաղտոտվի: Այժմ USB միացքի միջոցով հնարավոր չէ միացնել այլ սարքեր:\n\nԴուք ծանուցում կստանաք, երբ այն նորից անվտանգ լինի օգտագործել:"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB միացքը միացվել է՝ լիցքավորիչներն ու լրասարքերը հայտնաբերելու համար"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Միացնել USB-ն"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Խոշորացնել` էկրանը լցնելու համար"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ձգել` էկրանը լցնելու համար"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Սքրինշոթ"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Ապակողպել չօգտագործելով մատնահետքը"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Դեմքի սկանավորում"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Ուղարկել"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Կառավարել ծանուցումները"</string>
<string name="unlock_label" msgid="8779712358041029439">"ապակողպել"</string>
<string name="phone_label" msgid="2320074140205331708">"բացել հեռախոսը"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"բացեք ձայնային հուշումը"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Բջջային ինտերնետ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Բջջային տվյալները միացված են"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Բջջային ինտերնետն անջատված է"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Բջջային ինտերնետն ըստ կանխադրման չի օգտագործվում"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Անջատված է"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth մոդեմ"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Ավիառեժիմ"</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Ավիառեժիմը միացավ:"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"կատարյալ լռություն"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"միայն զարթուցիչը"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Չանհանգստացնել։"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"«Չանհանգստացնել» ռեժիմն անջատվեց։"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"«Չանհանգստացնել» ռեժիմը միացվեց։"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth:"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth-ն անջատված է:"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth-ը միացված է:"</string>
@@ -279,6 +277,7 @@
<item quantity="one">Ներսում ևս <xliff:g id="NUMBER_1">%s</xliff:g> ծանուցում կա:</item>
<item quantity="other">Ներսում ևս <xliff:g id="NUMBER_1">%s</xliff:g> ծանուցում կա:</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>. <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ծանուցման կարգավորումներ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-ի կարգավորումներ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Էկրանը ավտոմատ կպտտվի:"</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Էկրանապահ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Լրացուցիչ կարգավորումները բացելու համար հպեք և պահեք պատկերակները"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Չանհանգստացնել"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Միայն կարևոր ծանուցումների դեպքում"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Միայն զարթուցիչ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Կատարյալ լռություն"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Մարտկոցի տնտեսումը միացված է"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Նվազեցնում է ծանրաբեռնվածությունը և ֆոնային տվյալները"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Անջատել մարտկոցի տնտեսումը"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Ձայնագրման և հեռարձակման ընթացքում <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-ը կարող է գաղտնի տեղեկություններ գրանցել, օրինակ՝ աուդիո նյութեր, գաղտնաբառեր, վճարային տվյալներ, լուսանկարներ և հաղորդագրություններ։"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Գաղտնի տեղեկությունների բացահայտում հեռարձակման/ձայնագրման ընթացքում"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Այլևս ցույց չտալ"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Մաքրել բոլորը"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Կառավարել"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ձայնի կարգավորումներ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Ընդարձակել"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Կոծկել"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Ավտոմատ ավելացնել ենթագրեր"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Փակել ենթագրերը"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Փոխել արտածման սարքը"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Էկրանն ամրացված է"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Էկրանը կմնա տեսադաշտում, մինչև այն ապամրացնեք: Ապամրացնելու համար հպեք և պահեք Հետ և Համատեսք կոճակները:"</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Այս ծանուցումները կցուցադրվեն զգուշացումով"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Դուք սովորաբար փակում եք այս ծանուցումները: \nՇարունակե՞լ ցուցադրել դրանք:"</string>
<string name="inline_done_button" msgid="492513001558716452">"Փակել"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Կիրառել"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Ցուցադրե՞լ այս ծանուցումները։"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Չցուցադրել ծանուցումներ"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Առաքել անձայն"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Արգելափակել"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Ցուցադրել"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Ծալել"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Ցույց տալ անձայն"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Անձայն"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Չմիացնել ձայնը"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Ծանուցումներ ձայնային ազդանշանով"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Ծանուցել"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Անջատել ծանուցումները"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Ցուցադրե՞լ ծանուցումներ այս հավելվածից։"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Արգելափակված ծանուցումները ոչ մի տեղ չեն ցուցադրվում, և ազդանշան չեն հնչեցնում։ Ծանուցումները կարող եք արգելաբացել կարգավորումներում։"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Անձայն ծանուցումները ցուցադրվում են ստվերում, սակայն ոչ կողպէկրանին։ Դրանք չեն ներկայացվում բանների տեսքով և չեն ուղեկցվում ազդանշանով։"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Այս ծանուցումները կուղեկցվեն ձայնային ազդանշանով և կհայտնվեն ծանուցումների էկրանին, կարգավիճակի գոտում ու կողպէկրանին։"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Այս ծանուցումները հնարավոր չէ անջատել"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի միջոցով"</string>
<string name="appops_camera" msgid="8100147441602585776">"Այս հավելվածն օգտագործում է տեսախցիկը:"</string>
<string name="appops_microphone" msgid="741508267659494555">"Այս հավելվածն օգտագործում է խոսափողը:"</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Օրացույց"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Ցույց տալ ձայնի ուժգնության կառավարման տարրերի հետ"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Չանհանգստացնել"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Ձայնի կոճակների դյուրանցում"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Անջատել «Չանհանգստացնել» ռեժիմը ձայնը բարձրացնելու դեպքում"</string>
<string name="battery" msgid="7498329822413202973">"Մարտկոց"</string>
<string name="clock" msgid="7416090374234785905">"Ժամացույց"</string>
<string name="headset" msgid="4534219457597457353">"Ականջակալ"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Անցնել դիտարկիչ"</string>
<string name="mobile_data" msgid="7094582042819250762">"Բջջային ինտերնետ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi-ն անջատված է"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth-ն անջատված է"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Չանհանգստացնելու ռեժիմն անջատված է"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> հավելվածն օգտագործում է ձեր <xliff:g id="TYPES_LIST">%2$s</xliff:g>:"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Հավելվածներն օգտագործում են ձեր <xliff:g id="TYPES_LIST">%s</xliff:g>:"</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Եղավ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Գաղտնիություն"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Հավելված, որն օգտագործում է <xliff:g id="TYPES_LIST">%s</xliff:g> ձեր սարքում"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Հավելվածներ, որոնք օգտագործում են <xliff:g id="TYPES_LIST">%s</xliff:g> ձեր սարքում"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" և "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"տեսախցիկը"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Տվիչներն անջատած են"</string>
<string name="device_services" msgid="1191212554435440592">"Սարքի ծառայություններ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Անանուն"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Հպեք՝ հավելվածը վերագործարկելու և լիաէկրան ռեժիմին անցնելու համար։"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Բացել <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ի ամպիկների կարգավորումներ"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Թույլատրե՞լ ամպիկներ <xliff:g id="APP_NAME">%1$s</xliff:g>-ից։"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Մերժել"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Թույլատրել"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Հարցնել ավելի ուշ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>՝ <xliff:g id="APP_NAME">%2$s</xliff:g>-ից"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>` <xliff:g id="APP_NAME">%2$s</xliff:g>-ից ու ևս <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ամպիկ"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Տեղափոխել"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Տեղափոխել վերև՝ ձախ"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Տեղափոխել վերև՝ աջ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Տեղափոխել ներքև՝ ձախ"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Տեղափոխել ներքև՝ աջ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index cef419e087a1..0f8686d613f6 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Gunakan pengisi daya yang disertakan dengan perangkat"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Setelan"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Aktifkan Penghemat Baterai?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Tentang Penghemat Baterai"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktifkan"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Aktifkan Penghemat Baterai"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Setelan"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Pengguna yang sedang login ke perangkat ini tidak dapat mengaktifkan proses debug USB. Beralihlah ke pengguna utama untuk menggunakan fitur ini."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Port USB dinonaktifkan"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Untuk melindungi perangkat dari cairan atau kotoran, port USB dinonaktifkan dan tidak akan mendeteksi aksesori apa pun.\n\nAnda akan diberi tahu jika sudah aman untuk menggunakan port USB kembali."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Port USB diaktifkan untuk mendeteksi pengisi daya dan aksesori"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Aktifkan USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Perbesar utk mengisi layar"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rentangkn utk mngisi layar"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Buka kunci tanpa menggunakan sidik jari"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Memindai wajah"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Kirim"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Mengelola notifikasi"</string>
<string name="unlock_label" msgid="8779712358041029439">"buka kunci"</string>
<string name="phone_label" msgid="2320074140205331708">"buka ponsel"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"buka bantuan suara"</string>
<string name="camera_label" msgid="7261107956054836961">"buka kamera"</string>
<string name="cancel" msgid="6442560571259935130">"Batal"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Area pesan bantuan"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Konfirmasi"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Coba lagi"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Sentuh sensor sidik jari"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Data Seluler"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Data Seluler Aktif"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Kuota nonaktif"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Tidak disetel untuk menggunakan data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Nonaktif"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode pesawat."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Mode pesawat diaktifkan."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"senyap total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"hanya alarm"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Jangan ganggu."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Status \"Jangan ganggu\" dinonaktifkan."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Status \"Jangan ganggu\" diaktifkan."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Jangan Ganggu."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Mode Jangan Ganggu dinonaktifkan."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Mode Jangan Ganggu diaktifkan."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth nonaktif."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aktif."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Menghapus semua pemberitahuan."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> notifikasi lainnya di dalam.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> notifikasi lainnya di dalam.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Setelan pemberitahuan"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> setelan"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Layar akan diputar secara otomatis."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Tap lama ikon untuk opsi lainnya"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Jangan ganggu"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Jangan Ganggu"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Hanya untuk prioritas"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Hanya alarm"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Senyap total"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Penghemat Baterai aktif"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Mengurangi kinerja dan data latar belakang"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Nonaktifkan Penghemat Baterai"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> akan mulai mengambil foto semua item di layar, termasuk notifikasi, sandi, foto, pesan, dan informasi pembayaran."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Izinkan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> merekam atau mentransmisikan layar?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Selagi merekam atau melakukan transmisi, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> dapat mengambil informasi sensitif, seperti audio yang diputar dan sandi, info pembayaran, foto, dan pesan Anda."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Menampakkan informasi sensitif saat melakukan transmisi/merekam"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Jangan tampilkan lagi"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Hapus semua"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Kelola"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Setelan suara"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Luaskan"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ciutkan"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Otomatis beri teks ke media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tutup tooltip teks"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Ganti perangkat keluaran"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Layar dipasangi pin"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh &amp; tahan tombol Kembali dan Ringkasan untuk melepas pin."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Notifikasi ini akan mengingatkan Anda"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Anda biasanya menutup notifikasi ini. \nTerus tampilkan?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Selesai"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Terapkan"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Terus tampilkan notifikasi ini?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Hentikan notifikasi"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Kirim Tanpa Suara"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokir"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Terus tampilkan"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Perkecil"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Tampilkan tanpa suara"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Lembut"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Tetap nonaktif"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Beri tahu saya"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Mengganggu"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Terus beri tahu"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Nonaktifkan notifikasi"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Terus tampilkan notifikasi dari aplikasi ini?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Notifikasi yang diblokir tidak akan muncul di mana pun atau memutar suara. Anda dapat membatalkan pemblokiran notifikasi di setelan."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Notifikasi yang disenyapkan akan terlihat di bayangan, tetapi tidak muncul di layar kunci, tidak menampilkan banner, atau pun memutar suara."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Notifikasi ini akan mengeluarkan bunyi dan muncul di panel samping notifikasi, status bar, dan layar kunci"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Notifikasi ini tidak dapat dinonaktifkan"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"melalui <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Aplikasi ini sedang menggunakan kamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Aplikasi ini sedang menggunakan mikrofon."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Tampilkan dengan kontrol volume"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Jangan ganggu"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Jangan Ganggu"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Pintasan tombol volume"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Keluar dari mode jangan ganggu di tombol keraskan volume"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Keluar dari mode Jangan Ganggu di tombol naikkan volume"</string>
<string name="battery" msgid="7498329822413202973">"Baterai"</string>
<string name="clock" msgid="7416090374234785905">"Jam"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Buka browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Data seluler"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi nonaktif"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth nonaktif"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Fitur Jangan Ganggu nonaktif"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Setelan"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Hapus Heap SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikasi</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplikasi</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> menggunakan <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikasi menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Sedang digunakan:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikasi menggunakan <xliff:g id="TYPE_5">%2$s</xliff:g> Anda.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikasi menggunakan <xliff:g id="TYPE_1">%2$s</xliff:g> Anda.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Oke"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Setelan privasi"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikasi yang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> Anda"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikasi yang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> Anda"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" dan "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokasi"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikasi lain</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplikasi lain</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensor nonaktif"</string>
<string name="device_services" msgid="1191212554435440592">"Layanan Perangkat"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Tanpa judul"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tap untuk memulai ulang aplikasi ini dan membuka layar penuh."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Buka <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Buka setelan notifikasi untuk <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Izinkan balon dari aplikasi ini?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokir"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Setelan untuk balon <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Izinkan balon dari <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Tolak"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Izinkan"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Nanti saja"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> dari <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> dari <xliff:g id="APP_NAME">%2$s</xliff:g> dan <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> lainnya"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Pindahkan"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Pindahkan ke kiri atas"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Pindahkan ke kanan atas"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Pindahkan ke kiri bawah"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Pindahkan ke kanan bawah"</string>
</resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index b65c7c255e14..54787a2d81f5 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Notaðu hleðslutækið sem fylgdi tækinu þínu"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Stillingar"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Kveikja á rafhlöðusparnaði?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Um rafhlöðusparnað"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Kveikja"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Kveikja á rafhlöðusparnaði"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Stillingar"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Notandinn sem er skráður inn í þetta tæki núna getur ekki kveikt á USB-villuleit. Til þess að nota þennan eiginleika skaltu skipta yfir í aðalnotandann."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-tengi gert óvirkt"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Til að vernda tækið frá vökva og óhreinindum er USB-tengið óvirkt og mun ekki greina aukabúnað.\n\nÞú færð tilkynningu þegar öruggt er að nota USB-tengið aftur."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Kveikt var á USB-tengi til að greina hleðslutæki og aukabúnað"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Virkja USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Fylla skjá með aðdrætti"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Teygja yfir allan skjáinn"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Skjámynd"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Taka úr lás án þess að nota fingrafar"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Andlit skannað"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Senda"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Stjórna tilkynningum"</string>
<string name="unlock_label" msgid="8779712358041029439">"taka úr lás"</string>
<string name="phone_label" msgid="2320074140205331708">"opna síma"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"opna raddaðstoð"</string>
<string name="camera_label" msgid="7261107956054836961">"opna myndavél"</string>
<string name="cancel" msgid="6442560571259935130">"Hætta við"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Svæði hjálparskilaboða"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Staðfesta"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Reyna aftur"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Snertu fingrafaralesarann"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Farsímagögn"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Kveikt á farsímagögnum"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Slökkt á farsímagögnum"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ekki stillt á að nota gögn"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Slökkt"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tjóðrun með Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Flugstilling"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Kveikt á flugstillingu."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"algjör þögn"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"aðeins vekjarar"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ónáðið ekki."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Slökkt á „Ónáðið ekki“."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Kveikt á „Ónáðið ekki“."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ónáðið ekki."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Slökkt á „Ónáðið ekki“."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Kveikt á „Ónáðið ekki“."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Slökkt á Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Kveikt á Bluetooth."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Staðsetningarbeiðnir virkar"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Hreinsa allar tilkynningar."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> tilkynning í viðbót.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> tilkynningar í viðbót.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Tilkynningastillingar"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Stillingar fyrir <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skjárinn snýst sjálfkrafa."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Skjávari"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Haltu táknum inni til að sjá fleiri valkosti"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ónáðið ekki"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ónáðið ekki"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Aðeins forgangur"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Aðeins vekjarar"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Algjör þögn"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Kveikt er á rafhlöðusparnaði"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Dregur úr afköstum og bakgrunnsgögnum"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Slökkva á rafhlöðusparnaði"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> mun fanga allt sem birtist á skjánum, þar á meðal tilkynningar, aðgangsorð, myndir, skilaboð og greiðsluupplýsingar."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Viltu leyfa <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> að taka upp skjáinn eða senda hann út?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Á meðan þú ert að taka upp eða senda út getur <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> fangað viðkvæmar upplýsingar, svo sem hljóð sem þú spilar og aðgangsorð, greiðsluupplýsingar, myndir og skilaboð."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Sýnir viðkvæmar upplýsingar við útsendingu/upptöku"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ekki sýna þetta aftur"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Hreinsa allt"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Stjórna"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Hljóðstillingar"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Stækka"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minnka"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Sjálfvirkir skjátextar"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Loka ábendingu um skjátexta"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Skipta um úttakstæki"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skjárinn er festur"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Þetta heldur þessu opnu þangað til þú losar það. Haltu fingri á „Til baka“ og „Yfirlit“ til að losa."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Þessar tilkynningar munu láta þig vita"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Þú hunsar yfirleitt þessar tilkynningar. \nViltu halda áfram að fá þær?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Lokið"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Nota"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Sýna áfram þessar tilkynningar?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stöðva tilkynningar"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Afhenda án hljóðs"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Loka á"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Sýna áfram"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minnka"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Sýna án hljóðs"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Án hljóðs"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Áfram hljóðlaust"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Láta mig vita"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Truflandi"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Halda áfram að gera viðvart"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Slökkva á tilkynningum"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Sýna áfram tilkynningar frá þessu forriti?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Útilokaðar tilkynningar hvorki birtast né spila hljóð. Þú getur opnað aftur fyrir tilkynningar í stillingunum."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Þöglar tilkynningar eru birtar í skugga en ekki á lásskjánum, með borða eða hljóði."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Þessar tilkynningar gefa frá sér hljóð og birtast í tilkynningaskúffunni, á stöðustikunni og lásskjánum."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ekki er hægt að slökkva á þessum tilkynningum"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ekki er hægt að stilla þessar tilkynningar hér"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"með <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Þetta forrit er að nota myndavélina."</string>
<string name="appops_microphone" msgid="741508267659494555">"Þetta forrit er að nota hljóðnemann."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Dagatal"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Sýna með hljóðstyrksstillingum"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ónáðið ekki"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ónáðið ekki"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Flýtihnappar fyrir hljóðstyrk"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Slökkva á „Ónáðið ekki“ með því að hækka"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Slökkva á „Ónáðið ekki“ með því að hækka"</string>
<string name="battery" msgid="7498329822413202973">"Rafhlaða"</string>
<string name="clock" msgid="7416090374234785905">"Klukka"</string>
<string name="headset" msgid="4534219457597457353">"Höfuðtól"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Opna vafra"</string>
<string name="mobile_data" msgid="7094582042819250762">"Farsímagögn"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Slökkt á Wi-Fi"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Slökkt á Bluetooth"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Slökkt á „Ónáðið ekki“"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Stillingar"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Ég skil"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Vista SysUI-gögn"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> forrit</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> forrit</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> er að nota <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Forrit eru að nota <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Í notkun:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> forrit er að nota <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> forrit eru að nota <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ég skil"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Persónuvernd"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Forrit sem nota <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Forrit sem nota <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" og "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"myndavél"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"staðsetning"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"hljóðnemi"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> forrit í viðbót</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> forrit í viðbót</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Slökkt á skynjurum"</string>
<string name="device_services" msgid="1191212554435440592">"Tækjaþjónusta"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Enginn titill"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Ýttu til að endurræsa forritið og sýna það á öllum skjánum."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Opna <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Opna tilkynningastillingar fyrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Leyfa blöðrur úr þessu forriti?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Loka á"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Stillingar fyrir blöðrur frá <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Leyfa blöðrur frá <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Hafna"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Leyfa"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Spyrja mig síðar"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> frá <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ frá <xliff:g id="APP_NAME">%2$s</xliff:g> og <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> í viðbót"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Færa"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Færa efst til vinstri"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Færa efst til hægri"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Færa neðst til vinstri"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Færðu neðst til hægri"</string>
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index ffcff5ef8d04..6c1bf7147210 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Utilizza il caricabatterie fornito in dotazione con il dispositivo"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Impostazioni"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Attivare Risparmio energetico?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Informazioni su Risparmio energetico"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Attiva"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Attiva Risparmio energetico"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Impostazioni"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"L\'utente che ha eseguito l\'accesso a questo dispositivo non può attivare il debug USB. Per utilizzare questa funzione, passa all\'utente principale."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Porta USB disattivata"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Per proteggere il tuo dispositivo da liquidi o detriti, la porta USB è stata disattivata e non rileverà alcun accessorio.\n\nRiceverai una notifica quando potrai riutilizzare in sicurezza la porta USB."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Porta USB attivata per rilevare caricabatterie e accessori"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Attiva USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom per riempire schermo"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Estendi per riemp. schermo"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Sblocca senza utilizzare l\'impronta digitale"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scansione del viso"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Invia"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestisci notifiche"</string>
<string name="unlock_label" msgid="8779712358041029439">"sblocca"</string>
<string name="phone_label" msgid="2320074140205331708">"apri telefono"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"apri Voice Assist"</string>
<string name="camera_label" msgid="7261107956054836961">"apri fotocamera"</string>
<string name="cancel" msgid="6442560571259935130">"Annulla"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Area dei messaggi di assistenza"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confermo"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Riprova"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Tocca il sensore di impronte digitali"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Dati mobili"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Dati mobili attivati"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Dati mobili disattivati"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Non impostato per l\'utilizzo dei dati"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Off"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modalità aereo."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modalità aereo attivata."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silenzio totale"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"solo sveglie"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Non disturbare."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Non disturbare\" non attivo."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Non disturbare\" attivo."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Non disturbare."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Non disturbare\" disattivato."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Non disturbare\" attivato."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth non attivo."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth attivo."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Richieste di accesso alla posizione attive"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Cancella tutte le notifiche."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Altre <xliff:g id="NUMBER_1">%s</xliff:g> notifiche nel gruppo.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> altra notifica nel gruppo.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Impostazioni di notifica"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Impostazioni di <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Lo schermo ruoterà automaticamente."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Salvaschermo"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Tocca e tieni premuta ciascuna icona per visualizzare altre opzioni"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Non disturbare"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Non disturbare"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Solo con priorità"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Solo sveglie"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silenzio totale"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Risparmio energetico attivo"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Riduce le prestazioni e i dati in background"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Disattiva Risparmio energetico"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> inizierà ad acquisire tutti gli elementi sullo schermo, inclusi messaggi, notifiche, password, foto e dati di pagamento."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Vuoi consentire a <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> di registrare o trasmettere lo schermo?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Mentre registri o trasmetti, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> può acquisire informazioni sensibili di qualsiasi tipo, come l\'audio riprodotto, le password, le informazioni di pagamento, le foto e i messaggi."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Esposizione di informazioni sensibili durante la trasmissione/registrazione"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Non mostrare più"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Cancella tutto"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gestisci"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Impostazioni audio"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Espandi"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Comprimi"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Sottotitoli automatici"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Suggerimento sottotitoli"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambia dispositivo di uscita"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"La schermata è fissata"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"La schermata rimane visibile finché non viene sganciata. Per sganciarla, tieni premuto Indietro e Panoramica."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Queste notifiche ti avviseranno"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"In genere ignori queste notifiche. \nVuoi continuare a riceverle?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Fine"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Applica"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Continuare a ricevere queste notifiche?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Interrompi la ricezione di notifiche"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Invia in modalità silenziosa"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blocca"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continua a mostrare"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Riduci a icona"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostra silenziosamente"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Modalità senza avvisi"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Continua con notifiche silenziose"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Avvisami"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Modalità invasiva"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continua ad avvisare"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Disattiva notifiche"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuare a ricevere notifiche da questa app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Le notifiche bloccate non vengono visualizzate e non riproducono suoni. Puoi sbloccare le notifiche nelle impostazioni."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Le notifiche silenziose vengono visualizzate nella relativa area, ma non nella schermata di blocco, presentano un banner o riproducono un suono."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Queste notifiche verranno mostrate nel riquadro a scomparsa delle notifiche, nella barra di stato e nella schermata di blocco; inoltre verrà emesso un suono"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Queste notifiche non possono essere disattivate"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Qui non è possibile configurare questo gruppo di notifiche"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"tramite <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Questa app sta utilizzando la fotocamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Questa app sta utilizzando il microfono."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendario"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostra con controlli volume"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Non disturbare"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Non disturbare"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Pulsanti del volume come scorciatoia"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Disattiva Non disturbare all\'aumento del volume"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Disattiva Non disturbare all\'aumento del volume"</string>
<string name="battery" msgid="7498329822413202973">"Batteria"</string>
<string name="clock" msgid="7416090374234785905">"Orologio"</string>
<string name="headset" msgid="4534219457597457353">"Auricolare"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Vai al browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Dati mobili"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi disattivato"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth non attivo"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Funzione Non disturbare disattivata"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Impostazioni"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Esegui dump heap SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> app</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"L\'app <xliff:g id="APP">%1$s</xliff:g> sta usando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Le app stanno usando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"In uso:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> applicazioni stanno utilizzando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> applicazione sta utilizzando <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Impostazioni privacy"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App che usa <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"App che utilizzano <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" e "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"Fotocamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"luogo"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"un microfono"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Altre <xliff:g id="NUM_APPS_1">%d</xliff:g> app</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> altra app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensori disattivati"</string>
<string name="device_services" msgid="1191212554435440592">"Servizi del dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Senza titolo"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tocca per riavviare l\'app e passare a schermo intero."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Apri <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Apri le impostazioni di notifica dell\'app <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Consentire fumetti da questa app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blocca"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Impostazioni per fumetti <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Consentire fumetti da <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Nega"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Consenti"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ricordamelo più tardi"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> da <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> da <xliff:g id="APP_NAME">%2$s</xliff:g> e altre <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Sposta"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Sposta in alto a sinistra"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Sposta in alto a destra"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Sposta in basso a sinistra"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Sposta in basso a destra"</string>
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index b9844bc613b6..a271e6edb12f 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"שימוש במטען שסופק עם המכשיר"</string>
<string name="battery_low_why" msgid="4553600287639198111">"הגדרות"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"להפעיל את תכונת החיסכון בסוללה?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"מידע על מצב החיסכון בסוללה"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"הפעל"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"הפעלת תכונת החיסכון בסוללה"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"הגדרות"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"‏למשתמש המחובר לחשבון במכשיר הזה אין אפשרות להפעיל ניפוי באגים ב-USB. כדי להשתמש בתכונה הזו יש לעבור אל המשתמש הראשי."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"‏יציאת ה-USB מושבתת"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"‏כדי להגן על המכשיר שלך מנוזלים או חלקיקים, יציאת ה-USB מושבתת ולא מזהה אביזרים כלל.\n\nתתקבל התראה כשיהיה בטוח להשתמש ביציאת ה-USB."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"‏יציאת USB הופעלה לזיהוי מטענים ואביזרים"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"‏הפעלת USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"הגדל תצוגה כדי למלא את המסך"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"מתח כדי למלא את המסך"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"צילום מסך"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"בטל את הנעילה בלי להשתמש בטביעת האצבע"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"סורק פנים"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"שליחה"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"ניהול התראות"</string>
<string name="unlock_label" msgid="8779712358041029439">"בטל את הנעילה"</string>
<string name="phone_label" msgid="2320074140205331708">"פתח את הטלפון"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"פתח את המסייע הקולי"</string>
<string name="camera_label" msgid="7261107956054836961">"פתח את המצלמה"</string>
<string name="cancel" msgid="6442560571259935130">"ביטול"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"אזור הודעת עזרה"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"אישור"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ניסיון נוסף"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"יש לגעת בחיישן טביעות האצבע"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"חבילת גלישה"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"חבילת הגלישה פועלת"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"חבילת הגלישה כבויה"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"לא מוגדרת לשימוש בנתונים"</string>
<string name="cell_data_off" msgid="1051264981229902873">"כבוי"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"‏שיתוף אינטרנט דרך Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"מצב טיסה"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"מצב טיסה הופעל."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"השתקה מוחלטת"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"רק התראות"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"נא לא להפריע."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\'נא לא להפריע\' כבוי."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\'נא לא להפריע\' פועל."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"נא לא להפריע."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'נא לא להפריע\' כבוי."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\'נא לא להפריע\' פועל."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"‏Bluetooth כבוי."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"‏Bluetooth מופעל."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"בקשות מיקום פעילות"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"הסרת כל ההתראות."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="two">עוד <xliff:g id="NUMBER_1">%s</xliff:g> התראות נוספות.</item>
<item quantity="many">עוד <xliff:g id="NUMBER_1">%s</xliff:g> התראות.</item>
<item quantity="other">עוד <xliff:g id="NUMBER_1">%s</xliff:g> התראות נוספות.</item>
<item quantity="one">יש התראה נוספת.<xliff:g id="NUMBER_0">%s</xliff:g>.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"הגדרת התראות"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"הגדרות <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"המסך יסתובב באופן אוטומטי."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"שומר מסך"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"יש ללחוץ על הסמלים לחיצה ארוכה כדי לראות אפשרויות נוספות"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"נא לא להפריע"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"נא לא להפריע"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"עדיפות בלבד"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"התראות בלבד"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"שקט מוחלט"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"תכונת החיסכון בסוללה פועלת"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"מפחית את הביצועים ונתונים ברקע"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"כיבוי תכונת החיסכון בסוללה"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"באמצעות <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>, יתחיל תיעוד של כל מה שמופיע במסך, כולל התראות, סיסמאות, תמונות, הודעות ופרטי תשלום."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"האם להתיר ל-<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> לצלם את המסך או לבצע העברה שלו?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"בזמן הקלטה או העברה, האפליקציה <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> יכולה לקלוט מידע רגיש, כמו האודיו המושמע, סיסמאות, פרטי תשלום, תמונות והודעות."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"חשיפת מידע רגיש בזמן העברה/הקלטה"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"אל תציג שוב"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"נקה הכל"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"ניהול"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"הגדרות צליל"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"הרחב"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"כווץ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"הוספת כתוביות אוטומטית למדיה"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"סגירת הטיפ לגבי כתוביות"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"החלפת מכשיר פלט"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"המסך מוצמד"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'סקירה\' כדי לבטל את ההצמדה."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"הודעות אלה יישלחו כהתראה"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"התראות אלה בדרך כלל נדחות על ידך. \nלהמשיך להציג אותן?"</string>
<string name="inline_done_button" msgid="492513001558716452">"סיום"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"החלה"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"שנמשיך להציג לך את ההתראות האלה?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"לא, אל תמשיכו"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"הצגה ללא צליל"</string>
<string name="inline_block_button" msgid="8735843688021655065">"חסימה"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"כן, המשיכו"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"מזעור"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"הצגה ללא צליל"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"התראות מתונות"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"בשקט"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"אבקש התראה"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"התראות קופצות"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"המשך שליחת התראות"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"השבתת ההתראות"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"שנמשיך להציג לך התראות מהאפליקציה הזאת?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"התראות חסומות לא מוצגות כלל ולא משמיעות צלילים. אפשר לבטל את חסימת ההתראות דרך ההגדרות."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"התראות מושתקות מופיעות בתריס, אבל לא מופיעות במסך הנעילה, לא מציגות באנר ולא משמיעות צליל"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"ההתראות האלה ישמיעו צליל ויוצגו בחלונית ההזזה של ההתראות, בשורת הסטטוס ובמסך הנעילה"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"לא ניתן לכבות את ההתראות האלה"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"באמצעות <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"האפליקציה הזו משתמשת במצלמה."</string>
<string name="appops_microphone" msgid="741508267659494555">"האפליקציה הזו משתמשת במיקרופון."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"‏YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"יומן"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"הצג עם פקדי עוצמת הקול"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"נא לא להפריע"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"נא לא להפריע"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"מקש קיצור ללחצני עוצמת קול"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"צא מהאפשרות \'נא לא להפריע\' בהגברת עוצמת הקול"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"יציאה מ\'נא לא להפריע\' בלחיצה על הלחצן להגברת עוצמת הקול"</string>
<string name="battery" msgid="7498329822413202973">"סוללה"</string>
<string name="clock" msgid="7416090374234785905">"שעון"</string>
<string name="headset" msgid="4534219457597457353">"אוזניות"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"מעבר אל הדפדפן"</string>
<string name="mobile_data" msgid="7094582042819250762">"נתונים סלולריים"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> ‏— <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"‏Wi-Fi כבוי"</string>
<string name="bt_is_off" msgid="2640685272289706392">"‏Bluetooth כבוי"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"מצב \'נא לא להפריע\' כבוי"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"הגדרות"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"הבנתי"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"‏ערימת Dump SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="two"><xliff:g id="NUM_APPS_2">%d</xliff:g> אפליקציות</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> אפליקציות</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> אפליקציות</item>
- <item quantity="one">אפליקציה אחת (<xliff:g id="NUM_APPS_0">%d</xliff:g>)</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> משתמשת ב<xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"אפליקציות משתמשות ב<xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"בשימוש:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="two"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> אפליקציות משתמשות ב<xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="many"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> אפליקציות משתמשות ב<xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> אפליקציות משתמשות ב<xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one">אפליקציה אחת (<xliff:g id="NUM_APPS_0">%1$d</xliff:g>) משתמשת ב<xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"הבנתי"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"הגדרות פרטיות"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"האפליקציה משתמשת ב<xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"אפליקציות משתמשות ב<xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" וגם "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"מצלמה"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"מיקום"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"מיקרופון"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="two"><xliff:g id="NUM_APPS_1">%d</xliff:g> אפליקציות נוספות</item>
- <item quantity="many"><xliff:g id="NUM_APPS_1">%d</xliff:g> אפליקציות נוספות</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> אפליקציות נוספות</item>
- <item quantity="one">אפליקציה נוספת (<xliff:g id="NUM_APPS_0">%d</xliff:g>)</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"החיישנים כבויים"</string>
<string name="device_services" msgid="1191212554435440592">"שירותים למכשיר"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ללא שם"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"צריך להקיש כדי להפעיל מחדש את האפליקציה הזו ולעבור למסך מלא."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"לפתיחת <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"פתיחה של הגדרת ההתראות של <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"האם להתיר לאפליקציה הזו להציג בועות?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"אני רוצה לחסום"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"הגדרות בשביל בועות של <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"להתיר ל-<xliff:g id="APP_NAME">%1$s</xliff:g> להציג בועות?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"אני לא מרשה"</string>
<string name="yes_bubbles" msgid="668809525728633841">"כן, זה בסדר"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"אחליט מאוחר יותר"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> מהאפליקציה <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> מ-<xliff:g id="APP_NAME">%2$s</xliff:g> ועוד <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"העברה"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"העברה לפינה השמאלית העליונה"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"העברה לפינה הימנית העליונה"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"העברה לפינה השמאלית התחתונה"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"העברה לפינה הימנית התחתונה"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index c871d1cd3958..261c05efafa7 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -29,11 +29,12 @@
<string name="battery_low_percent_format_hybrid" msgid="6838677459286775617">"残量 <xliff:g id="PERCENTAGE">%1$s</xliff:g>、約 <xliff:g id="TIME">%2$s</xliff:g>(使用状況に基づく)"</string>
<string name="battery_low_percent_format_hybrid_short" msgid="9025795469949145586">"残量 <xliff:g id="PERCENTAGE">%1$s</xliff:g>、約 <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="battery_low_percent_format_saver_started" msgid="7879389868952879166">"残量が <xliff:g id="PERCENTAGE">%s</xliff:g> です。バッテリー セーバーは ON です。"</string>
- <string name="invalid_charger" msgid="2741987096648693172">"USB 経由では充電できません。端末に付属の充電器を使用してください。"</string>
+ <string name="invalid_charger" msgid="2741987096648693172">"USB 経由では充電できません。デバイスに付属の充電器を使用してください。"</string>
<string name="invalid_charger_title" msgid="2836102177577255404">"USB 経由では充電できません"</string>
- <string name="invalid_charger_text" msgid="6480624964117840005">"端末に付属の充電器を使用してください"</string>
+ <string name="invalid_charger_text" msgid="6480624964117840005">"デバイスに付属の充電器を使用してください"</string>
<string name="battery_low_why" msgid="4553600287639198111">"設定"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"バッテリー セーバーを ON にしますか?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"バッテリー セーバーについて"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ONにする"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"バッテリー セーバーを ON"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"設定"</string>
@@ -59,9 +60,11 @@
<string name="usb_debugging_always" msgid="303335496705863070">"このパソコンからのUSBデバッグを常に許可する"</string>
<string name="usb_debugging_allow" msgid="2272145052073254852">"許可"</string>
<string name="usb_debugging_secondary_user_title" msgid="6353808721761220421">"USBデバッグは許可されていません"</string>
- <string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"この端末に現在ログインしているユーザーでは、USB デバッグを ON にすることはできません。この機能を使用するには、メインユーザーに切り替えてください。"</string>
+ <string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"このデバイスに現在ログインしているユーザーでは、USB デバッグを ON にすることはできません。この機能を使用するには、メインユーザーに切り替えてください。"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB ポート無効"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"液体やゴミからデバイスを保護するため、USB ポートは無効になっています。アクセサリの検出は行われません。\n\nUSB ポートを再び安全に使用できるようになりましたらお知らせします。"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB ポートが有効になり、充電器やアクセサリを検出できるようになりました"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB を有効にする"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"画面サイズに合わせて拡大"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"画面サイズに合わせて拡大"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"スクリーンショット"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"指紋認証を使用せずにロック解除"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"顔のスキャン"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"送信"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"通知を管理"</string>
<string name="unlock_label" msgid="8779712358041029439">"ロック解除"</string>
<string name="phone_label" msgid="2320074140205331708">"電話を起動"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"音声アシストを開く"</string>
<string name="camera_label" msgid="7261107956054836961">"カメラを起動"</string>
<string name="cancel" msgid="6442560571259935130">"キャンセル"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"ヘルプ メッセージ領域"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"確認"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"再試行"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"指紋認証センサーをタップしてください"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"モバイルデータ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"モバイルデータ ON"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"モバイルデータ OFF"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"データを使用するように設定されていません"</string>
<string name="cell_data_off" msgid="1051264981229902873">"OFF"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetoothテザリング。"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"機内モード。"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"機内モードをONにしました。"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"サイレント"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"アラームのみ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"サイレント モード"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"サイレント モードを OFF にしました。"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"サイレント モードを ON にしました。"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"サイレント モード。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"サイレント モードを無効にしました。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"サイレント モードを有効にしました。"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"BluetoothがOFFです。"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"BluetoothがONです。"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"現在地リクエストがアクティブ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"通知をすべて消去。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"他 <xliff:g id="NUMBER">%s</xliff:g> 件"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>、他 <xliff:g id="OVERFLOW">%2$s</xliff:g> 件"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">他 <xliff:g id="NUMBER_1">%s</xliff:g> 件の通知</item>
<item quantity="one">他 <xliff:g id="NUMBER_0">%s</xliff:g> 件の通知</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知設定"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>の設定"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"画面は自動的に回転します。"</string>
@@ -286,12 +290,12 @@
<string name="start_dreams" msgid="5640361424498338327">"スクリーン セーバー"</string>
<string name="ethernet_label" msgid="7967563676324087464">"イーサネット"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"アイコンを押し続けると、その他の項目が表示されます"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"サイレント モード"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"サイレント モード"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"優先する通知のみ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"アラームのみ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"サイレント"</string>
<string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string>
- <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth(端末数<xliff:g id="NUMBER">%d</xliff:g>)"</string>
+ <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth(デバイス数<xliff:g id="NUMBER">%d</xliff:g>)"</string>
<string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"Bluetooth OFF"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ペア設定されたデバイスがありません"</string>
<string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="7106697106764717416">"電池 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
@@ -345,8 +349,8 @@
<string name="quick_settings_hotspot_secondary_label_transient" msgid="8010579363691405477">"ON にしています…"</string>
<string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="5672131949987422420">"データセーバー ON"</string>
<plurals name="quick_settings_hotspot_secondary_label_num_devices" formatted="false" msgid="2324635800672199428">
- <item quantity="other">%d 台の端末</item>
- <item quantity="one">%d 台の端末</item>
+ <item quantity="other">%d 台のデバイス</item>
+ <item quantity="one">%d 台のデバイス</item>
</plurals>
<string name="quick_settings_notifications_label" msgid="4818156442169154523">"通知"</string>
<string name="quick_settings_flashlight_label" msgid="2133093497691661546">"ライト"</string>
@@ -386,8 +390,8 @@
<string name="speed_bump_explanation" msgid="1288875699658819755">"緊急度の低い通知を下に表示"</string>
<string name="notification_tap_again" msgid="7590196980943943842">"開くにはもう一度タップしてください"</string>
<string name="keyguard_unlock" msgid="8043466894212841998">"ロック解除するには上にスワイプしてください"</string>
- <string name="do_disclosure_generic" msgid="5615898451805157556">"この端末は組織によって管理されています"</string>
- <string name="do_disclosure_with_name" msgid="5640615509915445501">"この端末は <xliff:g id="ORGANIZATION_NAME">%s</xliff:g> が管理しています"</string>
+ <string name="do_disclosure_generic" msgid="5615898451805157556">"このデバイスは組織によって管理されています"</string>
+ <string name="do_disclosure_with_name" msgid="5640615509915445501">"このデバイスは <xliff:g id="ORGANIZATION_NAME">%s</xliff:g> が管理しています"</string>
<string name="phone_hint" msgid="4872890986869209950">"右にスワイプして通話"</string>
<string name="voice_hint" msgid="8939888732119726665">"アイコンからスワイプして音声アシストを起動"</string>
<string name="camera_hint" msgid="7939688436797157483">"左にスワイプしてカメラを起動"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"バッテリー セーバー ON"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"パフォーマンスとバックグラウンドデータを制限します"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"バッテリー セーバーを OFF"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>で、画面上のすべての内容(通知、パスワード、写真、メッセージ、支払い情報など)の取得が開始されます。"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>に画面の記録やキャストを許可しますか?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"記録中やキャスト中に、<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>は、ユーザーが再生している音声、パスワード、お支払い情報、写真、メッセージなど、プライベート情報を取得する可能性があります。"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"キャスト中や記録中にプライベート情報が公開されます"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"次回から表示しない"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"すべて消去"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"管理"</string>
@@ -448,22 +452,22 @@
<string name="profile_owned_footer" msgid="8021888108553696069">"プロファイルが監視されている可能性があります"</string>
<string name="vpn_footer" msgid="2388611096129106812">"ネットワークが監視されている可能性があります"</string>
<string name="branded_vpn_footer" msgid="2168111859226496230">"ネットワークが監視されている可能性があります"</string>
- <string name="quick_settings_disclosure_management_monitoring" msgid="6645176135063957394">"組織がこの端末を管理しています。ネットワーク トラフィックが監視されることもあります"</string>
- <string name="quick_settings_disclosure_named_management_monitoring" msgid="370622174777570853">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> がこの端末を管理しています。ネットワーク トラフィックが監視されることもあります"</string>
- <string name="quick_settings_disclosure_management_named_vpn" msgid="1085137869053332307">"端末は組織によって管理され、<xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています"</string>
- <string name="quick_settings_disclosure_named_management_named_vpn" msgid="6290456493852584017">"端末は <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理され、<xliff:g id="VPN_APP">%2$s</xliff:g> に接続しています"</string>
- <string name="quick_settings_disclosure_management" msgid="3294967280853150271">"端末は組織によって管理されています"</string>
- <string name="quick_settings_disclosure_named_management" msgid="1059403025094542908">"端末は <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理されています"</string>
- <string name="quick_settings_disclosure_management_vpns" msgid="3698767349925266482">"端末は組織によって管理され、VPN に接続しています"</string>
- <string name="quick_settings_disclosure_named_management_vpns" msgid="7777821385318891527">"端末は <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理され、VPN に接続しています"</string>
+ <string name="quick_settings_disclosure_management_monitoring" msgid="6645176135063957394">"組織がこのデバイスを管理しています。ネットワーク トラフィックが監視されることもあります"</string>
+ <string name="quick_settings_disclosure_named_management_monitoring" msgid="370622174777570853">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> がこのデバイスを管理しています。ネットワーク トラフィックが監視されることもあります"</string>
+ <string name="quick_settings_disclosure_management_named_vpn" msgid="1085137869053332307">"デバイスは組織によって管理され、<xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています"</string>
+ <string name="quick_settings_disclosure_named_management_named_vpn" msgid="6290456493852584017">"デバイスは <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理され、<xliff:g id="VPN_APP">%2$s</xliff:g> に接続しています"</string>
+ <string name="quick_settings_disclosure_management" msgid="3294967280853150271">"デバイスは組織によって管理されています"</string>
+ <string name="quick_settings_disclosure_named_management" msgid="1059403025094542908">"デバイスは <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理されています"</string>
+ <string name="quick_settings_disclosure_management_vpns" msgid="3698767349925266482">"デバイスは組織によって管理され、VPN に接続しています"</string>
+ <string name="quick_settings_disclosure_named_management_vpns" msgid="7777821385318891527">"デバイスは <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理され、VPN に接続しています"</string>
<string name="quick_settings_disclosure_managed_profile_monitoring" msgid="5125463987558278215">"組織は仕事用プロファイルのネットワーク トラフィックを監視することがあります"</string>
<string name="quick_settings_disclosure_named_managed_profile_monitoring" msgid="8973606847896650284">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によってこの仕事用プロファイルのネットワーク トラフィックが監視されることもあります"</string>
<string name="quick_settings_disclosure_monitoring" msgid="679658227269205728">"ネットワークが監視されることもあります"</string>
- <string name="quick_settings_disclosure_vpns" msgid="8170318392053156330">"端末は VPN に接続しています"</string>
+ <string name="quick_settings_disclosure_vpns" msgid="8170318392053156330">"デバイスは VPN に接続しています"</string>
<string name="quick_settings_disclosure_managed_profile_named_vpn" msgid="3494535754792751741">"仕事用プロファイルは <xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています"</string>
<string name="quick_settings_disclosure_personal_profile_named_vpn" msgid="4467456202486569906">"個人用プロファイルは <xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています"</string>
- <string name="quick_settings_disclosure_named_vpn" msgid="6943724064780847080">"端末は <xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています"</string>
- <string name="monitoring_title_device_owned" msgid="1652495295941959815">"端末管理"</string>
+ <string name="quick_settings_disclosure_named_vpn" msgid="6943724064780847080">"デバイスは <xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています"</string>
+ <string name="monitoring_title_device_owned" msgid="1652495295941959815">"デバイス管理"</string>
<string name="monitoring_title_profile_owned" msgid="6790109874733501487">"プロファイルの監視"</string>
<string name="monitoring_title" msgid="169206259253048106">"ネットワーク監視"</string>
<string name="monitoring_subtitle_vpn" msgid="876537538087857300">"VPN"</string>
@@ -472,19 +476,19 @@
<string name="disable_vpn" msgid="4435534311510272506">"VPNを無効にする"</string>
<string name="disconnect_vpn" msgid="1324915059568548655">"VPNを切断"</string>
<string name="monitoring_button_view_policies" msgid="100913612638514424">"ポリシーを見る"</string>
- <string name="monitoring_description_named_management" msgid="5281789135578986303">"この端末は <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理されています。\n\n管理者は、この端末に関連付けられた設定、コーポレート アクセス、アプリ、データと、端末の位置情報を監視、管理できます。\n\n詳しくは管理者にお問い合わせください。"</string>
- <string name="monitoring_description_management" msgid="4573721970278370790">"この端末は組織によって管理されています。\n\n管理者は、この端末に関連付けられた設定、コーポレート アクセス、アプリ、データと、端末の位置情報を監視、管理できます。\n\n詳しくは管理者にお問い合わせください。"</string>
- <string name="monitoring_description_management_ca_certificate" msgid="5202023784131001751">"組織によってこの端末に認証局がインストールされました。保護されたネットワーク トラフィックが監視、変更される場合があります。"</string>
+ <string name="monitoring_description_named_management" msgid="5281789135578986303">"このデバイスは <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> によって管理されています。\n\n管理者は、このデバイスに関連付けられた設定、コーポレート アクセス、アプリ、データと、デバイスの位置情報を監視、管理できます。\n\n詳しくは管理者にお問い合わせください。"</string>
+ <string name="monitoring_description_management" msgid="4573721970278370790">"このデバイスは組織によって管理されています。\n\n管理者は、このデバイスに関連付けられた設定、コーポレート アクセス、アプリ、データと、デバイスの位置情報を監視、管理できます。\n\n詳しくは管理者にお問い合わせください。"</string>
+ <string name="monitoring_description_management_ca_certificate" msgid="5202023784131001751">"組織によってこのデバイスに認証局がインストールされました。保護されたネットワーク トラフィックが監視、変更される場合があります。"</string>
<string name="monitoring_description_managed_profile_ca_certificate" msgid="4683248196789897964">"組織によって、あなたの仕事用プロファイルに認証局がインストールされました。保護されたネットワーク トラフィックが監視、変更される場合があります。"</string>
- <string name="monitoring_description_ca_certificate" msgid="7886985418413598352">"この端末には認証局がインストールされています。保護されたネットワーク トラフィックが監視、変更される可能性があります。"</string>
- <string name="monitoring_description_management_network_logging" msgid="7184005419733060736">"管理者がネットワーク ログを有効にしているため、この端末のトラフィックが監視されています。"</string>
+ <string name="monitoring_description_ca_certificate" msgid="7886985418413598352">"このデバイスには認証局がインストールされています。保護されたネットワーク トラフィックが監視、変更される可能性があります。"</string>
+ <string name="monitoring_description_management_network_logging" msgid="7184005419733060736">"管理者がネットワーク ログを有効にしているため、このデバイスのトラフィックが監視されています。"</string>
<string name="monitoring_description_named_vpn" msgid="7403457334088909254">"<xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています。このアプリはあなたのネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string>
<string name="monitoring_description_two_named_vpns" msgid="4198511413729213802">"<xliff:g id="VPN_APP_0">%1$s</xliff:g> と <xliff:g id="VPN_APP_1">%2$s</xliff:g> に接続しています。これらのアプリは、あなたのネットワーク アクティビティ(メール、アプリ、ウェブサイト)を監視できます。"</string>
<string name="monitoring_description_managed_profile_named_vpn" msgid="1427905889862420559">"この仕事用プロファイルは <xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています。このアプリはあなたのネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string>
<string name="monitoring_description_personal_profile_named_vpn" msgid="3133980926929069283">"この個人用プロファイルは <xliff:g id="VPN_APP">%1$s</xliff:g> に接続しています。このアプリはあなたのネットワーク アクティビティ(メール、アプリ、ウェブサイト)を監視できます。"</string>
- <string name="monitoring_description_do_header_generic" msgid="96588491028288691">"この端末は <xliff:g id="DEVICE_OWNER_APP">%1$s</xliff:g>で管理されています。"</string>
- <string name="monitoring_description_do_header_with_name" msgid="5511133708978206460">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> は <xliff:g id="DEVICE_OWNER_APP">%2$s</xliff:g>を使用してこの端末を管理しています。"</string>
- <string name="monitoring_description_do_body" msgid="3639594537660975895">"管理者は、この端末に関連付けられた設定、コーポレート アクセス、アプリ、データのほか、端末の位置情報を監視、管理できます。"</string>
+ <string name="monitoring_description_do_header_generic" msgid="96588491028288691">"このデバイスは <xliff:g id="DEVICE_OWNER_APP">%1$s</xliff:g>で管理されています。"</string>
+ <string name="monitoring_description_do_header_with_name" msgid="5511133708978206460">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> は <xliff:g id="DEVICE_OWNER_APP">%2$s</xliff:g>を使用してこのデバイスを管理しています。"</string>
+ <string name="monitoring_description_do_body" msgid="3639594537660975895">"管理者は、このデバイスに関連付けられた設定、コーポレート アクセス、アプリ、データのほか、デバイスの位置情報を監視、管理できます。"</string>
<string name="monitoring_description_do_learn_more_separator" msgid="3785251953067436862">" "</string>
<string name="monitoring_description_do_learn_more" msgid="1849514470437907421">"詳細"</string>
<string name="monitoring_description_do_body_vpn" msgid="8255218762488901796">"「<xliff:g id="VPN_APP">%1$s</xliff:g>」に接続しています。このアプリはあなたのネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string>
@@ -492,8 +496,8 @@
<string name="monitoring_description_vpn_settings" msgid="6434859242636063861">"VPN 設定を開く"</string>
<string name="monitoring_description_ca_cert_settings_separator" msgid="4987350385906393626">" "</string>
<string name="monitoring_description_ca_cert_settings" msgid="5489969458872997092">"信頼できる認証情報を開く"</string>
- <string name="monitoring_description_network_logging" msgid="7223505523384076027">"管理者がネットワーク ログを有効にしているため、この端末のトラフィックは監視されています。\n\n詳しくは管理者にお問い合わせください。"</string>
- <string name="monitoring_description_vpn" msgid="4445150119515393526">"アプリにVPN接続の設定を許可しました。\n\nこのアプリはあなたの端末やネットワークアクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string>
+ <string name="monitoring_description_network_logging" msgid="7223505523384076027">"管理者がネットワーク ログを有効にしているため、このデバイスのトラフィックは監視されています。\n\n詳しくは管理者にお問い合わせください。"</string>
+ <string name="monitoring_description_vpn" msgid="4445150119515393526">"アプリにVPN接続の設定を許可しました。\n\nこのアプリはあなたのデバイスやネットワークアクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string>
<string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"この仕事用プロファイルは、<xliff:g id="ORGANIZATION">%1$s</xliff:g> により管理されています。\n\n管理者は、このプロファイルでのネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。\n\n詳しくは管理者にお問い合わせください。\n\nまた、VPN に接続しているため、このネットワークでのあなたのネットワーク アクティビティも監視されます。"</string>
<string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string>
<string name="monitoring_description_app" msgid="1828472472674709532">"<xliff:g id="APPLICATION">%1$s</xliff:g> に接続しています。このアプリはあなたのネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"音声の設定"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"折りたたむ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動字幕起こしメディア"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"字幕のヒントを閉じる"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"出力デバイスを選択"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"画面が固定されました"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"固定を解除するまで画面が常に表示されるようになります。[戻る] と [最近] を同時に押し続けると固定が解除されます。"</string>
@@ -589,7 +595,7 @@
<string name="tuner_toast" msgid="603429811084428439">"システムUI調整ツールを設定に追加しました"</string>
<string name="remove_from_settings" msgid="8389591916603406378">"設定から削除"</string>
<string name="remove_from_settings_prompt" msgid="6069085993355887748">"設定からシステムUI調整ツールを削除して、全機能の使用を停止しますか?"</string>
- <string name="activity_not_found" msgid="348423244327799974">"アプリが端末にインストールされていません"</string>
+ <string name="activity_not_found" msgid="348423244327799974">"アプリがデバイスにインストールされていません"</string>
<string name="clock_seconds" msgid="7689554147579179507">"時計の秒を表示"</string>
<string name="clock_seconds_desc" msgid="6282693067130470675">"ステータスバーに時計の秒を表示します。電池使用量に影響する可能性があります。"</string>
<string name="qs_rearrange" msgid="8060918697551068765">"クイック設定を並べ替え"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"これらの通知はアラートとして送信されます"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"通常、この通知はスワイプして非表示にしています。\n今後も表示しますか?"</string>
<string name="inline_done_button" msgid="492513001558716452">"完了"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"適用"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"この通知を今後も表示しますか?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"通知を表示しない"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"マナーモードで配信"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ブロック"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"今後も表示する"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"最小化"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"ポップアップで知らせる"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"通知音なし"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"音なしで通知"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"アラートを設定"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"通知音あり"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"今後もアラートを受け取る"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"通知を OFF にする"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"このアプリからの通知を今後も表示しますか?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ブロック中の通知はどこにも表示されず、通知音も鳴りません。設定で通知のブロックを解除できます。"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"サイレント通知はシェードには表示されますが、ロック画面には表示されません。バナーも表示されず、通知音も鳴りません。"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"この通知は、届いたときに音が鳴り、通知ドロワー、ステータスバー、ロック画面に表示されます"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"この通知を OFF にすることはできません"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"このグループの通知はここでは設定できません"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> 経由"</string>
<string name="appops_camera" msgid="8100147441602585776">"このアプリはカメラを使用しています。"</string>
<string name="appops_microphone" msgid="741508267659494555">"このアプリはマイクを使用しています。"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"カレンダー"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"音量調節を表示"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"サイレント モード"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"サイレント モード"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"音量ボタンのショートカット"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"音量上げボタンでサイレント モードを OFF にする"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"音量大ボタンでサイレント モードを OFF にします"</string>
<string name="battery" msgid="7498329822413202973">"電池"</string>
<string name="clock" msgid="7416090374234785905">"時計"</string>
<string name="headset" msgid="4534219457597457353">"ヘッドセット"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ブラウザに移動"</string>
<string name="mobile_data" msgid="7094582042819250762">"モバイルデータ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>、<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi は OFF です"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth は OFF です"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"サイレント モードは OFF です"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"設定"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI ヒープのダンプ"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g>個のアプリ</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g>個のアプリ</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g>は<xliff:g id="TYPES_LIST">%2$s</xliff:g>を使用しています。"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"アプリは<xliff:g id="TYPES_LIST">%s</xliff:g>を使用しています。"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"使用中:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> 個のアプリが <xliff:g id="TYPE_5">%2$s</xliff:g> を使用しています。</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> 個のアプリが <xliff:g id="TYPE_1">%2$s</xliff:g> を使用しています。</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"プライバシー設定"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g>を使用しているアプリ"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g>を使用しているアプリ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" 、 "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"カメラ"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"現在地情報"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"マイク"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">他 <xliff:g id="NUM_APPS_1">%d</xliff:g> 個のアプリ</item>
- <item quantity="one">他 <xliff:g id="NUM_APPS_0">%d</xliff:g> 個のアプリ</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"センサー OFF"</string>
<string name="device_services" msgid="1191212554435440592">"デバイス サービス"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"タイトルなし"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"タップしてこのアプリを再起動すると、全画面表示になります。"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> を開く"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> の通知設定を開く"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"このアプリからのふきだしを許可しますか?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ブロック"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> のふきだしの設定"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> のふきだしを許可しますか?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"拒否"</string>
<string name="yes_bubbles" msgid="668809525728633841">"許可"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"後で確認"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>(<xliff:g id="APP_NAME">%2$s</xliff:g>)"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>(<xliff:g id="APP_NAME">%2$s</xliff:g>)、他 <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> 件"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"移動"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"左上に移動"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"右上に移動"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"左下に移動"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"右下に移動"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index cd4b9df3eb36..643e9ff47e9c 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"გამოიყენეთ დამტენი, რომელიც თქვენს მოწყობილობას მოჰყვა"</string>
<string name="battery_low_why" msgid="4553600287639198111">"პარამეტრები"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"გსურთ ბატარეის დამზოგის ჩართვა?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ბატარეის დამზოგის შესახებ"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ჩართვა"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ბატარეის დამზოგის ჩართვა"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"პარამეტრები"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ამ მოწყობილობაზე ამჟამად შესულ მომხმარებელს არ შეუძლია USB ხარვეზების გამართვის ფუნქციის ჩართვა. ამ ფუნქციის გამოსაყენებლად, მიუერთდით მთავარ მომხმარებელს."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB პორტი გათიშულია"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB პორტი გათიშულია თქვენი ტელეფონის დასაცავად სითხის ან ჭუჭყის მოხვედრისგან. აქსესუარების აღმოჩენა ვერ მოხერხდება.\n\nთქვენ მიიღებთ შეტყობინებას, როცა USB პორტის გამოყენება კვლავ უსაფრთხო იქნება."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB პორტი ჩართულია დამტენებისა და აქსესუარების აღმოსაჩენად"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB-ის ჩართვა"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"მასშტაბი შეცვალეთ ეკრანის შესავსებად."</string>
<string name="compat_mode_off" msgid="4434467572461327898">"გაწიეთ ეკრანის შესავსებად."</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ეკრანის ანაბეჭდი"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"თქვენი თითის ანაბეჭდის გარეშე განბლოკვა"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"მიმდინარეობს სახის სკანირება"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"გაგზავნა"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"შეტყობინებების მართვა"</string>
<string name="unlock_label" msgid="8779712358041029439">"განბლოკვა"</string>
<string name="phone_label" msgid="2320074140205331708">"ტელეფონის გახსნა"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ხმოვანი დახმარების გახსნა"</string>
<string name="camera_label" msgid="7261107956054836961">"კამერის გახსნა"</string>
<string name="cancel" msgid="6442560571259935130">"გაუქმება"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"დამხმარე შეტყობინების არე"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"დადასტურება"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ხელახლა ცდა"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"შეეხეთ თითის ანაბეჭდის სენსორს"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"მობილური ინტერნეტი"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"მობილური ინტერნეტი ჩართულია"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"მობილური ინტერნეტი გამორთულია"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"არ არის დაყენებული მონაცემების გამოყენებისთვის"</string>
<string name="cell_data_off" msgid="1051264981229902873">"გამორთული"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth ტეტერინგის ჩართვა"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"თვითმფრინავის რეჟიმი"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"თვითმფრინავის რეჟიმი ჩაირთო."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"სრული სიჩუმე"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"მხოლოდ მაღვიძარები"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"არ შემაწუხოთ."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"„არ შემაწუხოთ\" რეჟიმი გამორთულია."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"„არ შემაწუხოთ\" რეჟიმი ჩართულია."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"არ შემაწუხოთ."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"„არ შემაწუხოთ“ რეჟიმი გამორთულია."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"„არ შემაწუხოთ“ რეჟიმი ჩართულია."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth გამორთულია."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ჩართულია."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"მდებარეობის მოთხოვნები აქტიურია"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ყველა შეტყობინების წაშლა"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">კიდევ <xliff:g id="NUMBER_1">%s</xliff:g> შეტყობინება ჯგუფში.</item>
<item quantity="one">კიდევ <xliff:g id="NUMBER_0">%s</xliff:g> შეტყობინება ჯგუფში.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"შეტყობინების პარამეტრები"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> პარამეტრები"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ეკრანი შეტრიალდება ავტომატურად."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ეკრანმზოგი"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ეთერნეტი"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ხანგრძლივად შეეხეთ ხატულებს დამატებითი ვარიანტებისთვის"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"არ შემაწუხოთ"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"არ შემაწუხოთ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"მხოლოდ პრიორიტეტული"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"მხოლოდ გაფრთხილებები"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"სრული სიჩუმე"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ბატარეის დამზოგი ჩართულია"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ამცირებს წარმადობას და უკანა ფონის მონაცემებს"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ბატარეის დამზოგის გამორთვა"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> აღბეჭდავს ყველაფერს თქვენს ეკრანზე, მათ შორის, შეტყობინებებს, პაროლებს, ფოტოებს, SMS-ებსა და ანგარიშსწორების ინფორმაციას."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"გსურთ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-ისთვის თქვენი ეკრანის ჩაწერისა და ტრანსლირების დაშვება?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ჩაწერის ან ტრანსლირების განმავლობაში <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-ს შეუძლია აღბეჭდოს ნებისმიერი სენსიტიური ინფორმაცია, როგორიც არის აუდიო, რომელსაც უკრავთ და თქვენი პაროლები, გადახდის ინფორმაცია, ფოტოები და შეტყობინებები."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"ტრანსლირების/ჩაწერის განმავლობაში მჟღავნდება სენსიტიური ინფორმაცია"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"აღარ მაჩვენო"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ყველას გასუფთავება"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"მართვა"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ხმის პარამეტრები"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"გავრცობა"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ჩაკეცვა"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ავტომატური სუბტიტრების მედია"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"მინიშნება სუბტიტრებისთვის"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"გამოტანის მოწყობილობის გადართვა"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ეკრანი ჩამაგრებულია"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"ამით ის დარჩება ხედში ჩამაგრების მოხსნამდე. ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ „უკან და მიმოხილვა“-ს."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"თქვენ მიიღებთ გაფრთხილებას ამ შეტყობინებების შესახებ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"როგორც წესი, თქვენ ასეთ შეტყობინებებს ხურავთ. \nგსურთ მათი ჩვენების გაგრძელება?"</string>
<string name="inline_done_button" msgid="492513001558716452">"მზადაა"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"მისადაგება"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"გაგრძელდეს ამ შეტყობინებათა ჩვენება?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"შეტყობინებების შეწყვეტა"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"უხმოდ მოწოდება"</string>
<string name="inline_block_button" msgid="8735843688021655065">"დაბლოკვა"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ჩვენების გაგრძელება"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ჩაკეცვა"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"უხმოდ ჩვენება"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"წყნარი"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"კვლავ ჩუმად ჩვენება"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"გაფრთხილების მიღება"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"წყვეტის გამომწვევი"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"გაფრთხილების გაგრძელება"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"შეტყობინებების გამორთვა"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"გაგრძელდეს შეტყობინებათა ჩვენება ამ აპიდან?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"დაბლოკილი შეტყობინებები არსად ჩნდება და ბგერას არ გამოსცემს. თქვენ შეგიძლიათ განბლოკოთ შეტყობინებები პარამეტრებიდან."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ჩუმი შეტყობინებები ჩნდება ჩრდილოვნად, მაგრამ არ ჩნდება ჩაკეტილ ეკრანზე, არ წარმოადგენს ბანერს და არ გამოსცემს ხმას."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"ეს შეტყობინებები გამოსცემს ხმას და გამოჩნდება შეტყობინებების უჯრაში, სტატუსის ზოლში და ჩაკეტილ ეკრანზე"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ამ შეტყობინებათა გამორთვა ვერ მოხერხდება"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g>-დან"</string>
<string name="appops_camera" msgid="8100147441602585776">"ეს აპი იყენებს კამერას."</string>
<string name="appops_microphone" msgid="741508267659494555">"ეს აპი იყენებს მიკროფონს."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"კალენდარი"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ხმის მართვის საშუალებების ჩვენება"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"არ შემაწუხოთ"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"არ შემაწუხოთ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ხმის ღილაკების მალსახმობი"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ხმის აწევისას „არ შემაწუხოთ“ რეჟიმიდან გამოსვლა"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ხმის აწევისას „არ შემაწუხოთ“ რეჟიმიდან გამოსვლა"</string>
<string name="battery" msgid="7498329822413202973">"ბატარეა"</string>
<string name="clock" msgid="7416090374234785905">"საათი"</string>
<string name="headset" msgid="4534219457597457353">"ყურსაცვამი"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ბრაუზერზე გადასვლა"</string>
<string name="mobile_data" msgid="7094582042819250762">"მობილური ინტერნეტი"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi გამორთულია"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth გამორთულია"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"„არ შემაწუხოთ“ რეჟიმი გამორთულია"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"პარამეტრები"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"გასაგებია"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI გროვის გამოტანა"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> აპი</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> აპი</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g>-ის მიერ გამოიყენება თქვენი <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"აპლიკაციების მიერ გამოიყენება თქვენი <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"გამოიყენება:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">თქვენი <xliff:g id="TYPE_5">%2$s</xliff:g> გამოიყენება <xliff:g id="NUM_APPS_4">%1$d</xliff:g> აპლიკაციის მიერ.</item>
- <item quantity="one">თქვენი <xliff:g id="TYPE_1">%2$s</xliff:g> გამოიყენება <xliff:g id="NUM_APPS_0">%1$d</xliff:g> აპლიკაციის მიერ.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"გასაგებია"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"კონფიდ. პარამეტრები"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"აპი, რომლის მიერაც გამოიყენება თქვენი <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"აპები, რომელთა მიერაც გამოიყენება თქვენი <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" და "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"კამერა"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"მდებარეობა"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"მიკროფონი"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> სხვა აპი</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> სხვა აპი</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"სენსორების გამორთვა"</string>
<string name="device_services" msgid="1191212554435440592">"მოწყობილობის სერვისები"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"უსათაურო"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"შეეხეთ ამ აპის გადასატვირთად და გადადით სრულ ეკრანზე."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის გახსნა"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის შეტყობინების პარამეტრების გახსნა"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"გსურთ ბუშტების დაშვება ამ აპიდან?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"დაბლოკვა"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"პარამეტრები <xliff:g id="APP_NAME">%1$s</xliff:g> ბუშტებისთვის"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"დაიშვას ბუშტები <xliff:g id="APP_NAME">%1$s</xliff:g>-დან?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"უარყოფა"</string>
<string name="yes_bubbles" msgid="668809525728633841">"დაშვება"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"მოგვიანებით მკითხეთ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g>-ისგან"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g>-დან და კიდევ <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"გადატანა"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ზევით და მარცხნივ გადატანა"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"გადაანაცვლეთ ზევით და მარჯვნივ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ქვევით და მარცხნივ გადატანა"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"გადაანაცვ. ქვემოთ და მარჯვნივ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 25484cfe68c5..fcb314cfa8cf 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Құрылғымен бірге берілген зарядтау құралын пайдаланыңыз"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Параметрлер"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Battery Saver функциясы қосылсын ба?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Battery Saver туралы ақпарат"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Қосу"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Battery saver функциясын қосу"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Параметрлер"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Бұл құрылғыға жаңа кірген пайдаланушы USB түзетуін іске қосылмайды. Бұл мүмкіндікті пайдалану үшін негізгі пайдаланушыға ауысыңыз."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB порты өшірілді"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Құрылғыңызға сұйықтық немесе қоқыс кіріп кетпеуі үшін, USB порты өшірілген және ешқандай керек-жарақты танымайды.\n\nUSB портын қайта пайдалануға болатын кезде, сізге хабарландыру жібереміз."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Зарядтағыштар мен аксессуарларды анықтау үшін USB порты қосылды."</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB қосу"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Экранды толтыру үшін ұлғайту"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Экранды толтыру үшін созу"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Скриншот"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Саусақ ізін пайдаланбай құлыпты ашу"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Бетті сканерлеу"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Жіберу"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Хабарландыруларды басқару"</string>
<string name="unlock_label" msgid="8779712358041029439">"бекітпесін ашу"</string>
<string name="phone_label" msgid="2320074140205331708">"телефонды ашу"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ашық дауыс көмекшісі"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобильдік дерекқор"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобильдік деректер қосулы"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобильдік деректер өшірулі"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Деректерді пайдалануға реттелмеген."</string>
<string name="cell_data_off" msgid="1051264981229902873">"Өшірулі"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth тетеринг."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Ұшақ режимі."</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Ұшақ режимі қосылды."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"үнсіз"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"тек дабылдар"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Мазаламау."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Мазаламау режимі өшірілді."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"мазаламау режимі қосылды."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth өшірулі."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth қосулы."</string>
@@ -279,6 +277,7 @@
<item quantity="other">Ішінде тағы <xliff:g id="NUMBER_1">%s</xliff:g> хабарландыру.</item>
<item quantity="one">Ішінде тағы <xliff:g id="NUMBER_0">%s</xliff:g> хабарландыру.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Хабарландыру параметрлері"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> параметрлері"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран автоматты түрде бұрылады."</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Экранды сақтау режимі"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Этернет"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Басқа опцияларды көру үшін белгішелерді түртіп ұстап тұрыңыз"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Мазаламау"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Маңыздылары ғана"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Тек дабылдар"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Толық тыныштық"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Battery saver қосулы"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Өнімділікті және фондық деректерді азайтады"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Battery saver функциясын өшіру"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Жазу және трансляциялау кезінде <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> сіз ойнайтын аудиомазмұн және құпия сөздер, төлем ақпараттары, фотосуреттер және хабарлар сияқты кез келген құпия ақпаратты сақтай аласыз."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Трансляциялау/Жазу кезінде құпия ақпаратты көрсету"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Қайта көрсетпеу"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Барлығын тазалау"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Басқару"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Дыбыс параметрлері"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Жаю"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жию"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматты субтитр медиасы"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Субтитрлер кеңесі"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Шығыс құрылғыны ауыстыру"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Экран түйрелді"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Экран босатылғанға дейін көрсетіліп тұрады. Оны босату үшін \"Артқа\" және \"Шолу\" түймелерін басып тұрыңыз."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Бұл хабарландырулар сізді ескертеді"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Әдетте хабарландыруларды көрмейсіз. \nОлар көрсетілсін бе?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Дайын"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Қолдану"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Хабарландырулар көрсетілсін бе?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Хабарландыруларға тыйым салу"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Дыбыссыз"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Бөгеу"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Көрсету"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Жасыру"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Дыбыссыз көрсету"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Дыбыссыз"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Хабарландырулар алғым келмейді"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Дыбыстық ескертулер"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Хабарландырулар келе берсін"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Хабарландыруларды өшіру"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Осы қолданбаның хабарландырулары көрсетілсін бе?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Тыйым салынған хабарландырулар еш жерде көрсетілмейді немесе дыбыс шығармайды. Хабарландыруларды параметрлерден бөгей алмайсыз."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Дыбыссыз хабарландырулар көлеңкеде шығады, бірақ құлыптау экранына шықпайды, баннерде ұсынылады және дыбысты ойнатады."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Бұл дыбыстық хабарландырулар хабарландыру тартпасында, күй жолағында және құлып экранында көрсетіледі."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Хабарландыруларды өшіру мүмкін емес"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> арқылы"</string>
<string name="appops_camera" msgid="8100147441602585776">"Бұл қолданба камераны пайдалануда."</string>
<string name="appops_microphone" msgid="741508267659494555">"Бұл қолданба микрофонды пайдалануда."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Күнтізбе"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Дыбыс деңгейін басқару элементтерімен бірге көрсету"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Мазаламау"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Дыбыс деңгейі түймелерінің төте жолы"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Дыбысы арттырылған кезде, мазаламау режимінен шығу"</string>
<string name="battery" msgid="7498329822413202973">"Батарея"</string>
<string name="clock" msgid="7416090374234785905">"Сағат"</string>
<string name="headset" msgid="4534219457597457353">"Құлақаспап жинағы"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Браузерге өту"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобильдік деректер"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi өшірулі"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth өшірулі"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"Мазаламау\" режимі өшірулі"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> қолданбасында <xliff:g id="TYPES_LIST">%2$s</xliff:g> пайдалануда."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Қолданбаларда <xliff:g id="TYPES_LIST">%s</xliff:g> пайдаланылуда."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Түсінікті"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Құпиялылық параметрлері"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> пайдаланып жатқан қолданба"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g> пайдаланып жатқан қолданбалар"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" және "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камера"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Датчиктер өшірулі"</string>
<string name="device_services" msgid="1191212554435440592">"Құрылғы қызметтері"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Атауы жоқ"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Бұл қолданбаны іске қосу үшін түртіп, толық экранға өтіңіз."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасын ашу"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> қалқымалы анықтамаларының параметрлері"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасында қалқымалы анықтамаларға рұқсат етілсін бе?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Тыйым салу"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Рұқсат беру"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Кейінірек сұралсын"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> жіберген хабарландыру: <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> қолданбасы жіберген <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> және тағы <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Жылжыту"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Жоғарғы сол жаққа жылжыту"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Жоғары оң жаққа жылжыту"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Төменгі сол жаққа жылжыту"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Төменгі оң жаққа жылжыту"</string>
</resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index f077c77cedd5..0d19e1f7e004 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"សូមប្រើ​ឆ្នាំង​សាក​ដែល​ភ្ជាប់​មក​ជាមួយ​ឧបករណ៍​របស់អ្នក"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ការកំណត់"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"បើក​កម្មវិធី​សន្សំ​ថ្ម?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"អំពី​កម្មវិធីសន្សំថ្ម"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"បើក"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"បើក​កម្មវិធី​សន្សំ​ថ្ម​"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ការ​កំណត់"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"អ្នកប្រើ​ដែលបច្ចុប្បន្ន​បានចូលគណនី​នៅលើឧបករណ៍នេះ​មិនអាចបើកការកែកំហុស USB បានទេ។ ដើម្បីប្រើមុខងារនេះ សូមប្តូរទៅអ្នកប្រើចម្បង។"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"បានបិទរន្ធ USB"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ដើម្បី​ការពារ​ឧបករណ៍​របស់អ្នកកុំឱ្យ​ចូលទឹក ឬ​កម្ទេចផ្សេងៗ រន្ធ USB ត្រូវបានបិទ ហើយ​នឹង​មិនស្គាល់​គ្រឿង​បរិក្ខារ​នោះទេ។\n\nអ្នកនឹង​ទទួលបាន​ការជូនដំណឺង នៅពេល​ការប្រើប្រាស់​រន្ធ USB មាន​សុវត្ថិភាព​ម្ដងទៀត។"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"បាន​បើក​រន្ធ USB ដើម្បី​សម្គាល់​ឆ្នាំងសាក និងគ្រឿងផ្សេងៗ"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"បើក USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ពង្រីក​​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ទាញ​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"រូបថតអេក្រង់"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ដោះសោដោយមិនបាច់ប្រើស្នាមម្រាមដៃរបស់អ្នក"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ការ​ស្កេន​មុខ"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ផ្ញើ"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"គ្រប់គ្រងការជូនដំណឹង"</string>
<string name="unlock_label" msgid="8779712358041029439">"ដោះ​សោ"</string>
<string name="phone_label" msgid="2320074140205331708">"បើក​ទូរស័ព្ទ"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"បើកជំនួយសំឡេង"</string>
<string name="camera_label" msgid="7261107956054836961">"បើក​ម៉ាស៊ីន​ថត"</string>
<string name="cancel" msgid="6442560571259935130">"បោះ​បង់​"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"តំបន់សារ​ជំនួយ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"បញ្ជាក់"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ព្យាយាម​ម្ដង​ទៀត"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"ប៉ះ​ឧបករណ៍​ចាប់ស្នាម​ម្រាមដៃ"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ទិន្នន័យ​ទូរសព្ទចល័ត"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ទិន្នន័យទូរសព្ទចល័តបានបើក"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ទិន្នន័យ​ទូរសព្ទចល័ត​បានបិទ"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"មិនបានកំណត់​ឱ្យប្រើ​ទិន្នន័យ​ទេ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"បិទ"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ការ​ភ្ជាប់​ប៊្លូធូស។"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"របៀប​​ពេលជិះ​យន្តហោះ"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"បាន​បើក​របៀប​ជិះ​យន្តហោះ។"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"បិទសំឡេង​ទាំងស្រុង"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"សំឡេងរោទ៍​ប៉ុណ្ណោះ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"កុំរំខាន"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"បានបិទមុខងារកុំរំខាន។"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"បានបើកមុខងារកុំរំខាន។"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"កុំ​រំខាន។"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"បានបិទមុខងារកុំរំខាន។"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"បានបើកមុខងារកុំរំខាន។"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ប៊្លូធូស"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"បិទ​ប៊្លូធូស។"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"បើក​ប៊្លូធូស។"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"សំណើ​ទីតាំង​សកម្ម"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"សម្អាត​ការ​ជូន​ដំណឹង​ទាំងអស់។"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">មានការជូនដំណឹង <xliff:g id="NUMBER_1">%s</xliff:g> ទៀតនៅខាងក្នុង</item>
<item quantity="one">មានការជូនដំណឹង <xliff:g id="NUMBER_0">%s</xliff:g> ទៀតនៅខាងក្នុង</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>៖ <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"​កំណត់​ការ​ជូនដំណឹង"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"ការ​កំណត់ <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"នឹង​បង្វិល​អេក្រង់​ស្វ័យ​ប្រវត្តិ។"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ធាតុរក្សាអេក្រង់"</string>
<string name="ethernet_label" msgid="7967563676324087464">"អ៊ីសឺរណិត"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ចុច​​រូបតំណាងឱ្យ​ជាប់​សម្រាប់​ជម្រើស​បន្ថែម"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"កុំរំខាន"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"កុំ​រំខាន"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"អាទិភាពប៉ុណ្ណោះ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"សំឡេងរោទ៍ប៉ុណ្ណោះ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ស្ងៀមស្ងាត់ទាំងស្រុង"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"កម្មវិធីសន្សំថ្មបានបើក"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ការ​បន្ថយ​ការ​ប្រតិបត្តិ និង​ទិន្នន័យ​ផ្ទៃ​ខាងក្រោយ"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"បិទ​កម្មវិធី​សន្សំ​ថ្ម"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> នឹង​ចាប់ផ្ដើម​ថត​អ្វីគ្រប់យ៉ាង​នៅលើ​អេក្រង់​របស់អ្នក រួមទាំង​ការជូន​ដំណឹង ពាក្យ​សម្ងាត់ រូប​ថត សារ និង​ព័ត៌មាន​ពីការទូទាត់ផងដែរ។"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"អនុញ្ញាត​ឱ្យ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ថត ឬ​បញ្ជូន​អេក្រង់​របស់អ្នក?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"នៅពេល​កំពុង​ថត ឬបញ្ជូន <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> អាច​ថតព័ត៌មាន​រសើប​ទាំងឡាយដូចជា សំឡេងដែលអ្នកចាក់ និងពាក្យសម្ងាត់របស់អ្នក​ ព័ត៌មាន​ទូទាត់ រូបថត និងសារ​ជាដើម។"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"បង្ហាញព័ត៌មានរសើប​ អំឡុងពេលបញ្ជូន/ថត"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"កុំ​បង្ហាញ​ម្ដងទៀត"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"សម្អាត​ទាំងអស់"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"គ្រប់គ្រង"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ការកំណត់សំឡេង"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"ពង្រីក"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"បង្រួម"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ដាក់ចំណងជើងមេឌៀដោយស្វ័យប្រវត្តិ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"គន្លឹះអក្សររត់"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ប្ដូរ​ឧបករណ៍​បញ្ចេញ​សំឡេង"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"អេក្រង់​ត្រូវ​បាន​ភ្ជាប់"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"វា​នឹង​នៅតែ​បង្ហាញ រហូត​ទាល់​តែ​អ្នក​ដក​ការដៅ។ សូម​សង្កត់​ប៊ូតុង​ថយ​ក្រោយ និង​ប៊ូតុង​ទិដ្ឋភាពរួម​ឲ្យ​ជាប់ ដើម្បី​ដក​ការ​ដៅ។"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ការជូនដំណឹង​ទាំងនេះ​នឹង​បង្ហាញ​ដល់អ្នក"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"ជាធម្មតា​អ្នក​ច្រានចោល​ការ​ជូន​ដំណឹង​ទាំង​នេះ។ \nបន្ត​បង្ហាញ​ពួកវា​ទៀត​ដែរ​ទេ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"រួចរាល់"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"ប្រើ"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"បន្ត​បង្ហាញ​ការជូនដំណឹង​ទាំងនេះ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"បញ្ឈប់​ការជូនដំណឹង"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"បញ្ជូន​ស្ងាត់ៗ"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ទប់ស្កាត់"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"បន្ត​បង្ហាញ"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"បង្រួម"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"បង្ហាញ​ស្ងាត់ៗ"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"ស្ងាត់ៗ"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"បន្ត​បិទសំឡេង"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"ជូន​ដំណឹង​ដល់ខ្ញុំ"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"គួរឱ្យរំខាន"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"បន្ត​ជូនដំណឹង"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"បិទ​ការជូន​ដំណឹង"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"បន្ត​បង្ហាញ​ការជូនដំណឹង​ពីកម្មវិធីនេះ?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ការជូនដំណឹង​ដែលបាន​ទប់ស្កាត់មិនបង្ហាញ​នៅគ្រប់ទីកន្លែង ឬបន្លឺសំឡេងទេ។ អ្នក​អាច​ឈប់ទប់ស្កាត់​ការជូនដំណឹង​នៅក្នុងការកំណត់។"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ការជូនដំណឹងស្ងាត់​​បង្ហាញ​ជាស្រមោល ប៉ុន្តែ​មិនបង្ហាញ​នៅលើអេក្រង់ចាក់សោ បង្ហាញផ្ទាំងផ្សាយពាណិជ្ជកម្ម ឬបន្លឺសំឡេងទេ។"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"ការជូនដំណឹង​ទាំងនេះ​នឹង​បន្លឺសំឡេង ហើយ​បង្ហាញ​នៅក្នុងថត​ការជូនដំណឹង របារស្ថានភាព និង​អេក្រង់ចាក់សោ"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"​មិនអាច​បិទការជូនដំណឹង​ទាំងនេះបានទេ"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​ក្រុមការជូនដំណឹងនេះ​នៅទីនេះ​បានទេ"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"តាមរយៈ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"កម្មវិធីនេះ​កំពុងប្រើ​កាមេរ៉ា។"</string>
<string name="appops_microphone" msgid="741508267659494555">"កម្មវិធីនេះ​កំពុងប្រើ​មីក្រូហ្វូន។"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"ប្រតិទិន"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"បង្ហាញជាមួយការគ្រប់គ្រងកម្រិតសំឡេង"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"កុំ​រំខាន"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"កុំ​រំខាន"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ផ្លូវកាត់ប៊ូតុងកម្រិតសំឡេង"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ចាកចេញពីមុខងារកុំរំខាននៅពេលបង្កើនសំឡេង"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ចាកចេញពីមុខងារកុំរំខាននៅពេលដំឡើង​កម្រិតសំឡេង"</string>
<string name="battery" msgid="7498329822413202973">"ថ្ម"</string>
<string name="clock" msgid="7416090374234785905">"នាឡិកា"</string>
<string name="headset" msgid="4534219457597457353">"កាស"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ចូល​ទៅ​កម្មវិធី​រុករក​តាម​អ៊ីនធឺណិត"</string>
<string name="mobile_data" msgid="7094582042819250762">"ទិន្នន័យ​ទូរសព្ទចល័ត"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi បាន​បិទ"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ប៊្លូធូស​បាន​បិទ"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"មុខងារ​កុំរំខាន​បាន​បិទ"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ការកំណត់"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"យល់ហើយ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"ចម្លង SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other">កម្មវិធី <xliff:g id="NUM_APPS_2">%d</xliff:g></item>
- <item quantity="one">កម្មវិធី <xliff:g id="NUM_APPS_0">%d</xliff:g></item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> កំពុងប្រើ <xliff:g id="TYPES_LIST">%2$s</xliff:g> របស់អ្នក។"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"កម្មវិធី​កំពុងប្រើ <xliff:g id="TYPES_LIST">%s</xliff:g> របស់អ្នក។"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"កំពុង​ប្រើ​៖"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">កម្មវិធី <xliff:g id="NUM_APPS_4">%1$d</xliff:g> កំពុងប្រើប្រាស់ <xliff:g id="TYPE_5">%2$s</xliff:g> របស់អ្នក។</item>
- <item quantity="one">កម្មវិធី <xliff:g id="NUM_APPS_0">%1$d</xliff:g> កំពុងប្រើប្រាស់ <xliff:g id="TYPE_1">%2$s</xliff:g> របស់អ្នក។</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"យល់​ហើយ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ការកំណត់​ឯកជនភាព"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"កម្មវិធី​កំពុង​ប្រើប្រាស់ <xliff:g id="TYPES_LIST">%s</xliff:g> របស់អ្នក"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"កម្មវិធី​កំពុង​ប្រើប្រាស់ <xliff:g id="TYPES_LIST">%s</xliff:g> របស់អ្នក"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" និង "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"កាមេរ៉ា"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ទីតាំង"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"មីក្រូហ្វូន"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">កម្មវិធី <xliff:g id="NUM_APPS_1">%d</xliff:g> ទៀត</item>
- <item quantity="one">កម្មវិធី <xliff:g id="NUM_APPS_0">%d</xliff:g> ទៀត</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"បិទឧបករណ៍​ចាប់សញ្ញា"</string>
<string name="device_services" msgid="1191212554435440592">"សេវាកម្មឧបករណ៍"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"គ្មាន​ចំណងជើង"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ចុចដើម្បី​ចាប់ផ្ដើម​កម្មវិធី​នេះឡើងវិញ រួចចូលប្រើ​ពេញអេក្រង់។"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"បើក <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"បើក​ការកំណត់​ការជូនដំណឹង​សម្រាប់ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"អនុញ្ញាត​សារលេចឡើង​ពី​កម្មវិធី​នេះ?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ទប់ស្កាត់"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"ការកំណត់​សម្រាប់សារលេចឡើង <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"អនុញ្ញាត​សារលេចឡើង​ពី <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"បដិសេធ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"អនុញ្ញាត"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"សួរខ្ញុំនៅពេលក្រោយ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ពី <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ពី <xliff:g id="APP_NAME">%2$s</xliff:g> និង <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ទៀត"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ផ្លាស់ទី"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ផ្លាស់ទីទៅផ្នែកខាងលើខាងឆ្វេង"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ផ្លាស់ទីទៅផ្នែកខាងលើខាងស្ដាំ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ផ្លាស់ទីទៅផ្នែកខាងក្រោមខាងឆ្វេង​"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ផ្លាស់ទីទៅផ្នែកខាងក្រោម​ខាងស្ដាំ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index eba092b6d751..5a6a52cfaab0 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ನಿಮ್ಮ ಸಾಧನದೊಂದಿಗೆ ನೀಡಲಾಗಿರುವ ಚಾರ್ಜರ್‌ ಬಳಸಿ"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ಬ್ಯಾಟರಿ ಸೇವರ್‌ ಆನ್‌ ಮಾಡುವುದೇ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಕುರಿತು"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ಆನ್‌ ಮಾಡಿ"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ಬ್ಯಾಟರಿ ಸೇವರ್‌ ಆನ್‌ ಮಾಡಿ"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ಬಳಕೆದಾರರು ಪ್ರಸ್ತುತ ಈ ಸಾಧನಕ್ಕೆ ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದಾರೆ USB ಡೀಬಗ್ ಮಾಡುವುದನ್ನು ಆನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು, ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರರಿಗೆ ಬದಲಾಯಿಸಿ."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB ಪೋರ್ಟ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ದ್ರವ ಅಥವಾ ಧೂಳಿನ ಕಣಗಳಿಂದ ನಿಮ್ಮ ಸಾಧನವನ್ನು ರಕ್ಷಿಸಲು, USB ಪೋರ್ಟ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಯಾವುದೇ ಪರಿಕರಗಳನ್ನು ಪತ್ತೆ ಮಾಡುವುದಿಲ್ಲ. \n\n USB ಪೋರ್ಟ್ ಅನ್ನು ಬಳಸಲು ಸುರಕ್ಷಿತವಾಗಿದ್ದಾಗ ಮತ್ತೆ ನಿಮಗೆ ಸೂಚಿಸಲಾಗುವುದು."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ಚಾರ್ಜರ್‌ಗಳು ಮತ್ತು ಪರಿಕರಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು USB ಪೋರ್ಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ಪರದೆ ತುಂಬಿಸಲು ಝೂಮ್ ಮಾಡು"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ಪರದೆ ತುಂಬಿಸಲು ವಿಸ್ತಾರಗೊಳಿಸು"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ನಿಮ್ಮ ಬೆರಳಚ್ಚು ಬಳಸದೆಯೇ ಅನ್‌ಲಾಕ್ ಮಾಡಿ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ಮುಖವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ಕಳುಹಿಸಿ"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string>
<string name="unlock_label" msgid="8779712358041029439">"ಅನ್‌ಲಾಕ್ ಮಾಡು"</string>
<string name="phone_label" msgid="2320074140205331708">"ಫೋನ್ ತೆರೆಯಿರಿ"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ಧ್ವನಿ ಸಹಾಯಕವನ್ನು ತೆರೆ"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ಮೊಬೈಲ್ ಡೇಟಾ ಆನ್"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ಮೊಬೈಲ್ ಡೇಟಾ ಆಫ್"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ಡೇಟಾ ಬಳಸಲು ಹೊಂದಿಸಲಾಗಿಲ್ಲ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ಆಫ್"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ಬ್ಲೂಟೂತ್‌‌ ಟೆಥರಿಂಗ್."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ಏರೋಪ್ಲೇನ್‌ ಮೋಡ್‌"</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ಏರ್‌ಪ್ಲೇನ್ ಮೋಡ್ ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ಸಂಪೂರ್ಣ ನಿಶ್ಯಬ್ಧ"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ಅಲಾರಮ್‌ಗಳು ಮಾತ್ರ"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ಅಡಚಣೆ ಮಾಡಬೇಡ."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"ಅಡಚಣೆ ಮಾಡಬೇಡ ಆಯ್ಕೆಯನ್ನು ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"ಅಡಚಣೆ ಮಾಡಬೇಡ ಆಯ್ಕೆಯನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ಬ್ಲೂಟೂತ್."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ಬ್ಲೂಟೂತ್ ಆಫ್ ಆಗಿದೆ."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗಿದೆ."</string>
@@ -279,6 +277,8 @@
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> ಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಧಿಸೂಚನೆಗಳು ಒಳಗಿವೆ.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಧಿಸೂಚನೆಗಳು ಒಳಗಿವೆ.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"ಅಧಿಸೂಚನೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ಪರದೆಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರುಗುತ್ತದೆ."</string>
@@ -291,8 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ಸ್ಕ್ರೀನ್ ಸೇವರ್"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ಇಥರ್ನೆಟ್"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ಹೆಚ್ಚಿನ ಆಯ್ಕೆಗಳಿಗಾಗಿ ಐಕಾನ್‌ಗಳನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿಹಿಡಿಯಿರಿ"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"ಅಡಚಣೆ ಮಾಡಬೇಡ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ಆದ್ಯತೆ ಮಾತ್ರ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"ಅಲಾರಮ್‌ಗಳು ಮಾತ್ರ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ಸಂಪೂರ್ಣ ನಿಶ್ಯಬ್ಧ"</string>
@@ -443,10 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ಬ್ಯಾಟರಿ ರಕ್ಷಕ ಆನ್ ಆಗಿದೆ"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ಬ್ಯಾಟರಿ ಸೇವರ್‌ ಆಫ್ ಮಾಡಿ"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ಅಥವಾ ಕ್ಯಾಸ್ಟಿಂಗ್ ಮಾಡುವಾಗ, ನೀವು ಪ್ಲೇ ಮಾಡುವ ಆಡಿಯೊ ಮತ್ತು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಪಾವತಿ ಮಾಹಿತಿ, ಫೋಟೋಗಳು ಮತ್ತು ಸಂದೇಶಗಳಂತಹ ಯಾವುದೇ ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ಕ್ಯಾಪ್ಚರ್ ಮಾಡಬಹುದು."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"ಕ್ಯಾಸ್ಟಿಂಗ್/ರೆಕಾರ್ಡಿಂಗ್ ಸಮಯದಲ್ಲಿ ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು ಬಹಿರಂಗಪಡಿಸುವುದು"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ಮತ್ತೊಮ್ಮೆ ತೋರಿಸದಿರು"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ಎಲ್ಲವನ್ನೂ ತೆರವುಗೊಳಿಸು"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"ನಿರ್ವಹಿಸಿ"</string>
@@ -521,10 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ಸೌಂಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"ವಿಸ್ತರಿಸು"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ಸಂಕುಚಿಸು"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ಸ್ವಯಂಚಾಲಿತ ಶೀರ್ಷಿಕೆ ಮಾಧ್ಯಮ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ಶೀರ್ಷಿಕೆಗಳ ಸಲಹೆಯನ್ನು ಮುಚ್ಚಿ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ಔಟ್‌ಪುಟ್ ಸಾಧನವನ್ನು ಬದಲಿಸಿ"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ಪರದೆಯನ್ನು ಪಿನ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"ನೀವು ಅನ್‌ಪಿನ್ ಮಾಡುವವರೆಗೆ ಅದನ್ನು ವೀಕ್ಷಣೆಯಲ್ಲಿಡುತ್ತದೆ. ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ ಹಾಗೂ ಅನ್‌ಪಿನ್ ಮಾಡಲು ಅವಲೋಕಿಸಿ."</string>
@@ -625,7 +620,7 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ಈ ಸೂಚನೆಗಳು ನಿಮ್ಮನ್ನು ಎಚ್ಚರಿಸುತ್ತವೆ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ವಜಾಗೊಳಿಸಿದ್ದೀರಿ. \nಅವುಗಳನ್ನು ತೋರಿಸುತ್ತಲೇ ಇರಬೇಕೆ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"ಪೂರ್ಣಗೊಂಡಿದೆ"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
<skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸುತ್ತಲೇ ಇರಬೇಕೆ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿಲ್ಲಿಸಿ"</string>
@@ -633,19 +628,22 @@
<string name="inline_block_button" msgid="8735843688021655065">"ನಿರ್ಬಂಧಿಸಿ"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ತೋರಿಸುತ್ತಲಿರಿ"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ಕಿರಿದುಗೊಳಿಸಿ"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"ಮೌನವಾಗಿ ತೋರಿಸಿ"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ಮೌನವಾಗಿರಿ"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
<skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ಎಚ್ಚರಿಸುತ್ತಿರಿ"</string>
- <string name="inline_keep_showing_app" msgid="1723113469580031041">"ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸುತ್ತಲೇ ಇರಬೇಕೆ?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
<skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
+ <string name="inline_keep_showing_app" msgid="1723113469580031041">"ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸುತ್ತಲೇ ಇರಬೇಕೆ?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ನಿರ್ಬಂಧಿಸಲಾದ ಅಧಿಸೂಚನೆಗಳು ಎಲ್ಲಿಯೂ ಗೋಚರಿಸುವುದಿಲ್ಲ ಅಥವಾ ಯಾವುದೇ ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡುವುದಿಲ್ಲ. ನೀವು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಅಧಿಸೂಚನೆಗಳ ನಿರ್ಬಂಧವನ್ನು ರದ್ದುಗೊಳಿಸಬಹುದು."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ನಿಶ್ಶಬ್ಧ ಅಧಿಸೂಚನೆಗಳು ಶೇಡ್‌ನಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ, ಆದರೆ ಲಾಕ್ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಗೋಚರಿಸುವುದಿಲ್ಲ, ಬ್ಯಾನರ್ ಪ್ರಸ್ತುತಪಡಿಸುತ್ತವೆ ಅಥವಾ ಧ್ವನಿಯನ್ನು ಪ್ಲೇ ಮಾಡುತ್ತವೆ."</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
<skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಆಫ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಮೂಲಕ"</string>
<string name="appops_camera" msgid="8100147441602585776">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸುತ್ತಿದೆ."</string>
<string name="appops_microphone" msgid="741508267659494555">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ."</string>
@@ -724,11 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"ಕ್ಯಾಲೆಂಡರ್"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ವಾಲ್ಯೂಮ್ ನಿಯಂತ್ರಣಗಳ ಜೊತೆಗೆ ತೋರಿಸು"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"ಅಡಚಣೆ ಮಾಡಬೇಡ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ವಾಲ್ಯೂಮ್ ಬಟನ್‌ಗಳ ಶಾರ್ಟ್‌ಕಟ್‌"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"ವಾಲ್ಯೂಮ್ ಹೆಚ್ಚು ಮಾಡಿದಾಗ ಅಡಚಣೆ ಮಾಡಬೇಡ ಆಯ್ಕೆಯನ್ನು ತೊರೆಯಿರಿ"</string>
<string name="battery" msgid="7498329822413202973">"ಬ್ಯಾಟರಿ"</string>
<string name="clock" msgid="7416090374234785905">"ಗಡಿಯಾರ"</string>
<string name="headset" msgid="4534219457597457353">"ಹೆಡ್‌ಸೆಟ್"</string>
@@ -869,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ಬ್ರೌಸರ್‌ಗೆ ಹೋಗಿ"</string>
<string name="mobile_data" msgid="7094582042819250762">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"ವೈ-ಫೈ ಆಫ್ ಆಗಿದೆ"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ಬ್ಲೂಟೂತ್‌ ಆಫ್ ಆಗಿದೆ"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಆಫ್ ಆಗಿದೆ"</string>
@@ -900,10 +897,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI ಹೀಪ್ ಡಂಪ್ ಮಾಡಿ"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"ನಿಮ್ಮ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ಅನ್ನು <xliff:g id="APP">%1$s</xliff:g> ಬಳಸುತ್ತಿದೆ."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ನಿಮ್ಮ <xliff:g id="TYPES_LIST">%s</xliff:g> ಅನ್ನು ಆ್ಯಪ್‌ಗಳು ಬಳಸುತ್ತಿವೆ."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ಅರ್ಥವಾಯಿತು"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ಗೌಪ್ಯತಾಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ಆ್ಯಪ್ ನಿಮ್ಮ <xliff:g id="TYPES_LIST">%s</xliff:g> ಅನ್ನು ಬಳಸುತ್ತಿದೆ"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ <xliff:g id="TYPES_LIST">%s</xliff:g> ಅನ್ನು ಬಳಸುತ್ತಿವೆ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ಮತ್ತು "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ಕ್ಯಾಮರಾ"</string>
@@ -912,30 +905,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ಸೆನ್ಸರ್‌ಗಳು ಆಫ್"</string>
<string name="device_services" msgid="1191212554435440592">"ಸಾಧನ ಸೇವೆಗಳು"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ಯಾವುದೇ ಶೀರ್ಷಿಕೆಯಿಲ್ಲ"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಪ್ರಾರಂಭಿಸಲು ಮತ್ತು ಪೂರ್ಣ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ತೆರೆಯಿರಿ"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಬಬಲ್‌ಗಳಿಗಾಗಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್‌ನ ಬಬಲ್‌ಗಳನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ನಿರಾಕರಿಸಿ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ಅನುಮತಿಸಿ"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"ನನ್ನನ್ನು ಆನಂತರ ಕೇಳಿ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> ಆ್ಯಪ್‌ನ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> ಮತ್ತು <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ಹೆಚ್ಚಿನವುಗಳ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ಸರಿಸಿ"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ಎಡ ಮೇಲ್ಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ಬಲ ಮೇಲ್ಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ಸ್ಕ್ರೀನ್‌ನ ಎಡ ಕೆಳಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ಕೆಳಗಿನ ಬಲಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 55d77d145722..d7bf351ccbbc 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"기기와 함께 제공된 충전기를 사용하세요."</string>
<string name="battery_low_why" msgid="4553600287639198111">"설정"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"절전 모드를 사용 설정하시겠습니까?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"절전 모드 정보"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"사용"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"절전 모드 사용 설정"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"설정"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"현재 이 기기에 로그인한 사용자는 USB 디버깅을 사용 설정할 수 없습니다. 이 기능을 사용하려면 기본 사용자로 전환하세요."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB 포트 비활성화됨"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"기기를 액체나 이물질로부터 보호하기 위해 USB 포트가 사용 중지되었으며 액세서리를 연결할 수 없습니다.\n\nUSB 포트를 다시 안전하게 사용할 수 있게 되면 알려 드리겠습니다."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"충전기와 액세서리를 감지할 수 있도록 USB 포트가 사용 설정됨"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB 사용"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"전체화면 모드로 확대"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"전체화면 모드로 확대"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"스크린샷"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"지문 파일을 사용하지 않고 잠금 해제"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"얼굴 스캔 중"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"보내기"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"알림 관리"</string>
<string name="unlock_label" msgid="8779712358041029439">"잠금 해제"</string>
<string name="phone_label" msgid="2320074140205331708">"휴대전화 열기"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"음성 지원 열기"</string>
<string name="camera_label" msgid="7261107956054836961">"카메라 열기"</string>
<string name="cancel" msgid="6442560571259935130">"취소"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"도움말 메시지 영역"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"확인"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"다시 시도하세요."</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"지문 센서를 터치하세요."</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"모바일 데이터"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"모바일 데이터 사용"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"모바일 데이터 꺼짐"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"데이터를 사용하도록 설정되지 않음"</string>
<string name="cell_data_off" msgid="1051264981229902873">"사용 안함"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"블루투스 테더링입니다."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"비행기 모드입니다."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"비행기 모드를 사용합니다."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"모두 음소거"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"알람만"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"방해 금지 모드"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"방해 금지 모드가 사용 중지되었습니다."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"방해 금지 모드를 사용합니다."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"방해 금지 모드"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"방해 금지 모드가 사용 중지되었습니다."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"방해 금지 모드가 사용 설정되었습니다."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"블루투스"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"블루투스: 사용 안함"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"블루투스: 사용"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"위치 요청 있음"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"모든 알림 지우기"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g>개 더보기"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g>개 알림 더보기</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g>개 알림 더보기</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"알림 설정"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> 설정"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"화면이 자동으로 회전됩니다."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"화면 보호기"</string>
<string name="ethernet_label" msgid="7967563676324087464">"이더넷"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"추가 옵션을 보려면 아이콘을 길게 터치하세요."</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"방해 금지 모드"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"방해 금지 모드"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"중요 알림만"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"알람만"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"모두 차단"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"절전 모드 사용 중"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"성능 및 백그라운드 데이터를 줄입니다."</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"절전 모드 사용 중지"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>이(가) 알림, 비밀번호, 사진, 메시지, 결제 정보를 비롯한 화면의 모든 내용을 캡처하기 시작합니다."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>이(가) 화면을 녹화하거나 전송하도록 허용하시겠습니까?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"녹화 또는 전송 중에 <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>에서 내가 재생하는 오디오, 비밀번호, 결제 정보, 사진, 메시지 등 민감한 정보를 캡처할 수 있습니다."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"전송/녹화 중에 민감한 정보 노출"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"다시 표시 안함"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"모두 지우기"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"관리"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"소리 설정"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"펼치기"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"접기"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"자동 자막 미디어"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"자막 팁 닫기"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"출력 기기 전환"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"화면 고정됨"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"고정 해제할 때까지 계속 표시됩니다. 고정 해제하려면 뒤로 및 최근 사용을 길게 터치하세요."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"알림이 전송됩니다."</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"보통 이 알림을 닫았습니다. \n알림을 계속 표시하시겠습니까?"</string>
<string name="inline_done_button" msgid="492513001558716452">"완료"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"적용"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"이 알림을 계속 표시하시겠습니까?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"알림 중지"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"무음으로 알림"</string>
<string name="inline_block_button" msgid="8735843688021655065">"차단"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"계속 표시하기"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"최소화"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"소리 없이 표시"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"소리 및 알림 없이 표시"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"계속 무음으로 알림"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"내게 알림"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"소리 및 알림으로 표시"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"계속 알림"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"알림 사용 중지"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"이 앱의 알림을 계속 표시하시겠습니까?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"차단된 알림은 어디에도 표시되지 않으며 알림음이 재생되지 않습니다. 설정에서 알림을 차단 해제할 수 있습니다."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"무음 알림은 알림 세부정보에 나타나지만 잠금 화면에 표시되지 않으며, 배너를 표시하거나, 알림음을 재생하지 않습니다."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"이 알림이 도착하면 소리가 나며 알림 창, 상태 표시줄, 잠금 화면에 표시됩니다."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"이 알림은 끌 수 없습니다"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"제공: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"앱이 카메라를 사용 중입니다."</string>
<string name="appops_microphone" msgid="741508267659494555">"앱이 마이크를 사용 중입니다."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"캘린더"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"볼륨 컨트롤과 함께 표시"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"방해 금지 모드"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"방해 금지 모드"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"볼륨 버튼 단축키"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"볼륨 높일 시 방해 금지 모드 종료"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"볼륨 높일 시 방해 금지 모드 종료"</string>
<string name="battery" msgid="7498329822413202973">"배터리"</string>
<string name="clock" msgid="7416090374234785905">"시계"</string>
<string name="headset" msgid="4534219457597457353">"헤드셋"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"브라우저로 이동"</string>
<string name="mobile_data" msgid="7094582042819250762">"모바일 데이터"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi가 사용 중지됨"</string>
<string name="bt_is_off" msgid="2640685272289706392">"블루투스가 사용 중지됨"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"방해 금지 모드가 사용 중지됨"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"설정"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"확인"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other">앱 <xliff:g id="NUM_APPS_2">%d</xliff:g>개</item>
- <item quantity="one">앱 <xliff:g id="NUM_APPS_0">%d</xliff:g>개</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g>이(가) <xliff:g id="TYPES_LIST">%2$s</xliff:g>을(를) 사용 중입니다."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"애플리케이션이 <xliff:g id="TYPES_LIST">%s</xliff:g>을(를) 사용 중입니다."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"사용:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">애플리케이션 <xliff:g id="NUM_APPS_4">%1$d</xliff:g>개가 <xliff:g id="TYPE_5">%2$s</xliff:g>을(를) 사용하고 있습니다.</item>
- <item quantity="one">애플리케이션 <xliff:g id="NUM_APPS_0">%1$d</xliff:g>개가 <xliff:g id="TYPE_1">%2$s</xliff:g>을(를) 사용하고 있습니다.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"확인"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"개인정보 보호 설정"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g>을(를) 사용 중인 앱"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g>을(를) 사용 중인 앱"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" 및 "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"카메라"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"위치"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"마이크"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">기타 앱 <xliff:g id="NUM_APPS_1">%d</xliff:g>개</item>
- <item quantity="one">기타 앱 <xliff:g id="NUM_APPS_0">%d</xliff:g>개</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"센서 사용 안함"</string>
<string name="device_services" msgid="1191212554435440592">"기기 서비스"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"제목 없음"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"탭하여 이 앱을 다시 시작하고 전체 화면으로 이동합니다."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> 열기"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> 알림 설정 열기"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"이 앱에서 풍선을 허용할까요?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"차단"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> 알림 풍선 설정"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 알림 풍선을 허용하시겠습니까?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"거부"</string>
<string name="yes_bubbles" msgid="668809525728633841">"허용"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"나중에 알림"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>의 <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> 외 <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>개의 <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"이동"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"왼쪽 상단으로 이동"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"오른쪽 상단으로 이동"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"왼쪽 하단으로 이동"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"오른쪽 하단으로 이동"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 7e7af37b008e..937c1469f883 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Түзмөгүңүз менен келген кубаттагычты колдонуңуз"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Жөндөөлөр"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Батареяны үнөмдөгүч режими күйгүзүлсүнбү?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Батареяны үнөмдөгүч режими жөнүндө маалымат"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Күйгүзүү"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Батареяны үнөмдөгүч режимин күйгүзүү"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Жөндөөлөр"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Учурда бул аккаунтта USB аркылуу мүчүлүштүктөрдү оңдоо функциясын иштетүүгө болбойт. Негизги колдонуучунун аккаунтуна кириңиз."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB порту өчүрүлдү"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Түзмөгүңүздү суюктук менен урандылардан коргоо үчүн USB порту өчүрүлдү, азырынча ага гарнитураны саюуга болбойт.\n\nUSB портун кайра колдонуу мүмкүн болгондо, билдирме аласыз."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Кубаттагычтарды жана аксессуарларды аныктоо үчүн USB оюкчасы иштетилди"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB’ни иштетүү"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Экрнд тлтр ү. чен өлч өзг"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Экранды толтуруу ү-н чоюу"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Скриншот"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Манжа изиңизди колдонбостон эле кулпуну ачыңыз"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Жүз скандалууда"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Жөнөтүү"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Билдирмелерди башкаруу"</string>
<string name="unlock_label" msgid="8779712358041029439">"кулпуну ачуу"</string>
<string name="phone_label" msgid="2320074140205331708">"телефонду ачуу"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"үн жардамчысысын ачуу"</string>
<string name="camera_label" msgid="7261107956054836961">"камераны ачуу"</string>
<string name="cancel" msgid="6442560571259935130">"Жокко чыгаруу"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Жардам билдирүүсү"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Ырастоо"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Кайталоо"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Манжа изинин сенсорун басыңыз"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобилдик Интернет"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобилдик Интернет күйгүзүлгөн"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобилдик Интернет өчүрүлгөн"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Дайындарды колдонуу үчүн жөндөлгөн эмес"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Өчүк"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth аркылуу интернет бөлүшүү."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Учак тартиби."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Учак режими күйгүзүлдү."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"тымтырс"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ойготкуч гана"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Тынчымды алба."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Тынчымды алба деген өчүрүлдү."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Тынчымды алба деген күйгүзүлдү."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Тынчымды алба."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Тынчымды алба\" режими өчүрүлдү."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Тынчымды алба\" режими күйгүзүлдү."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth өчүк."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth күйүк."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Жайгаштыруу талаптары иштелүүдө"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Бардык эскертмелерди тазалоо."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Дагы <xliff:g id="NUMBER_1">%s</xliff:g> эскертме бар.</item>
<item quantity="one">Дагы <xliff:g id="NUMBER_0">%s</xliff:g> эскертме бар.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Эскертме жөндөөлөрү"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> жөндөөлөрү"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран автоматтык түрдө бурулат."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Көшөгө"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Кошумча параметрлерди ачуу үчүн сүрөтчөлөрдү басып, кармап туруңуз"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Тынчымды алба"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Тынчымды алба"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Шашылыш эскертмелер гана"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Ойготкуч гана"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Тымтырс"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Батареяны үнөмдөгүч режими күйүк"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Иштин майнаптуулугун начарлатып, фондук дайындарды чектейт"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Батареяны үнөмдөгүч режимин өчүрүү"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> экранга чыккан нерсенин баарын, анын ичинде билдирмелерди, сырсөздөрдү, сүрөттөрдү, билдирүүлөрдү жана төлөм маалыматын сүрөткө тарта баштайт."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> колдонмосу экраныңыздагы нерсени жаздырып же тышкы экранга чыгарсынбы?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Жаздырып же тышкы экранга чыгаруу учурунда, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ойноткон аудиоңуз, сырсөздөрүңүз, төлөө маалыматыңыз, сүрөттөрүңүз жана билдирүүлөрүңүз сыяктуу купуя маалыматты жаздырып калышы мүмкүн."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Тышкы экранга чыгарууда/жаздырууда купуя маалыматты ачыкка чыгаруу"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Экинчи көрсөтүлбөсүн"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Бардыгын тазалап салуу"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Башкаруу"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Добуштун жөндөөлөрү"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Жайып көрсөтүү"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жыйнап коюу"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медиага автоматтык коштомо жазуу"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Коштомо жазуулар кеңеши"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Аудио түзмөктү которуштуруу"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Экран кадалган"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ал бошотулмайынча көрүнө берет. Бошотуу үчүн, \"Артка\" жана \"Карап чыгуу\" баскычтарын басып, кармап туруңуз."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Бул билдирмелер үн менен эскертилет"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Адатта мындай эскертмелерди өткөрүп жибересиз. \nАлар көрсөтүлө берсинби?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Бүттү"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Колдонуу"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Бул эскертмелер көрсөтүлө берсинби?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Эскертмелерди токтотуу"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Үнсүз жеткирүү"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Бөгөттөө"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Көрсөтүлө берсин"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Кичирейтүү"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Үнсүз көрсөтүү"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Жумшак"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Үнү чыкпасын"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Мага кабар берилсин"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Үзгүлтүктүү"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Кабар бериле берсин"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Билдирмелерди өчүрүү"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Бул колдонмонун эскертмелери көрсөтүлө берсинби?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Бөгөттөлгөн билдирмелер эч бир жерде көрсөтүлбөйт жана үнү өчүрүлөт. Жөндөөлөрдөн билдирмелерди кайра бөгөттөн чыгарсаңыз болот."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Үнсүз билдирмелер экранда көрүнөт, бирок кулпуланган экранда көрүнбөйт. Ошондой эле, алар көрнөк-жарнакты көрсөтпөйт жана үнү өчүк болот."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Бул билдирмелер келгенде, үн чыгарып, билдирмелер суурмасында, абал тилкесинде жана кулпуланган экранда көрүнүшөт"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Бул эскертмелерди өчүрүүгө болбойт"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> аркылуу"</string>
<string name="appops_camera" msgid="8100147441602585776">"Бул колдонмо камераны колдонууда."</string>
<string name="appops_microphone" msgid="741508267659494555">"Бул колдонмо микрофонду колдонууда."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Жылнаама"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Үн көзөмөлдөгүчтөрү менен көрсөтүлсүн"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Тынчымды алба"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Тынчымды алба"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Үндү көзөмөлдөөчү баскычтардын кыска жолдору"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Үн катуулатылганда \"Тынчымды алба\" режиминен чыгуу"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Үн катуулатылганда \"Тынчымды алба\" режиминен чыгуу"</string>
<string name="battery" msgid="7498329822413202973">"Батарея"</string>
<string name="clock" msgid="7416090374234785905">"Саат"</string>
<string name="headset" msgid="4534219457597457353">"Гарнитура"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Серепчиге өтүү"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобилдик Интернет"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi өчүк"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth өчүк"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"Тынчымды алба\" режими өчүк"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Жөндөөлөр"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Түшүндүм"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> колдонмо</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> колдонмо</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> төмөнкүлөрдү колдонуп жатат: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Колдонмолор төмөнкүлөрдү пайдаланып жатышат: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Колднлуда:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="TYPE_5">%2$s</xliff:g> <xliff:g id="NUM_APPS_4">%1$d</xliff:g> колдонмо аркылуу пайдаланылууда.</item>
- <item quantity="one"><xliff:g id="TYPE_1">%2$s</xliff:g> <xliff:g id="NUM_APPS_0">%1$d</xliff:g> колдонмо аркылуу пайдаланылууда.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Түшүндүм"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Купуялык жөндөөлөрү"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> программаларын пайдаланып жаткан колдонмо"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"<xliff:g id="TYPES_LIST">%s</xliff:g> программаларын пайдаланып жаткан колдонмолор"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" жана "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камера"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"жайгашкан жер"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"микрофон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Дагы <xliff:g id="NUM_APPS_1">%d</xliff:g> колдонмо</item>
- <item quantity="one">Дагы <xliff:g id="NUM_APPS_0">%d</xliff:g> колдонмо</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Сенсорлорду өчүрүү"</string>
<string name="device_services" msgid="1191212554435440592">"Түзмөк кызматтары"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Аталышы жок"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Бул колдонмону өчүрүп күйгүзүп, толук экранга өтүү үчүн таптап коюңуз."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун ачуу"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунун эскертме жөндөөлөрүн ачуу"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Бул колдонмонун билдирмелерине уруксат берилсинби?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Бөгөттөө"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> көбүктөрүнүн жөндөөлөрү"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунун көбүктөрүнө уруксат берилсинби?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Жок"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Уруксат берүү"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Кийинчерээк суралсын"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> колдонмосунан <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> жана дагы <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> колдонмодон <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Жылдыруу"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Жогорку сол жакка жылдыруу"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Жогорку оң жакка жылдырыңыз"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Төмөнкү сол жакка жылдыруу"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Төмөнкү оң жакка жылдырыңыз"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index c28d73b13295..8046632c6492 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ກະລຸນາໃຊ້ຕົວສາກທີ່ມາພ້ອມກັບອຸປະກອນຂອງທ່ານ"</string>
<string name="battery_low_why" msgid="4553600287639198111">"​ການ​ຕັ້ງ​ຄ່າ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ເປີດໃຊ້ຕົວປະຢັດແບັດເຕີຣີບໍ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ກ່ຽວກັບຕົວປະຢັດແບັດເຕີຣີ"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ເປີດ​ໃຊ້"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ເປີດໃຊ້ຕົວປະຢັດແບັດເຕີຣີ"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ການຕັ້ງຄ່າ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ຜູ້ໃຊ້ທີ່ກຳລັງເຂົ້າສູ່ລະບົບອຸປະກອນຢູ່ໃນຕອນນີ້ບໍ່ສາມາດເປີດໃຊ້ການດີບັກ USB ໄດ້. ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ສະຫຼັບໄປໃຊ້ຜູ້ໃຊ້ຫຼັກ."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"ປິດການນຳໃຊ້ຜອດ USB ແລ້ວ"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ເພື່ອປົກປ້ອງອຸປະກອນຂອງທ່ານຈາກຂອງແຫລວ ຫຼື ເສດດິນຕ່າງໆ, ຜອດ USB ຈຶ່ງຖືກປິດການນຳໃຊ້ ແລະ ຈະບໍ່ກວດຫາອຸປະກອນເສີມໃດໆ.\n\nທ່ານຈະໄດ້ຮັບການແຈ້ງເຕືອນເມື່ອມັນປອດໄພໃນການໃຊ້ຜອດ USB ອີກເທື່ອໜຶ່ງ."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ເປີດນຳໃຊ້ USB ແລ້ວເພື່ອກວດຫາສາຍສາກ ແລະ ອຸປະກອນເສີມ"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"ເປີດໃຊ້ USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ຊູມໃຫ້ເຕັມໜ້າຈໍ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ປັບໃຫ້ເຕັມໜ້າຈໍ"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ພາບໜ້າຈໍ"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ປົດ​ລັອກ​ໂດຍ​ບໍ່​ມີ​ການ​ໃຊ້​ລາຍ​ນີ້ວ​ມື​ຂອງ​ທ່ານ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ການສະແກນໜ້າ"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ສົ່ງ"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"ຈັດການການແຈ້ງເຕືອນ"</string>
<string name="unlock_label" msgid="8779712358041029439">"ປົດລັອກ"</string>
<string name="phone_label" msgid="2320074140205331708">"​ເປີດ​​ແປ້ນ​ໂທ​ລະ​ສັບ"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ຊ່ວ​ເຫຼືອ​ເປີດ​ສຽງ"</string>
<string name="camera_label" msgid="7261107956054836961">"ເປີດ​ກ້ອງ"</string>
<string name="cancel" msgid="6442560571259935130">"ຍົກເລີກ"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"ຊ່ວຍພື້ນທີ່ຂໍ້ຄວາມ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"ຢືນຢັນ"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ລອງໃໝ່"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Touch the fingerprint sensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ອິນເຕີເນັດມືຖື"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ເປີດອິນເຕີເນັດມືຖືແລ້ວ"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ປິດອິນເຕີເນັດມືຖືແລ້ວ"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ບໍ່ໄດ້ຕັ້ງໃຫ້ໃຊ້ອິນເຕີເນັດ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ປິດ"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ການປ່ອຍສັນຍານ Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ໂໝດໃນຍົນ."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ເປີດ​ໂໝດ​ຢູ່​ໃນ​ຍົນ​ແລ້ວ."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ງຽບທັງໝົດ"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ໂມງປຸກເທົ່ານັ້ນ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ຫ້າມລົບກວນ."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ຢ່າ​ລົບ​ກວນ​ປິດ​ແລ້ວ."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ຢ່າ​ລົບ​ກວນ​ເປີດ​ແລ້ວ."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ຫ້າມລົບກວນ."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"ປິດໂໝດຫ້າມລົບກວນແລ້ວ."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"ຢ່າລົບກວນເປີດແລ້ວ."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth ປິດ."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ເປີດ."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ການຮ້ອງຂໍສະຖານທີ່ທີ່ເຮັດວຽກຢູ່"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ລຶບການແຈ້ງເຕືອນທັງໝົດ."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">ມີ <xliff:g id="NUMBER_1">%s</xliff:g> ການແຈ້ງເຕືອນເພີ່ມເຕີມຢູ່ທາງໃນ.</item>
<item quantity="one">ມີ <xliff:g id="NUMBER_0">%s</xliff:g> ການແຈ້ງເຕືອນເພີ່ມເຕີມຢູ່ທາງໃນ.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ແຈ້ງ​ເຕືອນ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"ການ​ຕັ້ງ​ຄ່າ <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ໜ້າຈໍຈະໝຸນໂດຍອັດຕະໂນມັດ."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ພາບພັກໜ້າຈໍ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ແຕະໄອຄອນຄ້າງໄວ້ເພື່ອເບິ່ງຕົວເລືອກເພີ່ມເຕີມ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"ຫ້າມ​ລົບ​ກວນ"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"ຫ້າມລົບກວນ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ບຸ​ລິ​ມະ​ສິດເທົ່າ​ນັ້ນ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"ໂມງ​ປຸກ​ເທົ່າ​ນັ້ນ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ຄວາມງຽບ​ທັງ​ໝົດ"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ຕົວປະຢັດແບັດເຕີຣີເປີດຢູ່"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ຫຼຸດ​ປະ​ສິ​ທິ​ພາບ​ແລະ​ການ​ນຳ​ໃຊ້​ຂໍ້​ມູນ​ພື້ນຫຼັງ"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ປິດຕົວປະຢັດແບັດເຕີຣີ"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ຈະເລີ່ມບັນທຶກທຸກຢ່າງຢູ່ໜ້າຈໍຂອງທ່ານ ຮວມທັງການແຈ້ງເຕືອນ, ລະຫັດຜ່ານ, ຮູບພາບ, ຂໍ້ຄວາມ ແລະ ຂໍ້ມູນການຈ່າຍເງິນ."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"ອະນຸຍາດໃຫ້ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ບັນທຶກ ຫຼື ສົ່ງສັນຍານໜ້າຈໍຂອງທ່ານບໍ?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ໃນລະຫວ່າງການບັນທຶກ ແລະ ການສົ່ງສັນຍານ, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ຈະສາມາດບັນທຶກຂໍ້ມູນທີ່ລະອຽດອ່ອນໃດກໍຕາມ ເຊັ່ນ: ສຽງທີ່ທ່ານເປີດ ແລະ ລະຫັດຜ່ານຂອງທ່ານ, ຂໍ້ມູນການຈ່າຍເງິນ, ຮູບພາບ ແລະ ຂໍ້ຄວາມ."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"ເປີດເຜີຍຂໍ້ມູນລະອຽດອ່ອນໃນລະຫວ່າງການສົ່ງສັນຍານ/ການບັນທຶກ"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ບໍ່​ຕ້ອງ​ສະ​ແດງ​ອີກ"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ລຶບລ້າງທັງໝົດ"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"ຈັດການ"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ການຕັ້ງຄ່າສຽງ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"ຂະຫຍາຍ"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ຫຍໍ້ລົງ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ສ້າງຄຳບັນຍາຍມີເດຍໂດຍອັດຕະໂນມັດ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ປິດເຄັດລັບຄຳບັນຍາຍ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ສະຫຼັບອຸປະກອນສົ່ງສຽງອອກ"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ປັກ​ໝຸດໜ້າ​ຈໍ​ແລ້ວ"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"ນີ້ຈະສະແດງມັນໃນໜ້າຈໍຈົນກວ່າທ່ານຈະເຊົາປັກມຸດ. ໃຫ້ແຕະປຸ່ມກັບຄືນ ແລະ ປຸ່ມພາບຮວມຄ້າງໄວ້ເພື່ອຍົກເລີກການປັກມຸດ."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ການແຈ້ງເຕືອນເຫຼົ່ານີ້ຈະເຕືອນທ່ານ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"ໂດຍປົກກະຕິທ່ານປິດການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄວ້. \nສືບຕໍ່ສະແດງພວກມັນບໍ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"ແລ້ວໆ"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"ນຳໃຊ້"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"ສະແດງການແຈ້ງເຕືອນເຫຼົ່ານີ້ຕໍ່ໄປບໍ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"ຢຸດການແຈ້ງເຕືອນ"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"ຈັດສົ່ງແບບງຽບໆ"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ບລັອກ"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ສະແດງຕໍ່ໄປ"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ຫຍໍ້"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"ສະແດງແບບງຽບໆ"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"ສຸພາບ"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ສືບຕໍ່ມິດງຽບ"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"ແຈ້ງເຕືອນຂ້ອຍ"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"ການຂັດຈັງຫວະ"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ສືບຕໍ່ແຈ້ງເຕືອນ"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"ປິດການແຈ້ງເຕືອນ"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ສະແດງການແຈ້ງເຕືອນຈາກແອັບນີ້ຕໍ່ໄປບໍ?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ການແຈ້ງເຕືອນທີ່ຖືກບລັອກໄວ້ຈະບໍ່ປາກົດຢູ່ບ່ອນອື່ນ ຫຼື ເປີດສຽງ. ທ່ານສາມາດປົດບລັອກການແຈ້ງເຕືອນໄດ້ໃນການຕັ້ງຄ່າ."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ການແຈ້ງເຕືອນແບບງຽບຈະປາກົດໃນເງົາ, ແຕ່ຈະບໍ່ປາກົດໃນໜ້າຈໍລັອກ, ສະແດງປ້າຍແບນເນີ ຫຼື ເປີດສຽງ."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"ການແຈ້ງເຕືອນເຫຼົ່ານີ້ຈະເປີດສຽງ ແລະ ສະແດງໃນແຖບການແຈ້ງເຕືອນ, ແຖບສະຖານະ ແລະ ໜ້າຈໍລັອກ"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ບໍ່ສາມາດປິດການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"ຜ່ານ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"ແອັບນີ້ກຳລັງໃຊ້ກ້ອງຢູ່."</string>
<string name="appops_microphone" msgid="741508267659494555">"ແອັບນີ້ກຳລັງໃຊ້ໄມໂຄຣໂຟນຢູ່."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"ປະຕິທິນ"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ສະແດງສ່ວນຄວບຄຸມສຽງ"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ຫ້າມ​ລົບ​ກວນ"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"ຫ້າມລົບກວນ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ທາງລັດປຸ່ມສຽງ"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ອອກຈາກໂໝດ ຫ້າມລົບກວນ ເມື່ອປັບສຽງໃຫ້ດັງຂຶ້ນ"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ອອກຈາກໂໝດຫ້າມລົບກວນເມື່ອປັບສຽງໃຫ້ດັງຂຶ້ນ"</string>
<string name="battery" msgid="7498329822413202973">"ແບັດເຕີຣີ"</string>
<string name="clock" msgid="7416090374234785905">"ໂມງ"</string>
<string name="headset" msgid="4534219457597457353">"​ຊຸດ​ຫູ​ຟັງ"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ໄປທີ່ໂປຣແກຣມທ່ອງເວັບ"</string>
<string name="mobile_data" msgid="7094582042819250762">"ອິນເຕີເນັດມືຖື"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ປິດຢູ່"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth ປິດຢູ່"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"ຫ້າມລົບກວນ ປິດຢູ່"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ການຕັ້ງຄ່າ"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ເຂົ້າໃຈແລ້ວ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ແອັບ</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ແອັບ</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ກຳລັງໃຊ້ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ຂອງທ່ານ."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ແອັບພລິເຄຊັນກຳລັງໃຊ້ <xliff:g id="TYPES_LIST">%s</xliff:g> ຂອງທ່ານ."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ກຳລັງໃຊ້:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ແອັບພລິເຄຊັນກຳລັງໃຊ້ <xliff:g id="TYPE_5">%2$s</xliff:g> ຂອງທ່ານຢູ່.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ແອັບພລິເຄຊັນກຳລັງໃຊ້ <xliff:g id="TYPE_1">%2$s</xliff:g> ຂອງທ່ານຢູ່.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ເຂົ້າໃຈແລ້ວ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ການຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວ"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ແອັບກຳລັງໃຊ້ <xliff:g id="TYPES_LIST">%s</xliff:g> ຂອງທ່ານ"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ແອັບກຳລັງໃຊ້ <xliff:g id="TYPES_LIST">%s</xliff:g> ຂອງທ່ານ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ແລະ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ກ້ອງຖ່າຍຮູບ"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ສະຖານທີ່"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"ໄມໂຄຣໂຟນ"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> ແອັບອື່ນໆ</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ແອັບອື່ນໆ</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ປິດການຮັບຮູ້ຢູ່"</string>
<string name="device_services" msgid="1191212554435440592">"ບໍລິການອຸປະກອນ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ບໍ່ມີຊື່"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ແຕະເພື່ອຣີສະຕາດແອັບນີ້ ແລະ ໃຊ້ແບບເຕັມຈໍ."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"ເປີດ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"ເປີດການຕັ້ງຄ່າການແຈ້ງເຕືອນສຳລັບ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"ອະນຸຍາດໃຫ້ມີຂໍ້ຄວາມແບບເຝື້ອຈາກແອັບນີ້ບໍ່?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ບລັອກ"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"ການຕັ້ງຄ່າສຳລັບ bubble <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"ອະນຸຍາດໃຫ້ມີ bubbles ຈາກ <xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ປະຕິເສດ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ອະນຸຍາດ"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"ຖາມຂ້ອຍໃນພາຍຫຼັງ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ຈາກ <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ຈາກ <xliff:g id="APP_NAME">%2$s</xliff:g> ແລະ ອີກ <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ຍ້າຍ"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ຍ້າຍຊ້າຍເທິງ"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ຍ້າຍຂວາເທິງ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ຍ້າຍຊ້າຍລຸ່ມ"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ຍ້າຍຂວາລຸ່ມ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index df4017d12b56..e8500c18aa23 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Naudokite originalų su įrenginiu pateiktą įkroviklį"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Nustatymai"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Įjungti Akumuliatoriaus tausojimo priemonę?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Apie Akumuliatoriaus tausojimo priemonę"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Įjungti"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Įjungti Akumuliatoriaus tausojimo priemonę"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nustatymai"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Šiuo metu prie įrenginio prisijungęs naudotojas negali įjungti USB derinimo. Kad galėtumėte naudoti šią funkciją, perjunkite į pagrindinį naudotoją."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB prievadas išjungtas"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Siekiant apsaugoti įrenginį nuo skysčių ar smulkių dalelių, USB prievadas buvo išjungtas ir neaptiks jokių priedų.\n\nJums bus pranešta, kai galėsite vėl saugiai naudoti USB prievadą."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB prievadas įgalintas aptikti kroviklius ir priedus"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Įgalinti USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Keisti mast., kad atit. ekr."</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ištempti, kad atit. ekr."</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Ekrano kopija"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Atrakinti nenaudojant piršto antspaudo"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Nuskaitomas veidas"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Siųsti"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Tvarkyti pranešimus"</string>
<string name="unlock_label" msgid="8779712358041029439">"atrakinti"</string>
<string name="phone_label" msgid="2320074140205331708">"atidaryti telefoną"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"atidaryti „Voice Assist“"</string>
<string name="camera_label" msgid="7261107956054836961">"atidaryti fotoaparatą"</string>
<string name="cancel" msgid="6442560571259935130">"Atšaukti"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Pagalbos pranešimo sritis"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Patvirtinkite"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Bandyti dar kartą"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Palieskite piršto antspaudo jutiklį"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobiliojo ryšio duomenys"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobiliojo ryšio duomenys įjungti"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobiliojo ryšio duomenys išjungti"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nenustatyta naudoti duomenis"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Išjungta"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"„Bluetooth“ įrenginio kaip modemo naudojimas."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Lėktuvo režimas."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Lėktuvo režimas įjungtas."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"visiška tyla"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"tik įspėjimai"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Netrukdyti."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Funkcija „Netrukdyti“ išjungta."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Funkcija „Netrukdyti“ įjungta."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Netrukdymo režimas."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Netrukdymo režimas išjungtas."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Netrukdymo režimas įjungtas."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"„Bluetooth“."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"„Bluetooth“ išjungtas."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"„Bluetooth“ įjungtas."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Vietovės užklausos aktyvios"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Išvalyti visus pranešimus."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"Dar <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Grupėje yra dar <xliff:g id="NUMBER_1">%s</xliff:g> pranešimas.</item>
<item quantity="few">Grupėje yra dar <xliff:g id="NUMBER_1">%s</xliff:g> pranešimai.</item>
<item quantity="many">Grupėje yra dar <xliff:g id="NUMBER_1">%s</xliff:g> pranešimo.</item>
<item quantity="other">Grupėje yra dar <xliff:g id="NUMBER_1">%s</xliff:g> pranešimų.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Pranešimų nustatymai"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"„<xliff:g id="APP_NAME">%s</xliff:g>“ nustatymai"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekranas bus sukamas automatiškai."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ekrano užsklanda"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Eternetas"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Palieskite ir palaikykite piktogramas, kad būtų parodyta daugiau parinkčių"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Netrukdyti"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Netrukdymo režimas"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Tik prioritetiniai įvykiai"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Tik signalai"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Visiška tyla"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Akumuliatoriaus tausojimo priemonė įjungta"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Sumažinamas našumas ir foninių duomenų naudojimas"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Išjungti Akumuliatoriaus tausojimo priemonę"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"„<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>“ pradės fiksuoti visą ekrane rodomą turinį, įskaitant informacinius pranešimus, slaptažodžius, nuotraukas, pranešimus ir mokėjimo informaciją."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Leisti „<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>“ įrašyti arba perduoti ekrano turinį?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Įrašant ar perduodant turinį „<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>“ gali fiksuoti bet kokią neskelbtiną informaciją, pvz., leidžiamą garso įrašą ir slaptažodžius, mokėjimo informaciją, nuotraukas ir pranešimus."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Neskelbtinos informacijos atskleidimas perduodant / įrašant"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Daugiau neberodyti"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Viską išvalyti"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Tvarkyti"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Garso nustatymai"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Išskleisti"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sutraukti"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Taikyti aut. medij. subtitr."</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Subtitrų patarimas"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Perjungti išvesties įrenginį"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekranas prisegtas"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Tai bus rodoma, kol atsegsite. Palieskite ir palaikykite „Atgal“ ir „Apžvalga“, kad atsegtumėte."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Šie pranešimai įspės jus"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Paprastai šių pranešimų atsisakote. \nToliau juos rodyti?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Atlikta"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Taikyti"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Toliau rodyti šiuos pranešimus?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Sustabdyti pranešimus"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Pateikti tyliai"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokuoti"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Toliau rodyti"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Sumažinti"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Rodyti tyliai"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Švelnūs"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Neskambėti"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Įspėti mane"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Trikdantys"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Toliau įspėti"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Išjungti pranešimus"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Toliau rodyti iš šios programos gautus pranešimus?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Užblokuoti pranešimai niekur nerodomi ir neleidžiamas garsas. Panaikinti pranešimų blokavimą galite nustatymuose."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Tylūs pranešimai rodomi skydelyje, bet nerodomi užrakinimo ekrane, pateikiant reklamjuostę ar leidžiant garsą."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Šie pranešimai skambės ir bus rodomi pranešimų skydelyje, būsenos juostoje ir užrakinimo ekrane"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Šių pranešimų negalima išjungti"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Šios grupės pranešimai čia nekonfigūruojami"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"naudojant „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ši programa naudoja fotoaparatą."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ši programa naudoja mikrofoną."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendorius"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Rodyti su garsumo valdikliais"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Netrukdymo režimas"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Netrukdymo režimas"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Garsumo mygtukų spartusis klavišas"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Išjungti netrukdymo režimą didinant garsumą"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Išjungti netrukdymo režimą didinant garsumą"</string>
<string name="battery" msgid="7498329822413202973">"Akumuliatorius"</string>
<string name="clock" msgid="7416090374234785905">"Laikrodis"</string>
<string name="headset" msgid="4534219457597457353">"Ausinės"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Eiti į naršyklę"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilieji duomenys"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g>–<xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"„<xliff:g id="CARRIER_NAME">%1$s</xliff:g>“, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"„Wi-Fi“ išjungtas"</string>
<string name="bt_is_off" msgid="2640685272289706392">"„Bluetooth“ išjungtas"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Netrukdymo režimas išjungtas"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Nustatymai"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Supratau"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Pat. „SysUI“ krūvą"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> programa</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> programos</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> programos</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> programų</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Programa „<xliff:g id="APP">%1$s</xliff:g>“ naudoja: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Programos naudoja: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Naudojama:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> programa naudoja jūsų <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> programos naudoja jūsų <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="many"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> programos naudoja jūsų <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> programų naudoja jūsų <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Supratau"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privatumo nustatymai"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Programa, kuri naudoja: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Programos, kurios naudoja: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ir "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"fotoaparatą"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"vietovę"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofoną"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">Dar <xliff:g id="NUM_APPS_1">%d</xliff:g> programa</item>
- <item quantity="few">Dar <xliff:g id="NUM_APPS_1">%d</xliff:g> programos</item>
- <item quantity="many">Dar <xliff:g id="NUM_APPS_1">%d</xliff:g> programos</item>
- <item quantity="other">Dar <xliff:g id="NUM_APPS_1">%d</xliff:g> programų</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Jutikliai išjungti"</string>
<string name="device_services" msgid="1191212554435440592">"Įrenginio paslaugos"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nėra pavadinimo"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Palieskite, kad paleistumėte iš naujo šią programą arba įjungtumėte viso ekrano režimą."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Atidaryti „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Atidaryti „<xliff:g id="APP_NAME">%1$s</xliff:g>“ pranešimų nustatymus"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Leisti debesėlius iš šios programos?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokuoti"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ debesėlių nustatymai"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Leisti programos „<xliff:g id="APP_NAME">%1$s</xliff:g>“ debesėlius?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Atmesti"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Leisti"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Paklausti vėliau"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ iš „<xliff:g id="APP_NAME">%2$s</xliff:g>“"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"„<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>“ iš „<xliff:g id="APP_NAME">%2$s</xliff:g>“ ir dar <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Perkelti"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Perkelti į viršų kairėje"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Perkelti į viršų dešinėje"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Perkelti į apačią kairėje"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Perkelti į apačią dešinėje"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 3a00dd69782c..1b6db067fcba 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Izmantojiet ierīces komplektācijā iekļauto uzlādes ierīci"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Iestatījumi"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Vai ieslēgt akumulatora jaudas taupīšanas režīmu?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Par akumulatora jaudas taupīšanas režīmu"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ieslēgt"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Ieslēgt akumulatora jaudas taupīšanas režīmu"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Iestatījumi"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Lietotājs, kurš pašlaik ir pierakstījies šajā ierīcē, nevar iespējot USB atkļūdošanu. Lai izmantotu šo funkciju, pārslēdzieties uz galveno lietotāju."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB pieslēgvieta atspējota"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Lai aizsargātu ierīci no šķidruma un gružiem, USB pieslēgvieta ir atspējota un tajā nevarēs noteikt pieslēgtus piederumus.\n\nKad USB pieslēgvietas izmantošana būs atkal droša, saņemsiet paziņojumu."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB portam ir iespējota uzlādes ierīču un piederumu noteikšana"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Iespējot USB portu"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Tālumm., lai aizp. ekr."</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Stiepiet, lai aizp. ekr."</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Ekrānuzņēmums"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Atbloķēt, neizmantojot pirksta nospiedumu"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Sejas skenēšana"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Sūtīt"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Pārvaldīt paziņojumus"</string>
<string name="unlock_label" msgid="8779712358041029439">"atbloķēt"</string>
<string name="phone_label" msgid="2320074140205331708">"atvērt tālruni"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"atvērt balss palīgu"</string>
<string name="camera_label" msgid="7261107956054836961">"atvērt kameru"</string>
<string name="cancel" msgid="6442560571259935130">"Atcelt"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Palīdzības ziņojuma apgabals"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Apstiprināt"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Mēģināt vēlreiz"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Pieskarieties pirksta nospieduma sensoram"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobilie dati"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobilie dati ieslēgti"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobilie dati izslēgti"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nav iestatīts datu lietošanai"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Izslēgti"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth piesaiste."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Lidmašīnas režīms."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Lidojuma režīms ir ieslēgts."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"pilnīgs klusums"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"tikai signāli"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Netraucēt."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Statuss Netraucēt tika izslēgts."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Statuss Netraucēt tika ieslēgts."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Režīms “Netraucēt”."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Statuss Netraucēt tika izslēgts."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Režīms “Netraucēt” tika ieslēgts."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth savienojums ir izslēgts."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth savienojums ir ieslēgts."</string>
@@ -269,12 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktīvi atrašanās vietu pieprasījumi"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Notīrīt visus paziņojumus"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"vēl <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> + <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="zero">Vēl <xliff:g id="NUMBER_1">%s</xliff:g> paziņojumi grupā.</item>
<item quantity="one">Vēl <xliff:g id="NUMBER_1">%s</xliff:g> paziņojums grupā.</item>
<item quantity="other">Vēl <xliff:g id="NUMBER_1">%s</xliff:g> paziņojumi grupā.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Paziņojumu iestatījumi"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> iestatījumi"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekrāns tiks pagriezts automātiski."</string>
@@ -287,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ekrānsaudzētājs"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Tīkls Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Lai skatītu papildiespējas, pieskarieties ikonām un turiet tās."</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Netraucēt"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Režīms “Netraucēt”"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Tikai prioritārie"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Tikai signāli"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Pilnīgs klusums"</string>
@@ -440,8 +444,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Akumulatora jaudas taupīšanas režīms ir ieslēgts"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Samazina veiktspēju un fona datus"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Izslēgt akumulatora jaudas taupīšanas režīmu"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> sāks uzņemt visu, kas ir redzams jūsu ekrānā, tostarp paziņojumus, paroles, fotoattēlus, ziņojumus un maksājumu informāciju."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Vai atļaut <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ierakstīt vai apraidīt jūsu ekrāna saturu?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Ierakstīšanas un apraides laikā <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> var tvert jebkādu sensitīvu informāciju, piemēram, jūsu atskaņoto audio, paroles, maksājumu informāciju, fotoattēlus un ziņojumus."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Sensitīvas informācijas atklāšana apraides/ierakstīšanas laikā"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Vairs nerādīt"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Dzēst visu"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Pārvaldīt"</string>
@@ -516,6 +520,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Skaņas iestatījumi"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Izvērst"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sakļaut"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Autom. paraksti multividei"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Padoms par slēgtajiem parakstiem"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Pārslēgt izvades ierīci"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekrāns ir piesprausts"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Šādi tas būs redzams līdz brīdim, kad to atspraudīsiet. Lai atspraustu, pieskarieties pogām Atpakaļ un Pārskats un turiet tās."</string>
@@ -616,18 +622,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Šie paziņojumi tiks rādīti, lai jūs brīdinātu"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Parasti jūs noraidāt šādus paziņojumus. \nVai turpināt tos rādīt?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gatavs"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Lietot"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Vai turpināt rādīt šos paziņojumus?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Apturēt paziņojumu rādīšanu"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Piegādāt bez skaņas signāla"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloķēt"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Turpināt rādīt"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizēt"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Rādīt bez skaņas signāla"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Neuzkrītoši brīdinājumi"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Neslēgt skaļumu"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Brīdināt mani"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Uznirstoši brīdinājumi"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Turpināt paziņošanu"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Izslēgt paziņojumus"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vai turpināt rādīt paziņojumus no šīs lietotnes?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Bloķēti paziņojumi netiek nekur rādīti, un netiek atskaņota skaņa. Iestatījumu sadaļā varat atbloķēt paziņojumus."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Klusie paziņojumi tiek rādīti panelī, taču netiek rādīti bloķēšanas ekrānā, turklāt netiek rādīts reklāmkarogs vai atskaņota skaņa."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Šiem paziņojumiem tiks atskaņots signāls, un tie būs redzami paziņojumu atvilktnē, statusa joslā un bloķēšanas ekrānā."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Šos paziņojumus nevar izslēgt."</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Šeit nevar konfigurēt šo paziņojumu grupu."</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"lietotnē <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Šajā lietotnē tiek izmantota kamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Šajā lietotnē tiek izmantots mikrofons."</string>
@@ -708,9 +720,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendārs"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Rādīt ar skaļuma vadīklām"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Netraucēt"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Režīms “Netraucēt”"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Skaļuma pogu saīsne"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Izslēgt režīmu “Netraucēt”, palielinot skaļumu"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Palielinot skaļumu, izslēgt režīmu “Netraucēt”"</string>
<string name="battery" msgid="7498329822413202973">"Akumulators"</string>
<string name="clock" msgid="7416090374234785905">"Pulkstenis"</string>
<string name="headset" msgid="4534219457597457353">"Austiņas"</string>
@@ -851,6 +863,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Atvērt pārlūku"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilie dati"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ir izslēgts"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth ir izslēgts"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Režīms “Netraucēt” ir izslēgts"</string>
@@ -880,39 +893,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Iestatījumi"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Labi"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="zero"><xliff:g id="NUM_APPS_2">%d</xliff:g> lietotņu</item>
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> lietotne</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> lietotnes</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Lietotne <xliff:g id="APP">%1$s</xliff:g> izmanto funkcijas <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Lietojumprogrammas izmanto šādas funkcijas: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Lietošanā:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="zero"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> lietojumprogrammās tiek izmantots: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> lietojumprogrammā tiek izmantots: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> lietojumprogrammās tiek izmantots: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Labi"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Konfidencialitāte"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Lietotne, kurā tiek izmantots: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Lietotnes, kurās tiek izmantots: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" un "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"atrašanās vieta"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofons"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="zero">Vēl <xliff:g id="NUM_APPS_1">%d</xliff:g> lietotņu</item>
- <item quantity="one">Vēl <xliff:g id="NUM_APPS_1">%d</xliff:g> lietotne</item>
- <item quantity="other">Vēl <xliff:g id="NUM_APPS_1">%d</xliff:g> lietotnes</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensori izslēgti"</string>
<string name="device_services" msgid="1191212554435440592">"Ierīces pakalpojumi"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nav nosaukuma"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Pieskarieties, lai restartētu šo lietotni un pārietu pilnekrāna režīmā."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Atvērt lietotni <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Atvērt paziņojumu iestatījumus lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Vai atļaut burbuļus no šīs lietotnes?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloķēt"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> burbuļu iestatījumi"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Vai atļaut burbuļus no lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Neatļaut"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Atļaut"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Pajautāt vēlāk"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> no: <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> no lietotnes “<xliff:g id="APP_NAME">%2$s</xliff:g>” un vēl <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Pārvietot"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Pārvietot augšpusē pa kreisi"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Pārvietot augšpusē pa labi"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Pārvietot apakšpusē pa kreisi"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Pārvietot apakšpusē pa labi"</string>
</resources>
diff --git a/packages/SystemUI/res/values-mcc310-mnc030/config.xml b/packages/SystemUI/res/values-mcc310-mnc030/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc030/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc070/config.xml b/packages/SystemUI/res/values-mcc310-mnc070/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc070/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc170/config.xml b/packages/SystemUI/res/values-mcc310-mnc170/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc170/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc280/config.xml b/packages/SystemUI/res/values-mcc310-mnc280/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc280/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc380/config.xml b/packages/SystemUI/res/values-mcc310-mnc380/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc380/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc410/config.xml b/packages/SystemUI/res/values-mcc310-mnc410/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc410/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc560/config.xml b/packages/SystemUI/res/values-mcc310-mnc560/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc560/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc310-mnc950/config.xml b/packages/SystemUI/res/values-mcc310-mnc950/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc310-mnc950/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mcc311-mnc180/config.xml b/packages/SystemUI/res/values-mcc311-mnc180/config.xml
new file mode 100644
index 000000000000..26b9192e0cc3
--- /dev/null
+++ b/packages/SystemUI/res/values-mcc311-mnc180/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources>
+ <!-- Enable 5 bar signal strength icon -->
+ <bool name="config_inflateSignalStrength">true</bool>
+</resources>
+
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index eff3492d469d..6ac95b9a5e4c 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Користете го полначот што дојде со вашиот уред"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Поставки"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Да се вклучи штедачот на батерија?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"За „Штедачот на батерија“"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Вклучи"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Да се вклучи штедачот на батерија?"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Поставки"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Корисникот што моментално е најавен на уредов не може да вклучи отстранување грешки на USB. За да ја користите функцијава, префрлете се на примарниот корисник."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-портата е оневозможена"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"За да го заштити уредот од течност и нечистотија, USB-портата е оневозможена и нема да открива додатоци.\n\nЌе ве известиме кога ќе биде безбедно да ја користите USB-портата повторно."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-портата е овозможена за откривање полначи и додатоци"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Овозможи USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Зумирај да се исполни екранот"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Растегни да се исполни екранот"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Слика од екранот"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Отклучете без да го користите вашиот отпечаток"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Скенирање лице"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Испрати"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Управувајте со известувањата"</string>
<string name="unlock_label" msgid="8779712358041029439">"отклучи"</string>
<string name="phone_label" msgid="2320074140205331708">"отвори телефон"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"отвори гласовна помош"</string>
<string name="camera_label" msgid="7261107956054836961">"отвори камера"</string>
<string name="cancel" msgid="6442560571259935130">"Откажи"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Област за пораки за помош"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Потврди"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Обиди се повторно"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Допрете го сензорот за отпечатоци"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобилен интернет"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобилниот интернет е вклучен"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобилниот интернет е исклучен"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Не е поставен да користи интернет"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Исклучи"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Се поврзува со Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим на работа во авион."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Авионскиот режим е вклучен."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"целосна тишина"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"само аларми"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не вознемирувај."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"„Не вознемирувај“ е исклучено."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"„Не вознемирувај“ е вклучено."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Не вознемирувај."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"„Не вознемирувај“ е исклучено."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"„Не вознемирувај“ е вклучено."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth е исклучен."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth е вклучен."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Активни барања за локација"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Исчисти ги сите известувања."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, + <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Уште <xliff:g id="NUMBER_1">%s</xliff:g> известување внатре.</item>
<item quantity="other">Уште <xliff:g id="NUMBER_1">%s</xliff:g> известувања внатре.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Поставки на известувања"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Поставки на <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екранот ќе ротира автоматски."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Заштитник на екран"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Етернет"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Допрете ги и задржете ги иконите за повеќе опции"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Не вознемирувај"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Не вознемирувај"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Само приоритетно"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Само аларми"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Целосна тишина"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Штедачот на батерија е вклучен"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Ја намалува изведбата и податоците во заднина"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Исклучете го штедачот на батерија"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ќе започне со снимање на сѐ што се наоѓа на екранот, вклучувајќи известувања, лозинки, фотографии, пораки и информации за плаќање."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Да ѝ се дозволи на <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> да снима или емитува на вашиот екран?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"При снимањето или емитувањето, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> може да ги сними сите чувствителни информации, како на пример, аудиото што ви е пуштено или лозинките, информациите за плаќање, фотографиите и пораките."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Изложување чувствителни информации при емитување/снимање"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Не покажувај повторно"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Исчисти сè"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Управувајте"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Поставки за звукот"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Прошири"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Собери"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматски титлови"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Совет за затворени титлови"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Префрлете го излезниот уред"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Екранот е прикачен"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ќе се гледа сѐ додека не го откачите. Допрете и држете „Назад“ и „Краток преглед“ за откачување."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Овие известувања ќе ве предупредуваат"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Обично ги отфрлате известувањава. \nДа продолжат да се прикажуваат?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Готово"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Примени"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Дали да продолжат да се прикажуваат известувањава?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Запри ги известувањата"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Испорачувај тивко"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Блокирај"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Продолжи да ги прикажуваш"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Минимизирај"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Прикажи тивко"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Нежно"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Продолжи со безгласно прикажување"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Предупреди ме"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Прекинувачки"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Продолжи да ме предупредуваш"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Исклучи известувања"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Дали да продолжат да се прикажуваат известувања од апликацијава?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Блокираните известувања не се појавуваат никаде и не пуштаат звук. Може да ги деблокирате известувањата во поставките."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Стишените известувања се појавуваат во сенка, но не се појавуваат на заклучен екран, во вид на рекламен натпис и не пуштаат звук."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Овие известувања ќе дадат звук и ќе се прикажат во фиоката за известување, статусната лента и заклучениот екран"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Известувањава не може да се исклучат"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Оваа група известувања не може да се конфигурира тука"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"преку <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Апликацијава ја користи камерата."</string>
<string name="appops_microphone" msgid="741508267659494555">"Апликацијава го користи микрофонот."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Календар"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Прикажи со контроли за јачина на звук"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Не вознемирувај"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Не вознемирувај"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Кратенка за копчињата за јачина на звук"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Излези од „Не вознемирувај“ при зголемена јачина на звукот"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Излези од „Не вознемирувај“ при зголемување на звукот"</string>
<string name="battery" msgid="7498329822413202973">"Батерија"</string>
<string name="clock" msgid="7416090374234785905">"Часовник"</string>
<string name="headset" msgid="4534219457597457353">"Слушалки"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Одете на прелистувач"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобилен интернет"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi е исклучено"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth е исклучен"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"„Не вознемирувај“ е исклучено"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Поставки"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Сфатив"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Извади SysUI-слика"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> апликација</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> апликации</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> користи <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Апликациите користат <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Се користи:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="TYPE_5">%2$s</xliff:g> се користи од <xliff:g id="NUM_APPS_4">%1$d</xliff:g> апликација.</item>
- <item quantity="other"><xliff:g id="TYPE_5">%2$s</xliff:g> се користи од <xliff:g id="NUM_APPS_4">%1$d</xliff:g> апликации.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Сфатив"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Поставки за приватн."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Апликации што ја користат вашата <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Апликации што ја користат вашата <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" и "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камера"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"локација"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"микрофон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> друга апликација</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> други апликации</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Сензорите се исклучени"</string>
<string name="device_services" msgid="1191212554435440592">"Услуги за уредот"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без наслов"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Допрете за да ја рестартирате апликацијава и да ја отворите на цел екран."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Отворете ја <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Отворете ги поставките за известувања за <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Да се дозволат балончиња од апликацијава?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Блокирај"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Поставки за баланчињата на <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Да се дозволат балончиња од <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Одбиј"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Дозволи"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Прашај ме подоцна"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> од <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> од <xliff:g id="APP_NAME">%2$s</xliff:g> и уште <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Премести"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Премести горе лево"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Премести горе десно"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Премести долу лево"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Премести долу десно"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index c640426163b1..1f71904c32c2 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ഉപകരണത്തിനൊപ്പം ലഭിച്ച ചാർജർ ഉപയോഗിക്കുക"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ക്രമീകരണം"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ബാറ്ററി ലാഭിക്കൽ ഓണാക്കണോ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ബാറ്ററി ലാഭിക്കലിനെ കുറിച്ച്"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ഓൺ ചെയ്യുക"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ബാറ്ററി ലാഭിക്കൽ ഓണാക്കുക"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ക്രമീകരണം"</string>
@@ -62,6 +63,10 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ഉപകരണത്തിൽ ഇപ്പോൾ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്ന ഉപയോക്താവിന് USB ഡീബഗ്ഗിംഗ് ഓണാക്കാനാകില്ല. ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ പ്രാഥമിക ഉപയോക്താവിലേക്ക് മാറുക."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB പോർട്ട് പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ദ്രാവകത്തിൽ നിന്നോ പൊടിയിൽ നിന്നോ നിങ്ങളുടെ ഉപകരണത്തെ പരിരക്ഷിക്കാനായി USB പോർട്ട് പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നതിനാൽ അത് ആക്‌സസറികളൊന്നും തിരിച്ചറിയില്ല.\n\n USB പോർട്ട് സുരക്ഷിതമായി വീണ്ടും ഉപയോഗിക്കാനാകുമ്പോൾ നിങ്ങളെ അറിയിക്കും."</string>
+ <!-- no translation found for usb_port_enabled (7906141351687694867) -->
+ <skip />
+ <!-- no translation found for usb_disable_contaminant_detection (2103905315747120033) -->
+ <skip />
<string name="compat_mode_on" msgid="6623839244840638213">"സ്‌ക്രീനിൽ ഉൾക്കൊള്ളിക്കാൻ സൂം ചെയ്യുക"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"സ്‌ക്രീനിൽ ഉൾക്കൊള്ളിക്കാൻ വലിച്ചുനീട്ടുക"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"സ്‌ക്രീൻഷോട്ട്"</string>
@@ -108,12 +113,13 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"നിങ്ങളുടെ ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കാതെ അൺലോക്കുചെയ്യുക"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"മുഖം സ്കാൻ ചെയ്യുന്നു"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"അയയ്ക്കുക"</string>
+ <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
+ <skip />
<string name="unlock_label" msgid="8779712358041029439">"അൺലോക്കുചെയ്യുക"</string>
<string name="phone_label" msgid="2320074140205331708">"ഫോൺ തുറക്കുക"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"വോയ്‌സ് അസിസ്റ്റ് തുറക്കുക"</string>
<string name="camera_label" msgid="7261107956054836961">"ക്യാമറ തുറക്കുക"</string>
<string name="cancel" msgid="6442560571259935130">"റദ്ദാക്കുക"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"സഹായ സന്ദേശ ഏരിയ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"സ്ഥിരീകരിക്കുക"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"വീണ്ടും ശ്രമിക്കുക"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"വിരലടയാള സെൻസർ സ്‌പർശിക്കുക"</string>
@@ -179,6 +185,8 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"മൊബൈൽ ഡാറ്റ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"മൊബൈൽ ഡാറ്റ ഓണാണ്"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"മൊബൈൽ ഡാറ്റ ഓഫാണ്"</string>
+ <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
+ <skip />
<string name="cell_data_off" msgid="1051264981229902873">"ഓഫ്"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ബ്ലൂടൂത്ത് ടെതറിംഗ്."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ഫ്ലൈറ്റ് മോഡ്."</string>
@@ -220,9 +228,12 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ഫ്ലൈറ്റ് മോഡ് ഓണാക്കി."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"പൂർണ്ണ നിശബ്‌ദത"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"അലാറങ്ങൾ മാത്രം"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ശല്യപ്പെടുത്തരുത്."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ശല്യപ്പെടുത്തരുത് എന്നത് ഓഫാക്കി."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ശല്യപ്പെടുത്തരുത് എന്നത് ഓണാക്കി."</string>
+ <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
+ <skip />
+ <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
+ <skip />
+ <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
+ <skip />
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ബ്ലൂടൂത്ത് ഓഫാണ്."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ബ്ലൂടൂത്ത് ഓണാണ്."</string>
@@ -257,7 +268,7 @@
<string name="accessibility_quick_settings_sensor_privacy_changed_off" msgid="5152819588955163090">"സെൻസർ സ്വകാര്യത ഓഫാക്കി."</string>
<string name="accessibility_quick_settings_sensor_privacy_changed_on" msgid="529705259565826355">"സെൻസർ സ്വകാര്യത ഓഫാണ്."</string>
<string name="accessibility_brightness" msgid="8003681285547803095">"ഡിസ്പ്ലേ തെളിച്ചം"</string>
- <string name="accessibility_ambient_display_charging" msgid="9084521679384069087">"ചാർജ്ജുചെയ്യുന്നു"</string>
+ <string name="accessibility_ambient_display_charging" msgid="9084521679384069087">"ചാർജ് ചെയ്യുന്നു"</string>
<string name="data_usage_disabled_dialog_3g_title" msgid="5281770593459841889">"2G-3G ഡാറ്റ താൽക്കാലികമായി നിർത്തി"</string>
<string name="data_usage_disabled_dialog_4g_title" msgid="1601769736881078016">"4G ഡാറ്റ താൽക്കാലികമായി നിർത്തി"</string>
<string name="data_usage_disabled_dialog_mobile_title" msgid="6801382439018099779">"മൊബൈൽ ഡാറ്റ തല്‍ക്കാലം നിര്‍ത്തിയിരിക്കുന്നു"</string>
@@ -269,11 +280,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ലൊക്കേഷൻ അഭ്യർത്ഥനകൾ സജീവമാണ്"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"എല്ലാ വിവരങ്ങളും മായ്‌ക്കുക."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">ഉള്ളിൽ <xliff:g id="NUMBER_1">%s</xliff:g> അറിയിപ്പുകൾ കൂടിയുണ്ട്.</item>
<item quantity="one">ഉള്ളിൽ <xliff:g id="NUMBER_0">%s</xliff:g> അറിയിപ്പ് കൂടിയുണ്ട്.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"അറിയിപ്പ് ക്രമീകരണങ്ങൾ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ക്രമീകരണം"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"സ്‌ക്രീൻ സ്വയമേവ തിരിയും."</string>
@@ -286,7 +298,8 @@
<string name="start_dreams" msgid="5640361424498338327">"സ്ക്രീൻ സേവർ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ഇതർനെറ്റ്"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"കൂടുതൽ ഓപ്ഷനുകൾക്കായി ഐക്കണുകൾ സ്‌പർശിച്ച് പിടിക്കുക"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"ശല്ല്യപ്പെടുത്തരുത്"</string>
+ <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
+ <skip />
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"മുൻഗണന മാത്രം"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"അലാറങ്ങൾ മാത്രം"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"പൂർണ്ണ നിശബ്‌ദത"</string>
@@ -351,7 +364,7 @@
<string name="quick_settings_notifications_label" msgid="4818156442169154523">"അറിയിപ്പുകൾ"</string>
<string name="quick_settings_flashlight_label" msgid="2133093497691661546">"ടോർച്ച്"</string>
<string name="quick_settings_cellular_detail_title" msgid="3661194685666477347">"മൊബൈൽ ഡാറ്റ"</string>
- <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"ഡാറ്റ ഉപയോഗം"</string>
+ <string name="quick_settings_cellular_detail_data_usage" msgid="1964260360259312002">"ഡാറ്റാ ഉപയോഗം"</string>
<string name="quick_settings_cellular_detail_remaining_data" msgid="722715415543541249">"ശേഷിക്കുന്ന ഡാറ്റ"</string>
<string name="quick_settings_cellular_detail_over_limit" msgid="967669665390990427">"പരിധി കഴിഞ്ഞു"</string>
<string name="quick_settings_cellular_detail_data_used" msgid="1476810587475761478">"<xliff:g id="DATA_USED">%s</xliff:g> ഉപയോഗിച്ചു"</string>
@@ -370,7 +383,7 @@
<string name="recents_quick_scrub_onboarding" msgid="2778062804333285789">"ആപ്പുകൾ പെട്ടെന്ന് മാറാൻ വലത്തോട്ട് വലിച്ചിടുക"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7171470775439860480">"അവലോകനം മാറ്റുക"</string>
<string name="expanded_header_battery_charged" msgid="5945855970267657951">"ചാർജായി"</string>
- <string name="expanded_header_battery_charging" msgid="205623198487189724">"ചാർജ്ജുചെയ്യുന്നു"</string>
+ <string name="expanded_header_battery_charging" msgid="205623198487189724">"ചാർജ് ചെയ്യുന്നു"</string>
<string name="expanded_header_battery_charging_with_time" msgid="457559884275395376">"ഫുൾ ചാർജാകാൻ, <xliff:g id="CHARGING_TIME">%s</xliff:g>"</string>
<string name="expanded_header_battery_not_charging" msgid="4798147152367049732">"ചാർജ്ജുചെയ്യുന്നില്ല"</string>
<string name="ssl_ca_cert_warning" msgid="9005954106902053641">"നെറ്റ്‌വർക്ക്\nനിരീക്ഷിക്കപ്പെടാം"</string>
@@ -437,8 +450,10 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ബാറ്ററി ലാഭിക്കൽ ഓണാണ്"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"പ്രവർത്തനവും പശ്ചാത്തല ഡാറ്റയും കുറയ്‌ക്കുന്നു"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ബാറ്ററി ലാഭിക്കൽ ഓഫാക്കുക"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"അറിയിപ്പുകൾ, പാസ്‌വേഡുകൾ, ഫോട്ടോകൾ, സന്ദേശങ്ങൾ, പേയ്മെന്റ് വിവരങ്ങൾ എന്നിവയുൾപ്പെടെ നിങ്ങളുടെ സ്‌ക്രീനിലെ എന്തുകാര്യവും <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ക്യാപ്‌ചർ ചെയ്‌ത്‌ തുടങ്ങും."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"നിങ്ങളുടെ സ്ക്രീൻ റെക്കോർഡ് ചെയ്യാനോ കാസ്റ്റ് ചെയ്യാനോ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-നെ അനുവദിക്കണോ?"</string>
+ <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
+ <skip />
+ <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
+ <skip />
<string name="media_projection_remember_text" msgid="3103510882172746752">"വീണ്ടും കാണിക്കരുത്"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"എല്ലാം മായ്‌ക്കുക"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"മാനേജ് ചെയ്യുക"</string>
@@ -513,6 +528,10 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ശബ്‌ദ ക്രമീകരണം"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"വികസിപ്പിക്കുക"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ചുരുക്കുക"</string>
+ <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
+ <skip />
+ <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
+ <skip />
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ഔട്ട്‌പുട്ട് ഉപകരണം മാറുക"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"സ്‌ക്രീൻ പിൻ ചെയ്‌തു"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"നിങ്ങൾ അൺപിൻ ചെയ്യുന്നതുവരെ ഇത് കാണുന്ന വിധത്തിൽ നിലനിർത്തും. അൺപിൻ ചെയ്യാൻ \'തിരികെ\', \'ചുരുക്കവിവരണം\' എന്നിവ സ്‌പർശിച്ച് പിടിക്കുക."</string>
@@ -613,18 +632,32 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ഈ അറിയിപ്പുകൾ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകും"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"സാധാരണയായി നിങ്ങൾ ഈ അറിയിപ്പുകൾ നിരാകരിക്കുന്നു. \nഅവ തുടർന്നും കാണിക്കണോ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"പൂർത്തിയായി"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"ഈ അറിയിപ്പുകൾ തുടർന്നും കാണിക്കണോ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"അറിയിപ്പുകൾ നിർത്തുക"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"നിശബ്‌ദമായി ഡെലിവർ ചെയ്യുക"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ബ്ലോക്ക് ചെയ്യുക"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"തുടർന്നും കാണിക്കുക"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ചെറുതാക്കുക‍"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"നിശബ്‌ദമായി കാണിക്കുക"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"നിശബ്‌ദമായ നിലയിൽ തുടരുക"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"എനിക്ക് അലേർട്ട് നൽകുക"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"മുന്നറിയിപ്പ് നൽകുന്നത് തുടരുക"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ഈ ആപ്പിൽ നിന്നുള്ള അറിയിപ്പുകൾ തുടർന്നും കാണിക്കണോ?"</string>
+ <!-- no translation found for hint_text_block (3554459167504485284) -->
+ <skip />
+ <!-- no translation found for hint_text_silent (859468056340177016) -->
+ <skip />
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ഈ അറിയിപ്പുകൾ ഓഫാക്കാനാവില്ല"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> വഴി"</string>
<string name="appops_camera" msgid="8100147441602585776">"ഈ ആപ്പ് ക്യാമറ ഉപയോഗിക്കുന്നുണ്ട്."</string>
<string name="appops_microphone" msgid="741508267659494555">"ഈ ആപ്പ് മൈക്രോഫോൺ ഉപയോഗിക്കുന്നു."</string>
@@ -692,7 +725,7 @@
<string name="keyboard_shortcut_group_system_back" msgid="2207004531216446378">"മടങ്ങുക"</string>
<string name="keyboard_shortcut_group_system_notifications" msgid="8366964080041773224">"അറിയിപ്പുകൾ"</string>
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4892255911160332762">"കീബോഡ് കുറുക്കുവഴികൾ"</string>
- <string name="keyboard_shortcut_group_system_switch_input" msgid="8413348767825486492">"കീബോർഡ് ലേഔട്ട് സ്വിച്ച് ചെയ്യുക"</string>
+ <string name="keyboard_shortcut_group_system_switch_input" msgid="8413348767825486492">"കീബോർഡ് ലേഔട്ട് മാറുക"</string>
<string name="keyboard_shortcut_group_applications" msgid="9129465955073449206">"അപ്ലിക്കേഷനുകൾ"</string>
<string name="keyboard_shortcut_group_applications_assist" msgid="9095441910537146013">"അസിസ്റ്റ്"</string>
<string name="keyboard_shortcut_group_applications_browser" msgid="6465985474000766533">"ബ്രൗസർ"</string>
@@ -703,9 +736,11 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"കലണ്ടർ"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"വോളിയം നിയന്ത്രണങ്ങളോടൊപ്പം കാണിക്കുക"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ശല്യപ്പെടുത്തരുത്"</string>
+ <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
+ <skip />
<string name="volume_dnd_silent" msgid="4363882330723050727">"വോളിയം ബട്ടൺ കുറുക്കുവഴി"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"വോളിയം ഉയരുമ്പോൾ \'ശല്യപ്പെടുത്തരുത്\' നിർത്തുക"</string>
+ <!-- no translation found for volume_up_silent (7545869833038212815) -->
+ <skip />
<string name="battery" msgid="7498329822413202973">"ബാറ്ററി"</string>
<string name="clock" msgid="7416090374234785905">"ക്ലോക്ക്"</string>
<string name="headset" msgid="4534219457597457353">"ഹെഡ്‌സെറ്റ്"</string>
@@ -846,6 +881,8 @@
<string name="go_to_web" msgid="2650669128861626071">"ബ്രൗസറിലേക്ക് പോവുക"</string>
<string name="mobile_data" msgid="7094582042819250762">"മൊബൈൽ ഡാറ്റ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <!-- no translation found for mobile_carrier_text_format (3241721038678469804) -->
+ <skip />
<string name="wifi_is_off" msgid="1838559392210456893">"വൈഫൈ ഓഫാണ്"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth ഓഫാണ്"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\'ശല്യപ്പെടുത്തരുത്\' ഓഫാണ്"</string>
@@ -875,36 +912,40 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ക്രമീകരണം"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"മനസ്സിലായി"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI ഹീപ്പ് ഡമ്പ് ചെയ്യുക"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ആപ്പുകൾ</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ആപ്പ്</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> നിങ്ങളുടെ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ഉപയോഗിക്കുന്നു."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ആപ്പുകൾ നിങ്ങളുടെ <xliff:g id="TYPES_LIST">%s</xliff:g> ഉപയോഗിക്കുന്നു."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ഉപയോഗത്തിൽ:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ആപ്പുകൾ നിങ്ങളുടെ <xliff:g id="TYPE_5">%2$s</xliff:g> ഉപയോഗിക്കുന്നു.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ആപ്പ് നിങ്ങളുടെ <xliff:g id="TYPE_1">%2$s</xliff:g> ഉപയോഗിക്കുന്നു.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"മനസ്സിലായി"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"സ്വകാര്യതാ ക്രമീകരണം"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"നിങ്ങളുടെ <xliff:g id="TYPES_LIST">%s</xliff:g> ഉപയോഗിക്കുന്ന ആപ്പ്"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"നിങ്ങളുടെ <xliff:g id="TYPES_LIST">%s</xliff:g> ഉപയോഗിക്കുന്ന ആപ്പുകൾ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" കൂടാതെ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ക്യാമറ"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ലൊക്കേഷന്‍"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"മൈക്രോഫോൺ"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">മറ്റ് <xliff:g id="NUM_APPS_1">%d</xliff:g> ആപ്പുകൾ</item>
- <item quantity="one">മറ്റ് <xliff:g id="NUM_APPS_0">%d</xliff:g> ആപ്പ്</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"സെൻസറുകൾ ഓഫാണ്"</string>
<string name="device_services" msgid="1191212554435440592">"ഉപകരണ സേവനങ്ങള്‍"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"പേരില്ല"</string>
+ <!-- no translation found for restart_button_description (2035077840254950187) -->
+ <skip />
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> തുറക്കുക"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനുള്ള അറിയിപ്പ് ക്രമീകരണം തുറക്കുക"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"ഈ ആപ്പിൽ നിന്നുള്ള ബബ്ളുകൾ അനുവദിക്കണോ?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ബ്ലോക്ക് ചെയ്യുക"</string>
+ <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
+ <skip />
+ <!-- no translation found for bubbles_prompt (8807968030159469710) -->
+ <skip />
+ <!-- no translation found for no_bubbles (337101288173078247) -->
+ <skip />
<string name="yes_bubbles" msgid="668809525728633841">"അനുവദിക്കുക"</string>
+ <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
+ <skip />
+ <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
+ <skip />
+ <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index e73428e589f4..dcb5c2da29c7 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Төхөөрөмждөө дагалдаж ирсэн цэнэглэгчийг ашиглах"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Тохиргоо"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Тэжээл хэмнэгчийг асаах уу?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Батарей хэмнэгчийн тухай"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Асаах"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Тэжээл хэмнэгчийг асаах"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Тохиргоо"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Энэ төхөөрөмжид нэвтэрсэн хэрэглэгч USB дебаг хийх онцлогийг асаах боломжгүй байна. Энэ онцлогийг ашиглахын тулд үндсэн хэрэглэгч рүү сэлгэнэ үү."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB портыг идэвхгүй болгосон"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Таны төхөөрөмжийг шингэн зүйл эсвэл бохирдлоос хамгаалах зорилгоор USB портыг идэвхгүй болгосон бөгөөд ямар ч нэмэлт хэрэгслийг илрүүлэхгүй.\n\nТанд USB портыг дахин ашиглахад аюулгүй болох үед мэдэгдэх болно."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Цэнэглэгч болон нэмэлт хэрэгслийг илрүүлэхийн тулд USB портыг идэвхжүүлсэн"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB-г идэвхжүүлэх"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Дэлгэц дүүргэх бол өсгөнө үү"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Дэлгэц дүүргэх бол татна уу"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Дэлгэцийн зураг дарах"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Хурууны хээ ашиглалгүйгээр түгжээг тайлаарай"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Скан хийх нүүр царай"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Илгээх"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Мэдэгдлийг удирдах"</string>
<string name="unlock_label" msgid="8779712358041029439">"тайлах"</string>
<string name="phone_label" msgid="2320074140205331708">"утас нээх"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"дуут туслахыг нээнэ"</string>
<string name="camera_label" msgid="7261107956054836961">"камер нээх"</string>
<string name="cancel" msgid="6442560571259935130">"Цуцлах"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Тусламжийн зурвасын хэсэг"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Баталгаажуулах"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Дахин оролдох"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Хурууны хээ мэдрэгчид хүрэх"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобайл дата"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобайл дата асаалттай байна"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобайл дата унтраалттай байна"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Дата ашиглахаар тохируулаагүй"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Идэвхгүй"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth модем болж байна."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Нислэгийн горим"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Нислэгийн горимыг асаасан."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"бүх дууг хаах"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"зөвхөн сэрүүлэг"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Бүү саад бол."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Идэвхгүй болгох үйлдэлд бүү саад бол."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Идэвхжүүлэх үйлдэлд бүү саад бол."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Бүү саад бол."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Бүү саад бол горимыг унтраалаа."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Бүү саад бол горимыг асаалаа."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth идэвхгүй."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth идэвхтэй."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Байршлын хүсэлтүүд идэвхтэй"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Бүх мэдэгдлийг цэвэрлэх."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">дотор бусад <xliff:g id="NUMBER_1">%s</xliff:g> мэдэгдэл байна.</item>
<item quantity="one">дотор бусад <xliff:g id="NUMBER_0">%s</xliff:g> мэдэгдэл байна.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Мэдэгдлийн тохиргоо"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> тохиргоо"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Дэлгэц автоматаар эргэнэ."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Дэлгэц амраагч"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Этернет"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Бусад сонголтыг харахын тулд дүрс тэмдгийг удаан дарна уу"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Бүү саад бол"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Бүү саад бол"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Зөвхөн чухал зүйлс"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Зөвхөн сэрүүлэг"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Дуугүй болгох"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Тэжээл хэмнэгч асаалттай байна"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Ажиллагаа болон далд датаг бууруулна"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Тэжээл хэмнэгчийг унтраах"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> мэдэгдэл, нууц үг, зураг, мессеж болон төлбөрийн мэдээлэл зэрэг таны дэлгэц дээрх бүх зүйлийн зургийг авч эхэлнэ."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>-д таны дэлгэцийг бичих эсвэл дамжуулахыг зөвшөөрөх үү?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Бичиж эсвэл дамжуулж байгаа үед <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> таны тоглуулдаг аудио, нууц үг, төлбөрийн мэдээлэл, зураг болон мессеж зэрэг аливаа мэдрэг мэдээллийг авах боломжтой."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Дамжуулах/бичих үед мэдрэг мэдээллийг задруулж байна"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Дахиж үл харуулах"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Бүгдийг арилгах"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Удирдах"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Дууны тохиргоо"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Дэлгэх"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Хураах"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медиад автоматаар тайлбар нэмэх"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Хаалттай тайлбаруудын зөвлөгөө"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Гаралтын төхөөрөмжийг солих"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Дэлгэц эхэнд байрлуулагдсан"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Таныг тогтоосныг болиулах хүртэл үүнийг харуулна. Тогтоосныг болиулахын тулд Буцах, Тоймыг дараад хүлээнэ үү."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Эдгээр мэдэгдлийг танд мэдэгдэнэ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Та эдгээр мэдэгдлийг ихэвчлэн хаадаг. \nЭдгээрийг харуулсан хэвээр байх уу?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Болсон"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Хаах"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Эдгээр мэдэгдлийг харуулсан хэвээр байх уу?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Мэдэгдлийг зогсоох"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Дуугүй хүргэх"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Блоклох"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Харуулсан хэвээр байх"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Багасгах"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Дуугүй харуулах"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Чимээгүй харуулах"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Чимээгүй хэвээр харуулах"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Надад сануулах"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Дуу гаргах"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Үргэлжлүүлэн сануулах"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Мэдэгдлийг унтраах"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Энэ аппаас мэдэгдэл харуулсан хэвээр байх уу?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Хориглосон мэдэгдэл хаана ч харагдахгүй бөгөөд дуу тоглуулахгүй. Та мэдэгдлийг тохиргоонд хориглохоо больж болно."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Чимээгүй мэдэгдэл сүүдэрт харагддаг хэдий ч түгжигдсэн дэлгэцэд харагддаггүй бөгөөд баннер харуулж эсвэл дуу дуугаргадаггүй."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Эдгээр мэдэгдэл дуу гаргах бөгөөд мэдэгдлийн шургуулга, статус самбар болон түгжигдсэн дэлгэцэд харагдана"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Эдгээр мэдэгдлийг унтраах боломжгүй"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g>-р"</string>
<string name="appops_camera" msgid="8100147441602585776">"Энэ апп камерыг ашиглаж байна."</string>
<string name="appops_microphone" msgid="741508267659494555">"Энэ апп микрофоныг ашиглаж байна."</string>
@@ -656,7 +668,7 @@
<item quantity="other">%d минут</item>
<item quantity="one">%d минут</item>
</plurals>
- <string name="battery_panel_title" msgid="7944156115535366613">"Тэжээл ашиглалт"</string>
+ <string name="battery_panel_title" msgid="7944156115535366613">"Батарей ашиглалт"</string>
<string name="battery_detail_charging_summary" msgid="1279095653533044008">"Цэнэглэх үед тэжээл хэмнэгч ажиллахгүй"</string>
<string name="battery_detail_switch_title" msgid="6285872470260795421">"Батарей хэмнэгч"</string>
<string name="battery_detail_switch_summary" msgid="9049111149407626804">"Гүйцэтгэл болон дэвсгэрийн датаг багасгадаг"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Хуанли"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Түвшний хяналттай харуулах"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Бүү саад бол"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Бүү саад бол"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Дууны түвшний товчлуурын товчлол"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Бүү саад бол тохиргооноос гарахын тулд дууны түвшинг нэмэх"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Дууны түвшнийг нэмэх товчлуураар Бүү саад бол горимоос гарах"</string>
<string name="battery" msgid="7498329822413202973">"Батарей"</string>
<string name="clock" msgid="7416090374234785905">"Цаг"</string>
<string name="headset" msgid="4534219457597457353">"Чихэвч"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Хөтчид очих"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобайл дата"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi унтраалттай байна"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth унтраалттай байна"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Бүү саад бол горим унтраалттай байна"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Тохиргоо"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Ойлголоо"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> апп</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> апп</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> таны <xliff:g id="TYPES_LIST">%2$s</xliff:g>-г ашиглаж байна."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Аппууд таны <xliff:g id="TYPES_LIST">%s</xliff:g>-г ашиглаж байна."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Ашиглаж байгаа:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">Таны <xliff:g id="TYPE_5">%2$s</xliff:g>-г <xliff:g id="NUM_APPS_4">%1$d</xliff:g> апп ашиглаж байна.</item>
- <item quantity="one">Таны <xliff:g id="TYPE_1">%2$s</xliff:g>-г <xliff:g id="NUM_APPS_0">%1$d</xliff:g> апп ашиглаж байна.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ойлголоо"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Нууцлалын тохиргоо"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Апп таны <xliff:g id="TYPES_LIST">%s</xliff:g>-г ашиглаж байна"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Аппууд таны <xliff:g id="TYPES_LIST">%s</xliff:g>-г ашиглаж байна"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" болон "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камер"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"байршил"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"микрофон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Бусад <xliff:g id="NUM_APPS_1">%d</xliff:g> апп</item>
- <item quantity="one">Бусад <xliff:g id="NUM_APPS_0">%d</xliff:g> апп</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Мэдрэгчийг унтраах"</string>
<string name="device_services" msgid="1191212554435440592">"Төхөөрөмжийн үйлчилгээ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Гарчиггүй"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Энэ аппыг дахин эхлүүлж, бүтэн дэлгэцэд орохын тулд товшино уу."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г нээх"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н мэдэгдлийн тохиргоог нээх"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Энэ аппын хөвөгч контентыг зөвшөөрөх үү?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Хориглох"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н хөөсний тохиргоо"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н хөөсийг зөвшөөрөх үү?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Татгалзах"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Зөвшөөрөх"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Надаас дараа асуу"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>-н <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g>-н <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> болон бусад <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Зөөх"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Зүүн дээш зөөх"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Баруун дээш зөөх"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Зүүн доош зөөх"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Баруун доош зөөх"</string>
</resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 6a26d3354640..e84e03ad4dc4 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"तुमच्या डिव्हाइससह आलेल्या चार्जरचा वापर करा"</string>
<string name="battery_low_why" msgid="4553600287639198111">"सेटिंग्ज"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"बॅटरी सेव्हर सुरू करायचा का?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"बॅटरी सेव्हर बाबत"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"चालू करा"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"बॅटरी सेव्हर सुरू करा"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"सेटिंग्ज"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"सध्‍या या डीव्हाइसमध्‍ये साइन इन केलेला वापरकर्ता USB डीबग करणे चालू करू शकत नाही. हे वैशिष्‍ट्य वापरण्‍यासाठी, प्राथमिक वापरकर्त्‍यावर स्विच करा."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB पोर्ट बंद करा"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ओलावा आणि धूळ यापासून तुमच्या डिव्हाइसचे रक्षण करण्यासाठी, USB पोर्ट बंद केले आहे आणि कोणत्याही अ‍ॅक्सेसरीज शोधू शकत नाही.\n\nपुन्हा USB पोर्ट वापरण्यासाठी सुरक्षित असेल तेव्हा तुम्हाला सूचना दिली जाईल."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"चार्जर आणि अ‍ॅक्सेसरी शोधण्यासाठी USB पोर्ट सुरू केलेले आहे"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB सुरू करा"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"स्क्रीन भरण्यासाठी झूम करा"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"स्क्रीन भरण्यासाठी ताणा"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"स्क्रीनशॉट"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"तुमचे फिंगरप्रिंट न वापरता अनलॉक करा"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"चेहरा स्कॅन करत आहे"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"पाठवा"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"सूचना व्यवस्थापित करा"</string>
<string name="unlock_label" msgid="8779712358041029439">"अनलॉक करा"</string>
<string name="phone_label" msgid="2320074140205331708">"फोन उघडा"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"व्हॉइस सहाय्य उघडा"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"मोबाइल डेटा"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"मोबाइल डेटा चालू आहे"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"मोबाइल डेटा बंद आहे"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"डेटा वापरण्यासाठी सेट केलेले नाही"</string>
<string name="cell_data_off" msgid="1051264981229902873">"बंद"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लूटूथ टेदरिंग."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"विमान मोड."</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"विमान मोड चालू केला."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"संपूर्ण शांतता"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"फक्‍त अलार्म"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"व्यत्यय आणू नका."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"व्यत्यय आणू नका बंद केले आहे."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"व्यत्यय आणू नका सुरू केले आहे."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ब्लूटूथ."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ब्लूटूथ बंद."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ब्लूटूथ चालू."</string>
@@ -279,6 +277,8 @@
<item quantity="one">आत आणखी <xliff:g id="NUMBER_1">%s</xliff:g> सूचना.</item>
<item quantity="other">आत आणखी <xliff:g id="NUMBER_1">%s</xliff:g> सूचना.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"सूचना सेटिंग्ज"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> सेटिंग्ज"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रीन स्वयंचलितपणे फिरेल."</string>
@@ -291,8 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"स्क्रीन सेव्हर"</string>
<string name="ethernet_label" msgid="7967563676324087464">"इथरनेट"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"अधिक पर्यायांसाठी आयकनला स्पर्श करा आणि धरून ठेवा"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"व्यत्यय आणू नका"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"केवळ प्राधान्य"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"केवळ अलार्म"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"संपूर्ण शांतता"</string>
@@ -443,10 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"बॅटरी सेव्‍हर चालू आहे"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"कामगिरी आणि पार्श्वभूमीवरील डेटा कमी करते"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"बॅटरी सेव्हर बंद करा"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"रेकॉर्ड किंवा कास्ट करत असताना, तुम्ही प्ले करत असलेला ऑडिओ आणि तुमचे पासवर्ड, पेमेंट माहिती, फोटो आणि मेसेज यांसारखी कोणतीही संवेदनशील माहिती <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> कॅप्चर करू शकते."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"कास्टिंग/रेकॉर्डिंग करत असताना संवेदनशील माहिती उघड करत आहे"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"पुन्हा दर्शवू नका"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"सर्व साफ करा"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"व्यवस्थापित करा"</string>
@@ -521,10 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"आवाज सेटिंग्ज"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तृत करा"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"संकुचित करा"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"मीडियाला आपोआप सबटायटल द्या"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"सबटायटल टीप"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"आउटपुट डिव्‍हाइस स्विच करा"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"स्क्रीन पिन केलेली आहे"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"तुम्ही अनपिन करेर्यंत हे यास दृश्यामध्ये ठेवते. अनपिन करण्‍यासाठी परत आणि विहंगावलोकनास स्पर्श करा आणि धरून ठेवा."</string>
@@ -625,7 +620,7 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"या सूचना तुम्हाला इशारा देतील"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"तुम्ही या सूचना सामान्यतः डिसमिस करता. \nते दाखवत राहायचे?"</string>
<string name="inline_done_button" msgid="492513001558716452">"पूर्ण झाले"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
<skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"या सूचना दाखवणे सुरू ठेवायचे?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"सूचना थांबवा"</string>
@@ -633,19 +628,22 @@
<string name="inline_block_button" msgid="8735843688021655065">"ब्लॉक करा"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"दाखवणे सुरू ठेवा"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"लहान करा"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"शांतपणे दर्शवा"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"सायलंट रहा"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
<skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"सूचना देत रहा"</string>
- <string name="inline_keep_showing_app" msgid="1723113469580031041">"या अ‍ॅपकडील सूचना दाखवणे सुरू ठेवायचे?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
<skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
+ <string name="inline_keep_showing_app" msgid="1723113469580031041">"या अ‍ॅपकडील सूचना दाखवणे सुरू ठेवायचे?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ब्लॉक केलेल्या सूचना कुठेही दिसत नाहीत किंवा आवाज प्ले करत नाहीत. तुम्ही सेटिंग्जमध्ये सूचना अनब्लॉक करू शकता."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"सायलंट सूचना रंगछटेमध्ये दिसतात, परंतु लॉक स्क्रीनवर दिसत नाहीत, बॅनर दाखवत नाहीत किंवा आवाज प्ले करत नाहीत."</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
<skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"या सूचना बंद करता येत नाहीत"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> मार्गे"</string>
<string name="appops_camera" msgid="8100147441602585776">"हे अ‍ॅप कॅमेरा वापरत आहे."</string>
<string name="appops_microphone" msgid="741508267659494555">"हे अ‍ॅप मायक्रोफोन वापरत आहे."</string>
@@ -724,11 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"कॅलेंडर"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"आवाज नियंत्रणांसह दर्शवा"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"व्यत्यय आणू नका"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"आवाजाच्या बटणांचा शार्टकट"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"व्‍हॉल्‍यूम वाढवल्यावर व्यत्यय आणू नका मधून बाहेर पडा"</string>
<string name="battery" msgid="7498329822413202973">"बॅटरी"</string>
<string name="clock" msgid="7416090374234785905">"घड्याळ"</string>
<string name="headset" msgid="4534219457597457353">"हेडसेट"</string>
@@ -869,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ब्राउझरवर जा"</string>
<string name="mobile_data" msgid="7094582042819250762">"मोबाइल डेटा"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"वाय-फाय बंद आहे"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ब्लूटूथ बंद आहे"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"व्यत्यय आणू नका बंद आहे"</string>
@@ -900,10 +897,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI हीप डंप करा"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> तुमचे <xliff:g id="TYPES_LIST">%2$s</xliff:g> वापरत आहे."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"अॅप्लिकेशन्स तुमचे <xliff:g id="TYPES_LIST">%s</xliff:g> वापरत आहे."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"समजले"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"गोपनीयता सेटिंग्ज"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"अ‍ॅप तुमचे <xliff:g id="TYPES_LIST">%s</xliff:g> वापरत आहे"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"अॅप्स तुमचे <xliff:g id="TYPES_LIST">%s</xliff:g> वापरत आहेत"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" आणि "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"कॅमेरा"</string>
@@ -912,30 +905,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"सेन्सर बंद आहेत"</string>
<string name="device_services" msgid="1191212554435440592">"डिव्हाइस सेवा"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"शीर्षक नाही"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"हे अ‍ॅप रीस्टार्ट करण्यासाठी आणि फुल स्क्रीन करण्यासाठी टॅप करा."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> उघडा"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> बबलसाठी सेटिंग्ज"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> वरील बबलना अनुमती द्यायची?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"नाकारा"</string>
<string name="yes_bubbles" msgid="668809525728633841">"अनुमती द्या"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"मला नंतर विचारा"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> कडून <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> आणि आणखी <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> कडून <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"हलवा"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"वर डावीकडे हलवा"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"वर उजवीकडे हलवा"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"तळाशी डावीकडे हलवा"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"तळाशी उजवीकडे हलवा"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 63f2e76a8a80..dc3d8327c1a4 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Gunakan pengecas yang disertakan dengan peranti anda"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Tetapan"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Hidupkan Penjimat Bateri?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Tentang Penjimat Bateri"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Hidupkan"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Hidupkan Penjimat Bateri"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Tetapan"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Pengguna yang log masuk ke peranti ini pada masa ini tidak boleh menghidupkan penyahpepijatan USB. Untuk menggunakan ciri ini, tukar kepada pengguna utama."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Port USB dilumpuhkan"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Untuk melindungi peranti anda daripada cecair atau serpihan, port USB dilumpuhkan dan tidak akan mengesan sebarang aksesori.\n\nAnda akan dimaklumi apabila selamat untuk menggunakan port USB lagi."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Port USB didayakan untuk mengesan pengecas dan aksesori"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Dayakan USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zum untuk memenuhi skrin"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Regang utk memenuhi skrin"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Tangkapan skrin"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Buka kunci tanpa menggunakan cap jari"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Mengimbas wajah"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Hantar"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Urus pemberitahuan"</string>
<string name="unlock_label" msgid="8779712358041029439">"buka kunci"</string>
<string name="phone_label" msgid="2320074140205331708">"buka telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"buka bantuan suara"</string>
<string name="camera_label" msgid="7261107956054836961">"buka kamera"</string>
<string name="cancel" msgid="6442560571259935130">"Batal"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Bahagian mesej bantuan"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Sahkan"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Cuba lagi"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Sentuh penderia cap jari"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Data Mudah Alih"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Data Mudah Alih Dihidupkan"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Data mudah alih dimatikan"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Tidak ditetapkan untuk menggunakan data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Mati"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Penambatan Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod pesawat"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Mod pesawat dihidupkan."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"senyap sepenuhnya"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"penggera sahaja"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Jangan ganggu."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Jangan ganggu dimatikan."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Jangan ganggu dihidupkan."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Jangan Ganggu."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Jangan Ganggu dimatikan."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Jangan Ganggu dihidupkan."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth dimatikan."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth dihidupkan."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Permintaan lokasi aktif"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Padamkan semua pemberitahuan."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> lagi pemberitahuan di dalam.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> lagi pemberitahuan di dalam.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Tetapan pemberitahuan"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> tetapan"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrin akan berputar secara automatik."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Penyelamat skrin"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Sentuh &amp; tahan ikon untuk mendapatkan pilihan lanjut"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Jangan ganggu"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Jangan Ganggu"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Keutamaan sahaja"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Penggera sahaja"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Senyap sepenuhnya"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Penjimat Bateri dihidupkan"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Mengurangkan prestasi dan data latar belakang"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Matikan Penjimat Bateri"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> akan mula merakam semua item pada skrin anda, termasuk pemberitahuan, kata laluan, foto, mesej dan maklumat pembayaran."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Benarkan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> merakam atau menghantar skrin anda?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Semasa merakam atau menghantar, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> boleh menangkap sebarang maklumat sensitif, seperti audio yang anda mainkan dan kata laluan, maklumat pembayaran, foto serta mesej anda."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Mendedahkan maklumat sensitif semasa menghantar/merakam"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Jangan tunjukkan lagi"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Kosongkan semua"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Urus"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Tetapan bunyi"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Kembangkan"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Runtuhkan"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Kapsyen media automatik"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Petua sari kata"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Tukar peranti output"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skrin telah disemat"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Tindakan ini memastikan skrin kelihatan sehingga anda menyahsemat. Sentuh &amp; tahan Kembali dan Ikhtisar untuk menyahsemat."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Pemberitahuan ini akan memaklumi anda"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Biasanya anda mengetepikan pemberitahuan ini. \nTerus tunjukkan pemberitahuan?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Selesai"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Guna"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Terus tunjukkan pemberitahuan ini?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Hentikan pemberitahuan"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Hantar Secara Senyap"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Sekat"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Terus tunjukkan"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimumkan"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Tunjukkan secara senyap"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Lembut"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Kekal senyap"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Maklumi saya"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Mengganggu"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Teruskan memberikan makluman"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Matikan pemberitahuan"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Terus tunjukkan pemberitahuan daripada apl ini?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Pemberitahuan yang disekat tidak dipaparkan di mana-mana atau memainkan bunyi. Anda boleh menyahsekat pemberitahuan dalam tetapan."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Pemberitahuan senyap dipaparkan dalam bidai tetapi tidak dipaparkan pada skrin kunci, memaparkan sepanduk dan memainkan bunyi."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Pemberitahuan ini akan berbunyi dan ditunjukkan dalam laci pemberitahuan, bar status dan skrin kunci"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Pemberitahuan ini tidak boleh dimatikan"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"melalui <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Apl ini sedang menggunakan kamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Apl ini sedang menggunakan mikrofon."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Tunjukkan dengan kawalan kelantangan"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Jangan ganggu"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Jangan Ganggu"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Pintasan butang kelantangan"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Keluar drp mod jangan ganggu apabila kelantangan ditinggikan"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Keluar daripada Jangan Ganggu apabila kelantangan dinaikkan"</string>
<string name="battery" msgid="7498329822413202973">"Bateri"</string>
<string name="clock" msgid="7416090374234785905">"Jam"</string>
<string name="headset" msgid="4534219457597457353">"Set Kepala"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Pergi ke penyemak imbas"</string>
<string name="mobile_data" msgid="7094582042819250762">"Data mudah alih"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi dimatikan"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth dimatikan"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Jangan Ganggu dimatikan"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Tetapan"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Longgok Tmbunn SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apl</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> apl</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> sedang menggunakan <xliff:g id="TYPES_LIST">%2$s</xliff:g> anda."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikasi sedang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> anda."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Digunakan:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikasi sedang menggunakan <xliff:g id="TYPE_5">%2$s</xliff:g> anda.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikasi sedang menggunakan <xliff:g id="TYPE_1">%2$s</xliff:g> anda.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Tetapan privasi"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Apl yang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> anda"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apl yang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> anda"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" dan "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokasi"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> apl lain</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g>apl lain</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Penderia dimatikan"</string>
<string name="device_services" msgid="1191212554435440592">"Perkhidmatan Peranti"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Tiada tajuk"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Ketik untuk memulakan semula apl ini dan menggunakan skrin penuh."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Buka <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Buka tetapan pemberitahuan untuk <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Benarkan gelembung daripada apl ini?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Sekat"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Tetapan untuk gelembung <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Benarkan gelembung daripada <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Tolak"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Benarkan"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Tanya saya kemudian"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> daripada <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> daripada <xliff:g id="APP_NAME">%2$s</xliff:g> dan <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> lagi"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Alih"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Alihkan ke atas sebelah kiri"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Alihkan ke atas sebelah kanan"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Alihkan ke bawah sebelah kiri"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Alihkan ke bawah sebelah kanan"</string>
</resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index b167375e64f5..40b21cc3c7c9 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"သင့်စက်ပစ္စည်းနှင့် အတူပါလာသည့် အားသွင်းကိရိယာကို အသုံးပြုပါ"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ဆက်တင်များ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ဘက်ထရီ အားထိန်းကို ဖွင့်ခြင်း"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"\'ဘက်ထရီအားထိန်း\' အကြောင်း"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ဖွင့်ရန်"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ဘက်ထရီ အားထိန်းကို ဖွင့်ရန်"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"အပြင်အဆင်များ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ဤစက်ပစ္စည်းသို့ လက်ရှိဝင်ရောက်ထားသည့် အသုံးပြုသူသည် USB အမှားပြင်ဆင်ခြင်းကို ဖွင့်၍မရပါ။ ဤဝန်ဆောင်မှုကို အသုံးပြုရန် အဓိကအသုံးပြုသူအဖြစ်သို့ ပြောင်းပါ။"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB ပို့တ် ပိတ်ပြီးပြီ"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB ပို့တ်ကို ပိတ်၍ သင့်ကိရိယာသို့ အရည် သို့မဟုတ် အမှိုက်စများ မဝင်စေရန် ကာကွယ်ပါ၊ မည်သည့် အပိုပစ္စည်းကိုမျှ အာရုံခံသိရှိနိုင်တော့မည် မဟုတ်ပါ။\n\nUSB ပို့တ်ကို ပြန်အသုံးပြုနိုင်သည့်အခါ သင့်ကိုအကြောင်းကြားပါမည်။"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"အားသွင်းကိရိယာနှင့် ဆက်စပ်ပစ္စည်းများ သိရှိရန် USB ပို့တ် ဖွင့်ထားသည်"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB ကို ဖွင့်ရန်"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ဇူးမ်အပြည့်ဆွဲခြင်း"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ဖန်သားပြင်အပြည့်ဆန့်ခြင်း"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"လက်ဗွေရာ မသုံးဘဲ ဖွင့်ပါ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"မျက်နှာ စကင်ဖတ်နေသည်"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ပို့ရန်"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"အကြောင်းကြားချက်များကို စီမံရန်"</string>
<string name="unlock_label" msgid="8779712358041029439">"သော့ဖွင့်ရန်"</string>
<string name="phone_label" msgid="2320074140205331708">"ဖုန်းကို ဖွင့်ရန်"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"အသံ အကူအညီအား ဖွင့်ရန်"</string>
<string name="camera_label" msgid="7261107956054836961">"ကင်မရာ ဖွင့်ရန်"</string>
<string name="cancel" msgid="6442560571259935130">"မလုပ်တော့"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"အကူအညီမက်ဆေ့ဂျ် နေရာ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"အတည်ပြုပါ"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ထပ်စမ်းကြည့်ရန်"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"လက်ဗွေအာရုံခံကိရိယာကို တို့ပါ"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"မိုဘိုင်းဒေတာ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"မိုဘိုင်းဒေတာကို ဖွင့်ထားပါသည်"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"မိုဘိုင်းဒေတာ ပိတ်ထားသည်"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ဒေတာအသုံးပြုရန် သတ်မှတ်မထားပါ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ပိတ်ရန်"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ဘလူးတုသ်သုံး၍ ချိတ်ဆက်ခြင်း"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"လေယာဥ်ပျံပေါ်အသုံးပြုသောစနစ်။"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"လေယာဉ် မုဒ်ကို ဖွင့်ထားလိုက်ပြီ။"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"လုံးဝ အသံပိတ်ထားရန်"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"နှိုးစက်များသာ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"မနှောင့်ယှက်ရ။"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"မနှောင့်ယှက်ပါနှင့် ကိုပိတ်ထားသည်။"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"မနှောင့်ယှက်ပါနှင့်ကို ဖွင့်ထားသည်။"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"မနှောင့်ယှက်ရ။"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'မနှောင့်ယှက်ရ\' ကိုပိတ်ထားသည်။"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\'မနှောင့်ယှက်ရ\' ကိုဖွင့်ထားသည်။"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ဘလူးတုသ်။"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ဘလူးတုသ် ပိတ်ထား."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ဘလူးတုသ် ဖွင့်ထား။"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"တည်နေရာပြ တောင်းဆိုချက်များ အသက်ဝင်ရန်"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"သတိပေးချက်အားလုံးအား ဖယ်ရှားခြင်း။"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>၊ +<xliff:g id="OVERFLOW">%2$s</xliff:g> ခု"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">အတွင်းတွင် အကြောင်းကြားချက် နောက်ထပ် <xliff:g id="NUMBER_1">%s</xliff:g> ခုရှိပါသည်။</item>
<item quantity="one">အတွင်းတွင် အကြောင်းကြားချက် နောက်ထပ် <xliff:g id="NUMBER_0">%s</xliff:g> ခုရှိပါသည်။</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>- <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"အကြောင်းကြားချက် ဆက်တင်များ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ဆက်တင်များ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ဖန်သားပြင်ပေါ်မှာ ပြသမှုက အလိုအလျောက် လှည့်သွားပါမည်"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ဖန်သားပြင်အသုံးပြုမှု ချွေတာမှုစနစ်"</string>
<string name="ethernet_label" msgid="7967563676324087464">"အီသာနက်"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"နောက်ထပ် ရွေးချယ်စရာများအတွက် သင်္ကေတများကို ထိပြီး ဖိထားပါ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"မနှောင့်ယှက်ရ"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"မနှောင့်ယှက်ရ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ဦးစားပေးများသာ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"နှိုးစက်များသာ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"လုံးဝ တိတ်ဆိတ်ခြင်း"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ဘက်ထရီ အားထိန်းကို ဖွင့်ထားခြင်း"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"လုပ်ကိုင်မှုကို လျှော့ချလျက် နောက်ခံ ဒေတာကို ကန့်သတ်သည်"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ဘက်ထရီ အားထိန်းကို ပိတ်ရန်"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> သည် အကြောင်းကြားချက်၊ စကားဝှက်၊ ဓာတ်ပုံ၊ မက်ဆေ့ဂျ်နှင့် ငွေပေးချေမှု အချက်အလက်များ အပါအဝင် သင့်ဖန်သားပြင်ပေါ်ရှိ အရာအားလုံးကို စတင် ဖမ်းယူပါမည်။"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"သင့်ဖန်သားပြင် ရိုက်ကူးရန် သို့မဟုတ် ကာ့စ်လုပ်ရန် <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ကို ခွင့်ပြုမလား။"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"အသံဖမ်းနေစဉ် (သို့) ကာစ်လုပ်နေစဉ် သင်ဖွင့်သည့် အသံ၊ သင့်စကားဝှက်၊ ငွေပေးချေမှုဆိုင်ရာ အချက်အလက်၊ ဓာတ်ပုံနှင့် မက်ဆေ့ဂျ်များကဲ့သို့ အရေးကြီးသော အချက်အလက်များကို <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> က ဖမ်းယူနိုင်ပါသည်။"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"ကာစ်လုပ်နေစဉ်/အသံဖမ်းနေစဉ် အရေးကြီးသောအချက်အလက်များ ထုတ်ဖော်မိခြင်း"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"နောက်ထပ် မပြပါနှင့်"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"အားလုံး ဖယ်ရှားရန်"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"စီမံရန်"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"အသံဆက်တင်များ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"တိုးချဲ့ရန်"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ခေါက်သိမ်းရန်..."</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"အလိုလို မီဒီယာ စာတန်းထိုးရန်"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"စာတန်းအကြံပြုချက်ကို ပိတ်ပါ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"အထွက် စက်ပစ္စည်းကို ပြောင်းပါ"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"မျက်နှာပြင် ပင်ထိုးပြီးပါပြီ"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"သင်ပင်မဖြုတ်မခြင်း ၎င်းကို ပြသထားပါမည်။ ပင်ဖြုတ်ရန် Back နှင့် Overview ကို ထိ၍ဖိထားပါ။"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ဤအကြောင်းကြားချက်များက သင့်ကို သတိပေးပါမည်"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"သင်သည် အများအားဖြင့် ဤအကြောင်းကြားချက်များကို ပယ်လေ့ရှိပါသည်။ \n၎င်းတို့ကို ဆက်လက်ပြသလိုပါသလား။"</string>
<string name="inline_done_button" msgid="492513001558716452">"ပြီးပြီ"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"အသုံးပြုရန်"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"ဤအကြောင်းကြားချက်များကို ဆက်ပြလိုပါသလား။"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"အကြောင်းကြားချက်များကို ရပ်ရန်"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"တိတ်တဆိတ် ပြရန်"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ပိတ်ထားရန်"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ဆက်ပြရန်"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ချုံ့ရန်"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"တိတ်တဆိတ် ပြရန်"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"ညင်သာသည်"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ဆက်လက် အသံတိတ်ရန်"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"ကျွန်ုပ်ကို သတိပေးရန်"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"ကြားဖြတ်နိုင်သည်"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ဆက်လက် သတိပေးရန်"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"အကြောင်းကြားချက်များ ပိတ်ရန်"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ဤအက်ပ်ထံမှ အကြောင်းကြားချက်များကို ဆက်ပြလိုပါသလား။"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ပိတ်ထားသည့် အကြောင်းကြားချက်များသည် မည်သည့်နေရာတွင်မျှ ပေါ်မလာပါ (သို့) အသံမထွက်ပါ။ ဆက်တင်များတွင် အကြောင်းကြားချက်များကို ပြန်ဖွင့်နိုင်သည်။"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"အသံတိတ်ထားသော အကြောင်းကြားချက်များသည် အရိပ်ထဲတွင်ပေါ်လာသော်လည်း လော့ခ်ချထားချိန် မျက်နှာပြင်တွင် မပေါ်ပါ၊ နဖူးစည်းတွင် မတွေ့ရပါ သို့မဟုတ် အသံမမြည်ပါ။"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"ဤအကြောင်းကြားချက်သည် အသံထွက်မည်ဖြစ်ပြီး အကြောင်းကြားချက် အံဆွဲ၊ အခြေအနေပြဘားနှင့် လော့ခ်ချထားချိန် မျက်နှာပြင်တို့တွင် ပြသပါမည်"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ဤအကြောင်းကြားချက်များကို ပိတ်၍မရပါ"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> မှတစ်ဆင့်"</string>
<string name="appops_camera" msgid="8100147441602585776">"ဤအက်ပ်က ကင်မရာကို အသုံးပြုနေသည်။"</string>
<string name="appops_microphone" msgid="741508267659494555">"ဤအက်ပ်က မိုက်ခရိုဖုန်းကို အသုံးပြုနေသည်။"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"အသံထိန်းချုပ်သည့်ခလုတ်များဖြင့် ပြပါ"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"မနှောင့်ယှက်ရ"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"မနှောင့်ယှက်ရ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"အသံထိန်းချုပ်သည့်ခလုတ် ဖြတ်လမ်း"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"အသံချဲ့သည်နှင့် မနှောက်ယှက်ရမှ ထွက်ပါ"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"အသံချဲ့သည်နှင့် \'မနှောင့်ယှက်ရ\' ကိုထွက်ပါ"</string>
<string name="battery" msgid="7498329822413202973">"ဘက်ထရီ"</string>
<string name="clock" msgid="7416090374234785905">"နာရီ"</string>
<string name="headset" msgid="4534219457597457353">"မိုက်ခွက်ပါနားကြပ်"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ဘရောင်ဇာသို့ သွားပါ"</string>
<string name="mobile_data" msgid="7094582042819250762">"မိုဘိုင်းဒေတာ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> —<xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>၊ <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ကို ပိတ်ထားသည်"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ဘလူးတုသ်ကို ပိတ်ထားသည်"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"မနှောင့်ယှက်ရ\" ကို ပိတ်ထားသည်"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ဆက်တင်များ"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ရပါပြီ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other">အက်ပ် <xliff:g id="NUM_APPS_2">%d</xliff:g> ခု</item>
- <item quantity="one">အက်ပ် <xliff:g id="NUM_APPS_0">%d</xliff:g> ခု</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> က သင်၏ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ကို အသုံးပြုနေသည်။"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"အပလီကေးရှင်းများက သင်၏ <xliff:g id="TYPES_LIST">%s</xliff:g> ကို အသုံးပြုနေသည်။"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"သုံးထား-"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">အပလီကေးရှင်း <xliff:g id="NUM_APPS_4">%1$d</xliff:g> ခုက သင်၏ <xliff:g id="TYPE_5">%2$s</xliff:g> ကို အသုံးပြုနေသည်။</item>
- <item quantity="one">အပလီကေးရှင်း <xliff:g id="NUM_APPS_0">%1$d</xliff:g> ခုက သင်၏ <xliff:g id="TYPE_1">%2$s</xliff:g> ကို အသုံးပြုနေသည်။</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ရပါပြီ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ကန့်သတ်ဆက်တင်များ"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"သင့် <xliff:g id="TYPES_LIST">%s</xliff:g> ကို အသုံးပြုနေသော အက်ပ်"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"သင့် <xliff:g id="TYPES_LIST">%s</xliff:g> ကို အသုံးပြုနေသော အက်ပ်များ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"၊ "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" နှင့် "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ကင်မရာ"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"တည်နေရာ"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"မိုက်ခရိုဖုန်း"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">အခြားအက်ပ် <xliff:g id="NUM_APPS_1">%d</xliff:g> ခု</item>
- <item quantity="one">အခြားအက်ပ် <xliff:g id="NUM_APPS_0">%d</xliff:g> ခု</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"အာရုံခံကိရိယာများ ပိတ်ထားသည်"</string>
<string name="device_services" msgid="1191212554435440592">"စက်ပစ္စည်းဝန်ဆောင်မှုများ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ခေါင်းစဉ် မရှိပါ"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ဤအက်ပ်ကို ပြန်စတင်ပြီး မျက်နှာပြင်အပြည့်လုပ်ရန် တို့ပါ။"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကိုဖွင့်ရန်"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> အတွက် အကြောင်းကြားချက်ဆက်တင်များကို ဖွင့်ရန်"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"ဤအက်ပ်မှ ပူဖောင်းကွက်များကို ခွင့်ပြုပါသလား။"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ပိတ်ထားရန်"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> ပူဖောင်းကွက်များအတွက် ဆက်တင်များ"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> မှ ပူဖောင်းကွက်များကို ခွင့်ပြုလိုပါသလား။"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ငြင်းပယ်ရန်"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ခွင့်ပြုရန်"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"နောက်မှ မေးရန်"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> မှ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> နှင့် နောက်ထပ် <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ခုမှ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ရွှေ့ရန်"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ဘယ်ဘက်ထိပ်သို့ ရွှေ့ရန်"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ညာဘက်ထိပ်သို့ ရွှေ့ပါ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ဘယ်အောက်ခြေသို့ ရွှေ့ရန်"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ညာအောက်ခြေသို့ ရွှေ့ပါ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index bb86aab72299..75a5730cd430 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Bruk laderen som fulgte med enheten"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Innstillinger"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Vil du slå på batterisparing?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Om Batterisparing"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Slå på"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Slå på batterisparing"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Innstillinger"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Brukeren som for øyeblikket er logget på denne enheten, kan ikke slå på USB-feilsøking. For å bruke denne funksjonen, bytt til hovedbrukeren."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-porten er deaktivert"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"For å beskytte enheten din mot væsker eller rusk er USB-porten deaktivert og kan ikke oppdage tilbehør.\n\nDu blir varslet når det er trygt å bruke USB-porten igjen."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Registrering av ladere og tilbehør er slått på for USB-porten"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Slå på USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom for å fylle skjermen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Strekk for å fylle skjerm"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Skjermdump"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Lås opp uten å bruke fingeravtrykk"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skanning av ansikt"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Administrer varsler"</string>
<string name="unlock_label" msgid="8779712358041029439">"lås opp"</string>
<string name="phone_label" msgid="2320074140205331708">"åpne telefonen"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"åpne talehjelp"</string>
<string name="camera_label" msgid="7261107956054836961">"åpne kamera"</string>
<string name="cancel" msgid="6442560571259935130">"Avbryt"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Område for hjelpemelding"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Bekreft"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Prøv på nytt"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Trykk på fingeravtrykkssensoren"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobildata"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobildata er slått på"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobildata er slått av"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ikke konfigurert til å bruke data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Av"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-internettdeling."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Flymodus."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Flymodus er slått på."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"total stillhet"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"bare alarmer"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ikke forstyrr."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"«Ikke forstyrr» er slått av."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"«Ikke forstyrr» er slått på."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ikke forstyrr."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"«Ikke forstyrr» er slått av."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"«Ikke forstyrr» er slått på."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth er av."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth er på."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktive stedsforespørsler"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Fjern alle varslinger."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> andre varsler i gruppen.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> annet varsel i gruppen.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Varselinnstillinger"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-innstillinger"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skjermen roterer automatisk."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Skjermsparer"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Trykk og hold på ikonene for å se flere alternativer"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"«Ikke forstyrr»"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ikke forstyrr"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Bare prioritet"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Bare alarmer"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Total stillhet"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Batterisparing er på"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduserer ytelsen og begrenser bakgrunnsdataene"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Slå av batterisparing"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> begynner å ta opp alt på skjermen din, inkludert varsler, passord, bilder, meldinger og betalingsopplysninger."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Vil du tillate at <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> tar opp eller caster skjermen din?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Under opptak eller casting kan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> registrere all sensitiv informasjon, for eksempel lyd du spiller av, og passord, betaingsinformasjon, bilder og meldinger."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Avdekke sensitiv informasjon under casting/opptak"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ikke vis igjen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Fjern alt"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Administrer"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Lydinnstillinger"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Utvid"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skjul"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatisk teksting av media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Verktøytips for teksting"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Bytt enhet for lydutgang"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skjermen er låst"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"På denne måten blir skjermen synlig frem til du løsner den. Trykk og hold inne Tilbake og Oversikt for å løsne den."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Disse varslene varsler deg"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Du avviser vanligvis disse varslene. \nVil du fortsette å vise dem?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Ferdig"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Bruk"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Vil du fortsette å vise disse varslene?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stopp varsler"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Levér lydløse varsler"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokkér"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Fortsett å vise"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimer"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Vis uten lyd"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Forsiktig"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Forbli lydløs"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Varsle meg"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Forstyrrende"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Fortsett å varsle"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Slå av varsler"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vil du fortsette å vise varsler fra denne appen?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokkerte varsler vises ikke noen steder og spiller ikke av lyder. Du kan oppheve blokkeringen av varsler i innstillingene."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Lydløse varsler vises i panelet, men vises ikke på låseskjermen, viser ikke et banner og spiller ikke av en lyd."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Disse varslene lager en lyd og vises i varselpanelet, på statuslinjen og på låseskjermen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Du kan ikke slå av disse varslene"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Denne varselgruppen kan ikke konfigureres her"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Denne appen bruker kameraet."</string>
<string name="appops_microphone" msgid="741508267659494555">"Denne appen bruker mikrofonen."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Vis med volumkontrollene"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ikke forstyrr"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ikke forstyrr"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Hurtigtast for volumknappene"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Lukk «Ikke forstyrr» med volum opp-knappen"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Lukk «Ikke forstyrr» med volum opp-knappen"</string>
<string name="battery" msgid="7498329822413202973">"Batteri"</string>
<string name="clock" msgid="7416090374234785905">"Klokke"</string>
<string name="headset" msgid="4534219457597457353">"Hodetelefoner"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Gå til nettleser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobildata"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi er av"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth er av"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Ikke forstyrr er av"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Innstillinger"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Greit"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI-heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apper</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> bruker <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Apper bruker <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"I bruk:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> apper bruker <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> app bruker <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Greit"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Personverninnst."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App som bruker <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apper som bruker <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" og "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"posisjon"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> andre apper</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> annen app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorer er av"</string>
<string name="device_services" msgid="1191212554435440592">"Enhetstjenester"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ingen tittel"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Trykk for å starte denne appen på nytt og vise den i fullskjerm."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Åpne <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Åpne varslingsinnstillinger for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Vil du tillate bobler fra denne appen?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokkér"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Innstillinger for <xliff:g id="APP_NAME">%1$s</xliff:g>-bobler"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Vil du tillate bobler fra <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Avvis"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Tillat"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Spør meg senere"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> fra <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> fra <xliff:g id="APP_NAME">%2$s</xliff:g> og <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> flere"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Flytt"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Flytt til øverst til venstre"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Flytt til øverst til høyre"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Flytt til nederst til venstre"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Flytt til nederst til høyre"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 7db0aa31619b..ebe76ec08fe6 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"तपाईंको यन्त्रसँगै आएको चार्जर प्रयोग गर्नुहोस्‌"</string>
<string name="battery_low_why" msgid="4553600287639198111">"सेटिङहरू"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ब्याट्री सेभर सक्रिय गर्ने हो?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ब्याट्री सेभरका बारेमा"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"खोल्नुहोस्"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ब्याट्री सेभर सक्रिय गर्नुहोस्"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"सेटिङहरू"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"हाल यस यन्त्रमा साइन इन हुनुभएको प्रयोगकर्ताले USB डिबग सक्रिय गर्न सक्नुहुन्न। यो सुविधाको प्रयोग गर्न प्राथमिक प्रयोगकर्तामा बदल्नुहोस्‌।"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB पोर्ट असक्षम पारियो"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"तपाईंको यन्त्रलाई तरल पदार्थ वा धुलोबाट जोगाउन यसको USB पोर्ट असक्षम पारिएको छ र यसले कुनै पनि सहायक उपकरणहरू पहिचान गर्ने छैन।\n\nउक्त USB पोर्ट प्रयोग गर्न सुरक्षित हुँदा तपाईंलाई यसबारे सूचित गरिने छ।"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"चार्जर तथा सामानहरू पत्ता लगाउन सक्षम पारिएको USB पोर्ट"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB सक्षम पार्नुहोस्"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"स्क्रिन भर्न जुम गर्नुहोस्"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"स्क्रिन भर्न तन्काउनुहोस्"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"स्क्रिनसट"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"तपाईँको फिंगरप्रिन्ट बिना नै अनलक गर्नुहोस्"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"अनुहार स्क्यान गर्दै"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"पठाउनुहोस्"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"सूचनाहरू व्यवस्थित गर्नुहोस्"</string>
<string name="unlock_label" msgid="8779712358041029439">"खोल्नुहोस्"</string>
<string name="phone_label" msgid="2320074140205331708">"फोन खोल्नुहोस्"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"आवाज सहायता खोल्नुहोस्"</string>
<string name="camera_label" msgid="7261107956054836961">"क्यामेरा खोल्नुहोस्"</string>
<string name="cancel" msgid="6442560571259935130">"रद्द गर्नुहोस्"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"मद्दतसम्बन्धी सन्देशको क्षेत्र"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"पुष्टि गर्नुहोस्"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"फेरि प्रयास गर्नुहोस्"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"फिंगरप्रिन्ट सेन्सरमा छुनुहोस्‌"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"मोबाइल डेटा"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"मोबाइल डेटा सक्रिय छ"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"मोबाइल डेटा निष्क्रिय छ"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"डेटा प्रयोग गर्ने गरी सेट गरिएन"</string>
<string name="cell_data_off" msgid="1051264981229902873">"निष्क्रिय पार्नु"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लुटुथ टेदर गर्दै।"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाइजहाज मोड।"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"हवाइजहाज मोड खोलियो।"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"पूर्ण मौनता"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"अलार्महरू मात्र"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"बाधा नपुर्याउनुहोस्।"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"निष्क्रिय गरिएकालाई अवरोध नपुर्‍याउनुहोस्।"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"सक्रिय रहेकोलाई अवरोध नपुर्‍याउनुहोस्।"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"बाधा नपुऱ्याउनुहोस्।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"बाधा नपुऱ्याउनुहोस् नामक सुविधा निष्क्रिय पारियो।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"बाधा नपुऱ्याउनुहोस् नामक सुविधा सक्रिय पारियो।"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ब्लुटुथ।"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ब्लुटुथ बन्द छ।"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ब्लुटुथ खुला छ।"</string>
@@ -269,11 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"स्थान अनुरोधहरू सक्रिय"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"सबै सूचनाहरू हटाउनुहोस्।"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">भित्र थप <xliff:g id="NUMBER_1">%s</xliff:g> सूचनाहरू छन्।</item>
<item quantity="one">भित्र थप <xliff:g id="NUMBER_0">%s</xliff:g> सूचना छ।</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"अधिसूचना सेटिङहरू"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> सेटिङहरू"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"स्क्रिन स्वतः घुम्ने छ।"</string>
@@ -286,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"स्क्रिन सेभर"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"थप विकल्पहरूका लागि आइकनहरूमा छोइराख्नुहोस्"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"बाधा नपुर्याउँनुहोस्"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"बाधा नपुऱ्याउनुहोस्"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"प्राथमिकता मात्र"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"अलार्महरू मात्र"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"पूरै शान्त"</string>
@@ -437,8 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ब्याट्री सेभर सक्रिय छ"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"प्रदर्शन र पृष्ठभूमि डेटा घटाउँनुहोस्"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ब्याट्री सेभर निष्क्रिय पार्नुहोस्"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ले सूचना, पासवर्ड, तस्बिर, सन्देश र भुक्तानीसम्बन्धी जानकारीलगायत तपाईंको स्क्रिनमा रहेका सबै कुरा खिच्न थाल्ने छ।"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> लाई तपाईंको स्क्रिन रेकर्ड गर्न वा cast गर्न दिने हो?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"रेकर्ड गर्दा वा कास्ट गर्दा <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ले तपाईंले प्ले गर्ने अडियो र तपाईंका पासवर्डहरू, भुक्तानीसम्बन्धी जानकारी, तस्बिर र सन्देशहरू जस्ता जुनसुकै संवेदनशील जानकारी समावेश गर्न सक्छ।"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"कास्टिङ/रेकर्डिङका क्रममा संवेदनशील जानकारी देखाइँदै"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"फेरि नदेखाउनुहोस्"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"सबै हटाउनुहोस्"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"व्यवस्थित गर्नुहोस्"</string>
@@ -513,6 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ध्वनिसम्बन्धी सेटिङहरू"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तार गर्नुहोस्"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"संक्षिप्त पार्नुहोस्"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"स्वचालित क्याप्सनहरूसम्बन्धी मिडिया"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"उपशीर्षकहरूसम्बन्धी सुझाव"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"आउटपुट यन्त्र बदल्नुहोस्"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"पर्दा राखेका छ"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र परिदृश्य बटनलाई छोइराख्नुहोस्।"</string>
@@ -613,18 +620,30 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"यी सूचनाहरूले तपाईंलाई सतर्क गरिने छ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"तपाईं सामान्यतया यी सूचनाहरूलाई खारेज गर्ने गर्नुहुन्छ। \nतिनलाई देखाइरहने हो?"</string>
<string name="inline_done_button" msgid="492513001558716452">"सम्पन्न भयो"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"यी सूचनाहरू देखाउने क्रम जारी राख्ने हो?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"सूचनाहरू देखाउन छाड्नुहोस्"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"मौन रूपमा डेलिभर गर्नुहोस्"</string>
<string name="inline_block_button" msgid="8735843688021655065">"रोक लगाउनुहोस्"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"देखाउने क्रम जारी राख्नुहोस्"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"सानो बनाउनुहोस्"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"मौन रूपमा देखाउने"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"मौन रहनुहोस्"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"मलाई सतर्क गराउनुहोस्"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"सर्तक गराइरहनुहोस्"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"यो अनुप्रयोगका सूचनाहरू देखाउने क्रम जारी राख्ने हो?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"रोक लगाइएका सूचनाहरू कतै पनि देखिँदैनन् वा कुनै आवाज गर्दैनन्। तपाईं सेटिङहरूमा सूचनाहरूमाथिको रोक हटाउन सक्नुहुन्छ।"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"मौन सूचनाहरू ओझेलमा देखिन्छन् तर स्क्रिन लक हुँदा देखिँदैनन्, ब्यानर देखाउँदैनन् अनि कुनै आवाज पनि दिँदैनन्।"</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"यी सूचनाहरूलाई निष्क्रिय पार्न सकिँदैन"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> मार्फत"</string>
<string name="appops_camera" msgid="8100147441602585776">"यो अनुप्रयोगले क्यामेराको प्रयोग गर्दै छ।"</string>
<string name="appops_microphone" msgid="741508267659494555">"यो अनुप्रयोगले माइक्रोफोनको प्रयोग गर्दै छ।"</string>
@@ -703,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"पात्रो"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"भोल्युम नियन्त्रणसहित देखाउनुहोस्"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"बाधा नपुर्याउनुहोस्"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"बाधा नपुऱ्याउनुहोस्"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"भोल्युम बटनका सर्टकट"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"भोल्युम बढाउनेमा बाधा नपुर्याउनुहोस् प्रविष्टि गर्नुहोस्"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"भोल्युम बढाउने बटनमार्फत बाधा नपुर्‍याउनुहोस् नामक सुविधाबाट बाहिरिनुहोस्"</string>
<string name="battery" msgid="7498329822413202973">"ब्याट्री"</string>
<string name="clock" msgid="7416090374234785905">"घडी"</string>
<string name="headset" msgid="4534219457597457353">"हेडसेट"</string>
@@ -846,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ब्राउजरमा जानुहोस्"</string>
<string name="mobile_data" msgid="7094582042819250762">"मोबाइल डेटा"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi‑Fi निष्क्रिय छ"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ब्लुटुथ निष्क्रिय छ"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"बाधा नपुर्‍याउनुहोस् नामक विकल्प निष्क्रिय छ"</string>
@@ -875,36 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"सेटिङहरू"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"बुझेँ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> अनुप्रयोगहरू</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> अनुप्रयोग</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ले तपाईंको <xliff:g id="TYPES_LIST">%2$s</xliff:g> प्रयोग गर्दै छ।"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"अनुप्रयोगहरूले तपाईंको <xliff:g id="TYPES_LIST">%s</xliff:g> प्रयोग गर्दै छन्‌।"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"प्रयोगमा छ:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> अनुप्रयोगहरूले तपाईंको <xliff:g id="TYPE_5">%2$s</xliff:g> प्रयोग गरिरहेका छन्।</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> अनुप्रयोगले तपाईंको <xliff:g id="TYPE_1">%2$s</xliff:g> प्रयोग गरिरहेको छ।</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"बुझेँ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"गोपनीयतासम्बन्धी सेटिङहरू"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"तपाईंको <xliff:g id="TYPES_LIST">%s</xliff:g> प्रयोग गरिरहेका अनुप्रयोग"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"तपाईंको <xliff:g id="TYPES_LIST">%s</xliff:g> प्रयोग गरिरहेका अनुप्रयोगहरू"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" र "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"क्यामेरा"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"स्थान"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"माइक्रोफोन"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g>अन्य अनुप्रयोगहरू</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> अन्य अनुप्रयोग</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"सेन्सरहरू निष्क्रिय छन्"</string>
<string name="device_services" msgid="1191212554435440592">"यन्त्रका सेवाहरू"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"शीर्षक छैन"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"यो अनुप्रयोग पुनः सुरु गर्न ट्याप गर्नुहोस् र पूर्ण स्क्रिन मोडमा जानुहोस्।"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> खोल्नुहोस्"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> को सूचनासम्बन्धी सेटिङहरू खोल्नुहोस्"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"यो अनुप्रयोगका बबलहरूलाई अनुमति दिने हो?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"रोक लगाउनुहोस्"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> का बबलसम्बन्धी सेटिङहरू"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> का बबलहरूलाई अनुमति दिने हो?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"अस्वीकार गर्नुहोस्"</string>
<string name="yes_bubbles" msgid="668809525728633841">"अनुमति दिनुहोस्"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"मलाई पछि सोध्नुहोस्"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> को <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> का <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> र थप <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"सार्नुहोस्"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"शीर्ष भागको बायाँतिर सार्नुहोस्"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"सिरानमा दायाँतिर सार्नुहोस्"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"पुछारमा बायाँतिर सार्नुहोस्"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"पुछारमा दायाँतिर सार्नुहोस्"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index fe0ee746a912..bad9821835ea 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Gebruik de oplader die bij je apparaat is geleverd"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Instellingen"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Batterijbesparing inschakelen?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Over Batterijbesparing"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Inschakelen"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Batterijbesparing inschakelen"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Instellingen"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"De gebruiker die momenteel is ingelogd op dit apparaat, kan USB-foutopsporing niet inschakelen. Als je deze functie wilt gebruiken, schakel je naar de primaire gebruiker."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-poort uitgeschakeld"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"De USB-poort is uitgeschakeld en detecteert geen accessoires, zodat je apparaat wordt beschermd tegen vloeistof en vuil.\n\nJe ontvangt een melding wanneer het weer veilig is om de USB-poort te gebruiken."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-poort kan opladers en accessoires detecteren"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB inschakelen"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom om scherm te vullen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rek uit v. schermvulling"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Ontgrendelen zonder je vingerafdruk te gebruiken"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Gezicht scannen"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Verzenden"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Meldingen beheren"</string>
<string name="unlock_label" msgid="8779712358041029439">"ontgrendelen"</string>
<string name="phone_label" msgid="2320074140205331708">"telefoon openen"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"spraakassistent openen"</string>
<string name="camera_label" msgid="7261107956054836961">"camera openen"</string>
<string name="cancel" msgid="6442560571259935130">"Annuleren"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Gebied voor Help-berichten"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Bevestigen"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Opnieuw proberen"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Raak de vingerafdruksensor aan"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobiele data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobiele data aan"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobiele data uit"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Gebruik van gegevens is niet ingesteld"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Uit"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-tethering."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Vliegtuigmodus."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Vliegtuigmodus ingeschakeld."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"totale stilte"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"alleen wekkers"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Niet storen."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Niet storen uitgeschakeld."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Niet storen ingeschakeld."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Niet storen."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'Niet storen\' is uitgeschakeld."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\'Niet storen\' is ingeschakeld."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth uit."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth aan."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Locatieverzoeken actief"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Alle meldingen wissen."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Nog <xliff:g id="NUMBER_1">%s</xliff:g> meldingen in deze groep.</item>
<item quantity="one">Nog <xliff:g id="NUMBER_0">%s</xliff:g> melding in deze groep.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Instellingen voor meldingen"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>-instellingen"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Scherm wordt automatisch geroteerd."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screensaver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Tik op pictogrammen en houd ze vast voor meer opties"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Niet storen"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Niet storen"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Alleen prioriteit"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Alleen wekkers"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Totale stilte"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Batterijbesparing aan"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Vermindert de prestaties en achtergrondgegevens"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Batterijbesparing uitschakelen"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Vanaf nu legt <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> alles op je scherm vast, waaronder meldingen, wachtwoorden, foto\'s, berichten en betalingsgegevens."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> toestaan je scherm vast te leggen of te casten?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Tijdens het opnemen of casten kan <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> gevoelige informatie opvangen, zoals audio die je afspeelt of je wachtwoorden, betalingsgegevens, foto\'s en berichten."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Gevoelige informatie vrijgeven tijdens casten/opnemen"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Niet opnieuw weergeven"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Alles wissen"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Beheren"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Geluidsinstellingen"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Uitvouwen"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Samenvouwen"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatisch ondertitelen"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Ondertitelingstip sluiten"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Naar een ander uitvoerapparaat schakelen"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Scherm is vastgezet"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Het scherm blijft zichtbaar totdat je het losmaakt. Tik op Terug en Overzicht en houd deze vast om het scherm los te maken."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Deze meldingen stellen je op de hoogte"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Meestal sluit je deze meldingen. \nWil je ze blijven weergeven?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gereed"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Toepassen"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Deze meldingen blijven weergeven?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Meldingen stoppen"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Zonder geluid afleveren"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokkeren"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Blijven weergeven"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimaliseren"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Zonder geluid weergeven"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Rustige modus"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Stil blijven"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Mij waarschuwen"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Onderbrekende modus"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Blijven waarschuwen"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Meldingen uitschakelen"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Meldingen van deze app blijven weergeven?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Er wordt geen geluid gegenereerd voor geblokkeerde meldingen en ze worden nergens weergegeven. In de instellingen kun je opheffen dat meldingen worden geblokkeerd."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Stille meldingen worden in het meldingenpaneel weergegeven, maar niet op het vergrendelingsscherm, ze worden getoond in een banner of er wordt een geluid voor ze afgespeeld."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Deze meldingen laten een geluid horen en worden weergegeven in het meldingenpaneel, in de statusbalk en op het vergrendelingsscherm"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Deze meldingen kunnen niet worden uitgeschakeld"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Deze groep meldingen kan hier niet worden geconfigureerd"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Deze app gebruikt de camera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Deze app gebruikt de microfoon."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Agenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Weergeven met volumeknoppen"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Niet storen"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Niet storen"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Volumeknoppen als sneltoets"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"\'Niet storen\' afsluiten bij volume omhoog"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"\'Niet storen\' afsluiten bij volume omhoog"</string>
<string name="battery" msgid="7498329822413202973">"Batterij"</string>
<string name="clock" msgid="7416090374234785905">"Klok"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ga naar browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobiele data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wifi is uitgeschakeld"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth is uitgeschakeld"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\'Niet storen\' is uitgeschakeld"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Instellingen"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> gebruikt je <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Apps gebruiken je <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Gebruikt:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> apps gebruiken je <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> app gebruikt je <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Privacyinstellingen"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App die je <xliff:g id="TYPES_LIST">%s</xliff:g> gebruikt"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps die je <xliff:g id="TYPES_LIST">%s</xliff:g> gebruiken"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" en "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"camera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"locatie"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microfoon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> andere apps</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> andere app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensoren uit"</string>
<string name="device_services" msgid="1191212554435440592">"Apparaatservices"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Geen titel"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tik om deze app opnieuw te starten en te openen op het volledige scherm."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> openen"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Instellingen voor meldingen voor <xliff:g id="APP_NAME">%1$s</xliff:g> openen"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Ballonnen van deze app toestaan?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokkeren"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Instellingen voor <xliff:g id="APP_NAME">%1$s</xliff:g>-ballonnen"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Ballonnen van <xliff:g id="APP_NAME">%1$s</xliff:g> toestaan?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Weigeren"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Toestaan"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Later vragen"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> van <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> van <xliff:g id="APP_NAME">%2$s</xliff:g> en nog <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Verplaatsen"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Naar linksboven verplaatsen"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Naar rechtsboven verplaatsen"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Naar linksonder verplaatsen"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Naar rechtsonder verplaatsen"</string>
</resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 03d44134426e..4c68841cd27d 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ପାଇଁ ଥିବା ଚାର୍ଜର୍‌କୁ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ସେଟିଙ୍ଗ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଅନ୍ କରିବେ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ବ୍ୟାଟେରୀ ସେଭର୍ ବିଷୟରେ"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ଅନ୍‌ କରନ୍ତୁ"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଅନ୍ କରନ୍ତୁ"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ସେଟିଙ୍ଗ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ସମ୍ପ୍ରତି ସାଇନ୍‍-ଇନ୍‍ କରିଥିବା ୟୁଜର୍‍ ଜଣକ ଏହି ଡିଭାଇସରେ USB ଡିବଗିଙ୍ଗ ଅନ୍‍ କରିପାରିବେ ନାହିଁ। ଏହି ବୈଶିଷ୍ଟ୍ୟ ବ୍ୟବହାର କରିବାକୁ, ପ୍ରାଥମିକ ୟୁଜର୍‍ରେ ସାଇନ୍‍-ଇନ୍‍ କରନ୍ତୁ।"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB ପୋର୍ଟକୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ଆପଣଙ୍କ ଡିଭାଇସ୍‌କୁ ତରଳ ପଦାର୍ଥ ଏବଂ ଧୂଳିରୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ, USB ପୋର୍ଟକୁ ଅକ୍ଷମ କରାଯାଇଛି ଏବଂ ଏହା କୌଣସି ଉପକରଣ ଚିହ୍ନଟ କରିବ ନାହିଁ। \n\nUSB ପୋର୍ଟକୁ ପୁଣିି ବ୍ୟବହାର କରିବାକୁ ସୁରକ୍ଷିତ ହେଲେ ଆପଣଙ୍କୁ ସୂଚିତ କରାଯିବ।"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ଚାର୍ଜର୍‍ ଏବଂ ଆକ୍ସେସରିଗୁଡ଼ିକୁ ଚିହ୍ନଟ କରିବାକୁ USB ପୋର୍ଟ ସକ୍ଷମ କରାଯାଇଛି"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ସ୍କ୍ରୀନ ଭରିବା ପାଇଁ ଜୁମ୍ କରନ୍ତୁ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ସ୍କ୍ରୀନ୍‌କୁ ଭରିବା ପାଇଁ ଟାଣନ୍ତୁ"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ସ୍କ୍ରୀନଶଟ୍‌"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ଆଙ୍ଗୁଠିଚିହ୍ନ ବ୍ୟବହାର ନକରି ଅନଲକ୍‍ କରନ୍ତୁ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ଫେସ୍ ସ୍କାନିଙ୍ଗ କରାଯାଉଛି"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ପଠାନ୍ତୁ"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="unlock_label" msgid="8779712358041029439">"ଅନଲକ୍‌"</string>
<string name="phone_label" msgid="2320074140205331708">"ଫୋନ୍‌ ଖୋଲନ୍ତୁ"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ଭଏସ୍‍ ସହାୟକ ଖୋଲନ୍ତୁ"</string>
<string name="camera_label" msgid="7261107956054836961">"କ୍ୟାମେରା ଖୋଲନ୍ତୁ"</string>
<string name="cancel" msgid="6442560571259935130">"କ୍ୟାନ୍ସଲ୍‍ କରନ୍ତୁ"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"ସାହାଯ୍ୟ ମେସେଜ୍ କ୍ଷେତ୍ର"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ସେନସର୍‌କୁ ଛୁଅଁନ୍ତୁ"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ମୋବାଇଲ୍‌ ଡାଟା"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ମୋବାଇଲ୍‌ ଡାଟା ଅନ୍‍"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ମୋବାଇଲ୍‌ ଡାଟା ବନ୍ଦ ଅଛି"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ବ୍ୟବହୃତ ଡାଟା ପାଇଁ ସେଟ୍ ହୋଇନାହିଁ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ଅଫ୍ ଅଛି"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ବ୍ଲୁ-ଟୂଥ୍‍ ଟିଥରିଙ୍ଗ।"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ଏରୋପ୍ଲେନ୍‍ ମୋଡ୍‌।"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ଏୟାର୍‌ପ୍ଲେନ୍‌ ମୋଡ୍‌କୁ ଚାଲୁ କରାଯାଇଛି।"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ସମ୍ପୂର୍ଣ୍ଣ ନିରବ"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"କେବଳ ଆଲାର୍ମ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ।"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅଫ୍‍ କରାଯାଇଛି।"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅନ୍ କରଯାଇଛି।"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\"କୁ ବନ୍ଦ କରାଯାଇଛି।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଚାଲୁ ଅଛି।"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ବ୍ଲୁ-ଟୂଥ୍‍‌।"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ବ୍ଲୁ-ଟୂଥ୍‌ ଅଫ୍ ଅଛି।"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ବ୍ଲୁ-ଟୂଥ୍‍‍ ଅନ୍ ଅଛି।"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ଲୋକେଶନ୍‍ ଅନୁରୋଧ ସକ୍ରିୟ ଅଛି"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ସମସ୍ତ ବିଜ୍ଞପ୍ତି ଖାଲି କରନ୍ତୁ।"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">ଭିତରେ ଆଉ <xliff:g id="NUMBER_1">%s</xliff:g>ଟି ଅଧିକ ବିଜ୍ଞପ୍ତି ରହିଛି।</item>
<item quantity="one">ଭିତରେ ଆଉ <xliff:g id="NUMBER_0">%s</xliff:g>ଟି ଅଧିକ ବିଜ୍ଞପ୍ତି ରହିଛି।</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"ବିଜ୍ଞପ୍ତି ସେଟିଙ୍ଗ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ସେଟିଙ୍ଗ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ସ୍କ୍ରୀନ୍‍ ସ୍ୱଚାଳିତ ଭାବେ ବୁଲିବ।"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ସ୍କ୍ରୀନ୍‌ ସେଭର୍‌"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ଇଥରନେଟ୍‌"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ଅଧିକ ବିକଳ୍ପ ପାଇଁ ଆଇକନ୍‌କୁ ସ୍ପର୍ଶ କରି ଧରିରଖନ୍ତୁ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\""</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"କେବଳ ପ୍ରାଥମିକତା"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"କେବଳ ଆଲାର୍ମ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ସମ୍ପୂର୍ଣ୍ଣ ନୀରବ"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଅନ୍‌ ଅଛି"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"କାର୍ଯ୍ୟ ସମ୍ପାଦନ ଓ ବ୍ୟାକ୍‌ଗ୍ରାଉଣ୍ଡ ଡାଟା କମ୍ କରନ୍ତୁ"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ବ୍ୟାଟେରୀ ସେଭର୍‌ ଅଫ୍‍ କରନ୍ତୁ"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"ବିଜ୍ଞପ୍ତି, ପାସ୍‍ୱର୍ଡ, ଫଟୋ, ମେସେଜ୍ ଏବଂ ପେମେଣ୍ଟ ସୂଚନା ସହ ଆପଣଙ୍କ ସ୍କ୍ରିନ୍‍‍ରେ ସବୁକିଛି କ୍ୟାପ୍‍ଚର୍ କରିବା <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ଆରମ୍ଭ କରିବ।"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"ଆପଣଙ୍କର ସ୍କ୍ରିନ୍ କାଷ୍ଟ ବା ରେକର୍ଡ କରିବାକୁ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ଅନୁୁୁମତି ଦେବେ?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ରେକର୍ଡ କିମ୍ବା କାଷ୍ଟ କରିବା ସମୟରେ, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ଯେକୌଣସି ସମ୍ବେଦନଶୀଳ ସୂଚନା ଯେପରିକି ଆପଣଙ୍କ ଦ୍ବାରା ଚଲାଯାଇଥିବା ଅଡିଓ, ଏବଂ ଆପଣଙ୍କର ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକ, ପେମେଣ୍ଟ ସୂଚନା, ଫଟୋ ଏବଂ ମେସେଜ୍‌ଗୁଡ଼ିକୁ କ୍ୟାପଚର୍ କରିପାରିବ।"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"କାଷ୍ଟିଂ/ରେକର୍ଡିଂ ସମୟରେ ସମ୍ବେଦନଶୀଳତା ଦେଖାନ୍ତୁ"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ପୁଣି ଦେଖାନ୍ତୁ ନାହିଁ"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ସମସ୍ତ ଖାଲି କରନ୍ତୁ"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"ପରିଚାଳନା କରନ୍ତୁ"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ସାଉଣ୍ଡ ସେଟିଙ୍ଗ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"ବଢ଼ାନ୍ତୁ"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ଛୋଟ କରନ୍ତୁ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ସ୍ବଚାଳିତ କ୍ୟାପ୍ସନ୍ ମିଡିଆ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"କ୍ୟାପ୍ସନ୍‌ଗୁଡ଼ିିକର ଟିପ୍ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ଆଉଟପୁଟ୍ ଡିଭାଇସ୍‌କୁ ଯାଆନ୍ତୁ"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ସ୍କ୍ରିନକୁ ପିନ୍‌ କରାଯାଇଛି"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"ଆପଣ ଅନପିନ୍‍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହା ଦେଖାଉଥିବ। ଅନପିନ୍‍ କରିବାକୁ ସ୍ପର୍ଶ କରି ଧରିରଖନ୍ତୁ ଓ ଦେଖନ୍ତୁ।"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡିକ ଆପଣଙ୍କୁ ଆଲର୍ଟ କରିବ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"ସାଧାରଣତଃ ଆପଣ ଏହି ବିଜ୍ଞପ୍ତିକୁ ଖାରଜ କରିଦିଅନ୍ତି। \n ସେଗୁଡ଼ିକୁ ଦେଖାଇବା ଜାରି ରଖିବେ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"ହୋଇଗଲା"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"ଲାଗୁ କରନ୍ତୁ"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖାଇବା ଜାରି ରଖିବେ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"ବିଜ୍ଞପ୍ତିକୁ ଦେଖାଇବା ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"ନିରବରେ ବିତରଣ"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ବ୍ଲକ୍ କରନ୍ତୁ"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ଦେଖାଇବା ଜାରି ରଖନ୍ତୁ"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ଛୋଟ କରନ୍ତୁ"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"ନିରବରେ ଦେଖାନ୍ତୁ"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"ମୃଦୁ"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ନୀରବ ରହନ୍ତୁ"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"ମୋତେ ଆଲର୍ଟ କରନ୍ତୁ"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"ପ୍ରତିବନ୍ଧକ"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ଆଲର୍ଟ କରିବା ଜାରି ରଖନ୍ତୁ"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"ବିଜ୍ଞପ୍ତି ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ଏହି ଆପ୍‌ରୁ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖାଇବା ଜାରି ରଖିବେ?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ବ୍ଲକ୍ ହୋଇଥିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ କେଉଁଠି ଦେଖାଯାଆନ୍ତି ନାହିଁ କିମ୍ବା ଶବ୍ଦ କରନ୍ତି ନାହିଁ। ଆପଣ ସେଟିଂସ୍‌ରେ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଅନ୍‌ବ୍ଲକ୍ କରିପାରିବେ।"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ନୀରବ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଶେଡ୍‌ରେ ଦେଖାଯାଏ, କିନ୍ତୁ ଲକ୍ ସ୍କ୍ରୀନ୍‌ରେ ଦେଖାଯାଏ ନାହିଁ, ଏକ ବ୍ୟାନର୍ ଭାବେ ଉପସ୍ଥାପନ ହୁଏ, ଏବଂ ଏକ ଶବ୍ଦ କରେ।"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ସାଉଣ୍ଡ କରିବ ଏବଂ ବିଜ୍ଞପ୍ତି ଡ୍ରୟର୍, ସ୍ଥିତି ବାର୍, ଏବଂ ଲକ୍ ସ୍କ୍ରିନ୍‍‍ରେ ଦେଖାଯିବ"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ବନ୍ଦ କରିହେବ ନାହିଁ"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> ମାଧ୍ୟମରେ"</string>
<string name="appops_camera" msgid="8100147441602585776">"ଏହି ଆପ୍ କ୍ୟାମେରା ବ୍ୟବହାର କରୁଛି।"</string>
<string name="appops_microphone" msgid="741508267659494555">"ଏହି ଆପ୍, ମାଇକ୍ରୋଫୋନ୍‍ ବ୍ୟବହାର କରୁଛି।"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"କ୍ୟାଲେଣ୍ଡର୍"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ଭଲ୍ୟୁମ୍‍ କଣ୍ଟ୍ରୋଲ୍‌ ସହ ଦେଖାନ୍ତୁ"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ଭଲ୍ୟୁମ ବଟନ୍‍ ଶର୍ଟକଟ୍‍"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ଭଲ୍ୟୁମ୍‍ ବଢ଼ାଇ \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\"ରୁ ବାହାରି ଯାଆନ୍ତୁ"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ଭଲ୍ୟୁମ୍‍ ବଢ଼ାଇ \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\"ରୁ ବାହାରି ଯାଆନ୍ତୁ"</string>
<string name="battery" msgid="7498329822413202973">"ବ୍ୟାଟେରୀ"</string>
<string name="clock" msgid="7416090374234785905">"ଘଣ୍ଟା"</string>
<string name="headset" msgid="4534219457597457353">"ହେଡସେଟ୍‍"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ବ୍ରାଉଜର୍‌କୁ ଯାଆନ୍ତୁ"</string>
<string name="mobile_data" msgid="7094582042819250762">"ମୋବାଇଲ୍‌ ଡାଟା"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"ୱାଇ-ଫାଇ ଅଫ୍‍ ଅଛି"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ବ୍ଲୁ-ଟୂଥ୍‍‌ ଅଫ୍ ଅଛି"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅଫ୍‍ ଅଛି"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ସେଟିଙ୍ଗ"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ବୁଝିଲି"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI ହିପ୍ ଡମ୍ପ୍ କରନ୍ତୁ"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g>ଟି ଆପ୍ସ</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ଆପ୍</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ଆପଣଙ୍କ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ବ୍ୟବହାର କରୁଛନ୍ତି।"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ଆପ୍ଲିକେସନ୍‍ଗୁଡିକ ଆପଣଙ୍କ <xliff:g id="TYPES_LIST">%s</xliff:g> ବ୍ୟବହାର କରୁଛନ୍ତି।"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ବ୍ୟବହାରରେ:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g>ଟି ଆପ୍ଲିକେସନ୍ ଆପଣଙ୍କର <xliff:g id="TYPE_5">%2$s</xliff:g> ବ୍ୟବହାର କରୁଛନ୍ତି।</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g>ଟି ଆପ୍ଲିକେସନ୍ ଆପଣଙ୍କର <xliff:g id="TYPE_1">%2$s</xliff:g>ବ୍ୟବହାର କରୁଛନ୍ତି।</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ବୁଝିଗଲି"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ଗୋପନୀୟତା ସେଟିଂସ୍"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ଆପ୍‍ ଆପଣଙ୍କ <xliff:g id="TYPES_LIST">%s</xliff:g> ବ୍ୟବହାର କରୁଛି"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ଆପ୍ସ ଆପଣଙ୍କ <xliff:g id="TYPES_LIST">%s</xliff:g> ବ୍ୟବହାର କରୁଛନ୍ତି"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ଏବଂ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"କ୍ୟାମେରା"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ଲୋକେସନ୍‍"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"ମାଇକ୍ରୋଫୋନ୍"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g>ଟି ଅନ୍ୟ ଆପ୍‍</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g>ଟି ଅନ୍ୟ ଆପ୍‍</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ସେନ୍ସର୍‍ଗୁଡ଼ିକ ବନ୍ଦ ଅଛି"</string>
<string name="device_services" msgid="1191212554435440592">"ଡିଭାଇସ୍‍ ସେବାଗୁଡିକ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"କୌଣସି ଶୀର୍ଷକ ନାହିଁ"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ଏହି ଆପ୍‌କୁ ରିଷ୍ଟାର୍ଟ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ ଏବଂ ଫୁଲ୍‌ସ୍କ୍ରିନ୍‌କୁ ଯାଆନ୍ତୁ।"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଖୋଲନ୍ତୁ"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> ପାଇଁ ବିଜ୍ଞପ୍ତି ସେଟିଂସ୍ ଖୋଲନ୍ତୁ"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"ଏହି ଆପ୍ ଠାରୁ ବବଲ୍ ଅନୁମତି କରିବେ?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ବ୍ଲକ୍ କରନ୍ତୁ"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବବଲ୍‌ଗୁଡ଼ିକ ପାଇଁ ସେଟିଂସ୍"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g>ରୁ ବବ୍‌ଲ୍‌ଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତୁ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"ମୋତେ ପରେ ପଚାରନ୍ତୁ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>ରୁ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> ଏବଂ ଅଧିକ <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>ଟିରୁ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ନିଅନ୍ତୁ"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ଉପର ବାମକୁ ନିଅନ୍ତୁ"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ଉପର-ଡାହାଣକୁ ନିଅନ୍ତୁ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ତଳ ବାମକୁ ନିଅନ୍ତୁ"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ତଳ ଡାହାଣକୁ ନିଅନ୍ତୁ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index acd9bd22e8fd..d8d5429d3ef6 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ਆਪਣੇ ਡੀਵਾਈਸ ਨਾਲ ਮਿਲੇ ਚਾਰਜਰ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ਸੈਟਿੰਗਾਂ"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"ਕੀ ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"ਬੈਟਰੀ ਸੇਵਰ ਬਾਰੇ"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ਚਾਲੂ ਕਰੋ"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਕਰੋ"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ਸੈਟਿੰਗਾਂ"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB ਪੋਰਟ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਪਾਣੀ ਅਤੇ ਧੂੜ-ਮਿੱਟੀ ਤੋਂ ਬਚਾਉਣ ਲਈ, USB ਪੋਰਟ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਕੋਈ ਵੀ ਐਕਸੈਸਰੀ ਪਛਾਣੀ ਨਹੀਂ ਜਾਵੇਗੀ।\n\nUSB ਪੋਰਟ ਨੂੰ ਦੁਬਾਰਾ ਵਰਤਣਾ ਸੁਰੱਖਿਅਤ ਹੋਣ \'ਤੇ ਤੁਹਾਨੂੰ ਸੂਚਿਤ ਕੀਤਾ ਜਾਵੇਗਾ।"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ਚਾਰਜਰਾਂ ਅਤੇ ਉਪਸਾਧਨਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ USB ਪੋਰਟ ਚਾਲੂ ਹੈ"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB ਚਾਲੂ ਕਰੋ"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ਸਕ੍ਰੀਨ ਭਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ਸਕ੍ਰੀਨ ਭਰਨ ਲਈ ਸਟ੍ਰੈਚ ਕਰੋ"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ਆਪਣਾ ਫਿੰਗਰਪ੍ਰਿੰਟ ਵਰਤੇ ਬਿਨਾਂ ਅਣਲਾਕ ਕਰੋ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ਚਿਹਰਾ ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ਭੇਜੋ"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"ਸੂਚਨਾਵਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
<string name="unlock_label" msgid="8779712358041029439">"ਅਣਲਾਕ ਕਰੋ"</string>
<string name="phone_label" msgid="2320074140205331708">"ਫ਼ੋਨ ਖੋਲ੍ਹੋ"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ਅਵਾਜ਼ੀ ਸਹਾਇਕ ਖੋਲ੍ਹੋ"</string>
<string name="camera_label" msgid="7261107956054836961">"ਕੈਮਰਾ ਖੋਲ੍ਹੋ"</string>
<string name="cancel" msgid="6442560571259935130">"ਰੱਦ ਕਰੋ"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"ਮਦਦ ਸੁਨੇਹਾ ਖੇਤਰ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"ਪੁਸ਼ਟੀ ਕਰੋ"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ਮੋਬਾਈਲ ਡਾਟਾ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ਮੋਬਾਈਲ ਡਾਟਾ ਚਾਲੂ"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ਮੋਬਾਈਲ ਡਾਟਾ ਬੰਦ"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ਡਾਟਾ ਵਰਤਣ ਲਈ ਸੈੱਟ ਨਹੀਂ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ਬੰਦ"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ਬਲੂਟੁੱਥ ਟੈਦਰਿੰਗ।"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ਏਅਰਪਲੇਨ ਮੋਡ।"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ਏਅਰਪਲੇਨ ਮੋਡ ਚਾਲੂ ਹੋਇਆ"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ਸੰਪੂਰਨ ਖਾਮੋਸ਼ੀ"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ਸਿਰਫ਼ ਅਲਾਰਮ"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ।"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਬੰਦ ਕੀਤਾ।"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਚਾਲੂ ਕੀਤਾ।"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਨੂੰ ਬੰਦ ਕਰੋ।"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ਬਲੂਟੁੱਥ।"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth ਬੰਦ।"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ਚਾਲੂ।"</string>
@@ -269,11 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"ਨਿਰਧਾਰਿਤ ਸਥਾਨ ਸੇਵਾ ਬੇਨਤੀਆਂ ਸਕਿਰਿਆ"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਹਟਾਓ।"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ਅਤੇ <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">ਅੰਦਰ <xliff:g id="NUMBER_1">%s</xliff:g> ਹੋਰ ਸੂਚਨਾਵਾਂ।</item>
<item quantity="other">ਅੰਦਰ <xliff:g id="NUMBER_1">%s</xliff:g> ਹੋਰ ਸੂਚਨਾਵਾਂ।</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"ਸੂਚਨਾ ਸੈਟਿੰਗਾਂ"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ਸੈਟਿੰਗਾਂ"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"ਸਕ੍ਰੀਨ ਆਟੋਮੈਟਿਕਲੀ ਰੋਟੇਟ ਕਰੇਗੀ।"</string>
@@ -286,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"ਸਕ੍ਰੀਨ ਸੇਵਰ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ਈਥਰਨੈਟ"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ਹੋਰ ਵਿਕਲਪਾਂ ਲਈ ਪ੍ਰਤੀਕ ਨੂੰ ਸਪੱਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ਕੇਵਲ ਤਰਜੀਹੀ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"ਕੇਵਲ ਅਲਾਰਮ"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ਪੂਰਾ ਸ਼ਾਂਤ"</string>
@@ -437,8 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਹੈ"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਪਿਛੋਕੜ ਡਾਟਾ ਘੱਟ ਕਰਦਾ ਹੈ"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ਬੈਟਰੀ ਸੇਵਰ ਬੰਦ ਕਰੋ"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"ਤੁਹਾਡੀ ਸਕ੍ਰੀਨ \'ਤੇ ਸੂਚਨਾਵਾਂ, ਪਾਸਵਰਡਾਂ, ਫ਼ੋਟੋਆਂ, ਸੁਨੇਹਿਆਂ ਅਤੇ ਭੁਗਤਾਨ ਜਾਣਕਾਰੀ ਸਮੇਤ, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ਸਭ ਕੁਝ ਕੈਪਚਰ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰ ਦੇਵੇਗਾ।"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"ਕੀ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ਨੂੰ ਆਪਣੀ ਸਕ੍ਰੀਨ ਲਈ ਰਿਕਾਰਡ ਜਾਂ ਕਾਸਟ ਕਰਨ ਦੇਣਾ ਹੈ?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ਰਿਕਾਰਡਿੰਗ ਜਾਂ ਕਾਸਟ ਕਰਨ ਵੇਲੇ, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ਵਲੋਂ ਤੁਹਾਡੇ ਵੱਲੋਂ ਚਲਾਏ ਆਡੀਓ ਅਤੇ ਤੁਹਾਡੇ ਪਾਸਵਰਡਾਂ, ਭੁਗਤਾਨ ਜਾਣਕਾਰੀ, ਫ਼ੋਟੋਆਂ ਅਤੇ ਸੁਨੇਹਿਆਂ ਵਰਗੀ ਕੋਈ ਵੀ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਣਕਾਰੀ ਕੈਪਚਰ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"ਕਾਸਟ ਕਰਨ/ਰਿਕਾਰਡਿੰਗ ਕਰਨ ਵੇਲੇ ਸੰਵੇਦਨਸ਼ੀਲ ਜਾਣਕਾਰੀ ਦਾ ਖੁਲਾਸਾ ਹੋ ਸਕਦਾ ਹੈ"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ਸਭ ਕਲੀਅਰ ਕਰੋ"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
@@ -513,6 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ਧੁਨੀ ਸੈਟਿੰਗਾਂ"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"ਵਿਸਤਾਰ ਕਰੋ"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ਨਸ਼ਟ ਕਰੋ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ਸਵੈਚਲਿਤ ਸੁਰਖੀ ਮੀਡੀਆ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ਬੰਦ ਸੁਰਖੀਆਂ ਦੇ ਨੁਕਤੇ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ਆਊਟਪੁੱਟ ਡੀਵਾਈਸ ਵਰਤੋ"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"ਇਹ ਇਸ ਨੂੰ ਤਦ ਤੱਕ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਰੱਖਦਾ ਹੈ ਜਦ ਤੱਕ ਤੁਸੀਂ ਅਨਪਿੰਨ ਨਹੀਂ ਕਰਦੇ। ਅਨਪਿੰਨ ਕਰਨ ਲਈ \'ਪਿੱਛੇ\' ਅਤੇ \'ਰੂਪ-ਰੇਖਾ\' ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
@@ -613,18 +620,30 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ਇਹ ਸੂਚਨਾਵਾਂ ਤੁਹਾਨੂੰ ਸੁਚੇਤ ਕਰਨਗੀਆਂ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"ਤੁਸੀਂ ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਆਮ ਤੌਰ \'ਤੇ ਖਾਰਜ ਕਰਦੇ ਹੋ। \nਕੀ ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਦਿਖਾਉਣਾ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"</string>
<string name="inline_done_button" msgid="492513001558716452">"ਹੋ ਗਿਆ"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"ਕੀ ਇਨ੍ਹਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਦਿਖਾਉਣਾ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"ਸੂਚਨਾਵਾਂ ਬੰਦ ਕਰੋ"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"ਚੁੱਪ-ਚਪੀਤੇ ਡਿਲੀਵਰ ਕਰੋ"</string>
<string name="inline_block_button" msgid="8735843688021655065">"ਬਲਾਕ ਕਰੋ"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"ਦਿਖਾਉਣਾ ਜਾਰੀ ਰੱਖੋ"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ਛੋਟਾ ਕਰੋ"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"ਚੁੱਪ-ਚਪੀਤੇ ਦਿਖਾਓ"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ਚੁੱਪ ਰਹੋ"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"ਮੈਨੂੰ ਸੁਚੇਤ ਕਰੋ"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ਸੁਚੇਤ ਰਖੋ"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ਕੀ ਇਸ ਐਪ ਤੋਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਦਿਖਾਉਣਾ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"ਬਲਾਕ ਕੀਤੀਆਂ ਸੂਚਨਾਵਾਂ ਕਿਤੇ ਵੀ ਨਹੀਂ ਦਿਸਦੀਆਂ ਜਾਂ ਕੋਈ ਧੁਨੀ ਨਹੀਂ ਵਜਾਉਂਦੀਆਂ। ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਸੂਚਨਾਵਾਂ ਨੂੰ ਅਣਬਲਾਕ ਕਰ ਸਕਦੇ ਹੋ।"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"ਚੁੱਪ ਸੂਚਨਾਵਾਂ ਭਾਹ ਵਿੱਚ ਦਿਸਦੀਆਂ ਹਨ ਪਰ ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ, ਬੈਨਰ ਦੇ ਰੂਪ ਵਿੱਚ ਨਹੀਂ ਦਿਸਦੀਆਂ ਹਨ ਅਤੇ ਇੱਕ ਧੁਨੀ ਵਜਾਉਂਦੀਆਂ ਹਨ।"</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ਇਨ੍ਹਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਰਾਹੀਂ"</string>
<string name="appops_camera" msgid="8100147441602585776">"ਇਹ ਐਪ ਕੈਮਰੇ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ।"</string>
<string name="appops_microphone" msgid="741508267659494555">"ਇਹ ਐਪ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ।"</string>
@@ -703,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"ਕੈਲੰਡਰ"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"ਵੌਲਿਊਮ ਕੰਟਰੋਲਾਂ ਨਾਲ ਦਿਖਾਓ"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ਵੌਲਿਊਮ ਬਟਨ ਸ਼ਾਰਟਕੱਟ"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ਅਵਾਜ਼ ਉੱਚੀ ਹੋਣ \'ਤੇ ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ ਤੋਂ ਬਾਹਰ ਜਾਓ"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ਅਵਾਜ਼ ਉੱਚੀ ਹੋਣ \'ਤੇ \'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਤੋਂ ਬਾਹਰ ਜਾਓ"</string>
<string name="battery" msgid="7498329822413202973">"ਬੈਟਰੀ"</string>
<string name="clock" msgid="7416090374234785905">"ਘੜੀ"</string>
<string name="headset" msgid="4534219457597457353">"ਹੈੱਡਸੈੱਟ"</string>
@@ -846,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ਬ੍ਰਾਊਜ਼ਰ \'ਤੇ ਜਾਓ"</string>
<string name="mobile_data" msgid="7094582042819250762">"ਮੋਬਾਈਲ ਡਾਟਾ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"ਵਾਈ-ਫਾਈ ਬੰਦ ਹੈ"</string>
<string name="bt_is_off" msgid="2640685272289706392">"ਬਲੂਟੁੱਥ ਬੰਦ ਹੈ"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਬੰਦ ਹੈ"</string>
@@ -875,36 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ਸੈਟਿੰਗਾਂ"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ਸਮਝ ਲਿਆ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI ਹੀਪ ਡੰਪ ਕਰੋ"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> ਐਪ</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ਐਪਾਂ</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ਤੁਹਾਡੇ <xliff:g id="TYPES_LIST">%2$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ।"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ਐਪਲੀਕੇਸ਼ਨਾਂ ਤੁਹਾਡੇ <xliff:g id="TYPES_LIST">%s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀਆਂ ਹਨ।"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ਵਰਤੋਂ ਵਿੱਚ:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ਐਪਲੀਕੇਸ਼ਨ ਤੁਹਾਡੇ <xliff:g id="TYPE_5">%2$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ।</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ਐਪਲੀਕੇਸ਼ਨਾਂ ਤੁਹਾਡੇ <xliff:g id="TYPE_5">%2$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀਆਂ ਹਨ।</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ਸਮਝ ਲਿਆ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"ਪਰਦੇਦਾਰੀ ਸੈਟਿੰਗਾਂ"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ਤੁਹਾਡੇ <xliff:g id="TYPES_LIST">%s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਐਪ"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ਤੁਹਾਡੇ <xliff:g id="TYPES_LIST">%s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀਆਂ ਐਪਾਂ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ਅਤੇ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ਕੈਮਰਾ"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ਟਿਕਾਣਾ"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> ਹੋਰ ਐਪ</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> ਹੋਰ ਐਪਾਂ</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"ਸੈਂਸਰ ਬੰਦ ਕਰੋ"</string>
<string name="device_services" msgid="1191212554435440592">"ਡੀਵਾਈਸ ਸੇਵਾਵਾਂ"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ਕੋਈ ਸਿਰਲੇਖ ਨਹੀਂ"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ ਅਤੇ ਪੂਰੀ-ਸਕ੍ਰੀਨ ਮੋਡ \'ਤੇ ਜਾਓ।"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਖੋਲ੍ਹੋ"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਲਈ ਸੂਚਨਾ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"ਕੀ ਇਸ ਐਪ ਤੋਂ ਬੁਲਬੁਲੇ ਆਉਣ ਦੇਣੇ ਹਨ?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"ਬਲਾਕ ਕਰੋ"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਬੁਲਬੁਲਿਆਂ ਲਈ ਸੈਟਿੰਗਾਂ"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਤੋਂ ਬੁਲਬੁਲੇ ਆਉਣ ਦਿਓ?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ਮਨ੍ਹਾ ਕਰੋ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ਕਰਨ ਦਿਓ"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"ਮੈਨੂੰ ਬਾਅਦ ਵਿੱਚ ਪੁੱਛੋ"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> ਤੋਂ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> ਅਤੇ <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ਹੋਰਾਂ ਤੋਂ <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ਲਿਜਾਓ"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ਉੱਪਰ ਵੱਲ ਖੱਬੇ ਲਿਜਾਓ"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ਉੱਪਰ ਵੱਲ ਸੱਜੇ ਲਿਜਾਓ"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ਹੇਠਾਂ ਵੱਲ ਖੱਬੇ ਲਿਜਾਓ"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ਹੇਠਾਂ ਵੱਲ ਸੱਜੇ ਲਿਜਾਓ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index d00d349920bf..af4acd368877 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Użyj ładowarki dostarczonej z urządzeniem"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Ustawienia"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Włączyć Oszczędzanie baterii?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Informacje o Oszczędzaniu baterii"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Włącz"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Włączyć Oszczędzanie baterii?"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ustawienia"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Użytkownik obecnie zalogowany na tym urządzeniu nie może włączyć debugowania USB. Aby użyć tej funkcji, przełącz się na użytkownika głównego."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Port USB wyłączony"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Aby chronić urządzenie przed wilgocią i zanieczyszczeniami, port USB został wyłączony i nie wykryje żadnych akcesoriów.\n\nOtrzymasz powiadomienie, gdy będzie można znów bezpiecznie używać portu."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Port USB włączony, by wykrywać ładowarki i akcesoria"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Włącz USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Powiększ, aby wypełnić ekran"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Rozciągnij, aby wypełnić ekran"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Zrzut ekranu"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Odblokuj bez używania odcisku palca"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skanowanie twarzy"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Wyślij"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Zarządzanie powiadomieniami"</string>
<string name="unlock_label" msgid="8779712358041029439">"odblokuj"</string>
<string name="phone_label" msgid="2320074140205331708">"otwórz telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"otwórz pomoc głosową"</string>
<string name="camera_label" msgid="7261107956054836961">"otwórz aparat"</string>
<string name="cancel" msgid="6442560571259935130">"Anuluj"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Obszar komunikatu pomocy"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Potwierdź"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Spróbuj jeszcze raz"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Dotknij czytnika linii papilarnych"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobilna transmisja danych"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobilna transmisja danych włączona"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Wyłączona"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nie skonfigurowano do transmisji danych"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Wył."</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Thethering przez Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Tryb samolotowy."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Tryb samolotowy został włączony."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"całkowita cisza"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"tylko alarmy"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nie przeszkadzać."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Nieprzeszkadzanie wyłączone."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Nieprzeszkadzanie włączone."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Nie przeszkadzać."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Tryb Nie przeszkadzać został wyłączony."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Tryb Nie przeszkadzać został włączony."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth wyłączony."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth włączony."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Prośby o lokalizację są aktywne"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Usuń wszystkie powiadomienia."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="few">Jeszcze <xliff:g id="NUMBER_1">%s</xliff:g> powiadomienia w grupie.</item>
<item quantity="many">Jeszcze <xliff:g id="NUMBER_1">%s</xliff:g> powiadomień w grupie.</item>
<item quantity="other">Jeszcze <xliff:g id="NUMBER_1">%s</xliff:g> powiadomienia w grupie.</item>
<item quantity="one">Jeszcze <xliff:g id="NUMBER_0">%s</xliff:g> powiadomienie w grupie.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Ustawienia powiadomień"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Ustawienia aplikacji <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran zostanie obrócony automatycznie."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Wygaszacz ekranu"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Kliknij i przytrzymaj ikony, by wyświetlić więcej opcji"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Nie przeszkadzać"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Nie przeszkadzać"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Tylko priorytetowe"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Tylko alarmy"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Całkowita cisza"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Oszczędzanie baterii jest włączone"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Zmniejsza wydajność i ogranicza dane w tle"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Wyłącz Oszczędzanie baterii"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Aplikacja <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> zacznie rejestrować całą zawartość ekranu, w tym powiadomienia, hasła, zdjęcia, wiadomości i dane karty."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Zezwolić aplikacji <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> na rejestrowanie lub przesyłanie zawartości ekranu?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Podczas nagrywania lub przesyłania aplikacja <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> może rejestrować wszelkie informacje poufne, takie jak odtwarzany dźwięk czy podawane hasła, informacje o płatnościach, zdjęcia i wiadomości."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Ujawnianie poufnych informacji podczas przesyłania/nagrywania"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Nie pokazuj ponownie"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Ukryj wszystkie"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Zarządzaj"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ustawienia dźwięku"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozwiń"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Zwiń"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Autom. napisy do multimediów"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zamknij wskazówkę dotyczącą napisów"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Przełącz urządzenie wyjściowe"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekran jest przypięty"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ekran będzie widoczny, dopóki go nie odepniesz. Aby to zrobić, kliknij i przytrzymaj Wstecz oraz Przegląd."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Te powiadomienia będą Cię ostrzegać"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Zwykle odrzucasz te powiadomienia. \nNadal je pokazywać?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gotowe"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Zastosuj"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Nadal pokazywać te powiadomienia?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Zablokuj powiadomienia"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Wyświetlaj dyskretnie"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Zablokuj"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Pokazuj nadal"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimalizuj"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Pokazuj dyskretnie"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Subtelne"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Zachowaj wyciszenie"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Powiadom mnie"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Zakłócające pracę"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Powiadamiaj dalej"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Wyłącz powiadomienia"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Nadal pokazywać powiadomienia z tej aplikacji?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Zablokowane powiadomienia nie są wyświetlane ani sygnalizowane dźwiękiem. Powiadomienia możesz odblokować w ustawieniach."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Ciche powiadomienia pojawiają się w obszarze powiadomień, ale nie na ekranie blokady, nie pokazują baneru ani nie są sygnalizowane dźwiękiem."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Te powiadomienia będą sygnalizowane dźwiękiem i wyświetlane w panelu powiadomień, na pasku stanu oraz na ekranie blokady"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Tych powiadomień nie można wyłączyć"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Tej grupy powiadomień nie można tu skonfigurować"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"przez aplikację <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ta aplikacja używa aparatu."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ta aplikacja używa mikrofonu."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendarz"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Pokazuj z regulacją głośności"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Nie przeszkadzać"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Nie przeszkadzać"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Wł./wył. przyciskami głośności"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Wyłącz tryb Nie przeszkadzać przy zwiększaniu głośności"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Wyłączaj tryb Nie przeszkadzać przez zwiększanie głośności"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Zegar"</string>
<string name="headset" msgid="4534219457597457353">"Zestaw słuchawkowy"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Otwórz przeglądarkę"</string>
<string name="mobile_data" msgid="7094582042819250762">"Komórkowa transmisja danych"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi jest wyłączone"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth jest wyłączony"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Tryb Nie przeszkadzać jest wyłączony"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Ustawienia"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Zrzut stosu SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacje</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacji</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacji</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplikacja</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Aplikacja <xliff:g id="APP">%1$s</xliff:g> używa: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikacje używają: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Używane:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplikacje używają: <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="many"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacji używa: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacji używa: <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikacja używa: <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Ustawienia prywatności"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacje, które używają: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacje, które używają: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" i "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"aparat"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokalizacja"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> inn​ych aplikacji</item>
- <item quantity="many"><xliff:g id="NUM_APPS_1">%d</xliff:g> innej aplikacji</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> inne aplikacje</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> inna aplikacja</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Wyłącz czujniki"</string>
<string name="device_services" msgid="1191212554435440592">"Usługi urządzenia"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez tytułu"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Kliknij, by uruchomić tę aplikację ponownie i przejść w tryb pełnoekranowy."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otwórz: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Otwórz ustawienia powiadomień z aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Zezwolić na dymki z tej aplikacji?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Zablokuj"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Ustawienia dymków aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Zezwolić na dymki z aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Odmów"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Zezwól"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Zapytaj później"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> z aplikacji <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> z aplikacji <xliff:g id="APP_NAME">%2$s</xliff:g> i jeszcze <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Przenieś"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Przenieś w lewy górny róg"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Przenieś w prawy górny róg"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Przenieś w lewy dolny róg"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Przenieś w prawy dolny róg"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 23682b60261e..8b7449fe6fc6 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Usar o carregador que acompanha o dispositivo"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Configurações"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Ativar Economia de bateria?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Sobre a \"Economia de bateria\""</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ativar"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Ativar a Economia de bateria"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configurações"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"O usuário conectado a este dispositivo não pode ativar a depuração USB. Para usar esse recurso, mude para o usuário principal \"NAME\"."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Porta USB desativada"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para proteger seu dispositivo de líquidos e detritos, a porta USB está desativada e não detectará nenhum acessório.\n\nVocê receberá uma notificação quando for seguro usar a porta USB novamente."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Porta USB ativada para detectar carregadores e acessórios"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Ativar USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom p/ preencher a tela"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ampliar p/ preencher tela"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de tela"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloquear sem usar impressão digital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Verificando rosto"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gerenciar notificações"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string>
<string name="phone_label" msgid="2320074140205331708">"abrir telefone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"abrir assistência de voz"</string>
<string name="camera_label" msgid="7261107956054836961">"abrir câmera"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Área da mensagem de ajuda"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirmar"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Tentar novamente"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Toque no sensor de impressão digital"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Dados móveis"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Dados móveis ativados"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Dados móveis desativados"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Sem configuração para uso de dados"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desativados"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avião."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"O modo avião foi ativado."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silêncio total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"somente alarmes"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Não perturbe"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Não perturbe\" desativado."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Não perturbe\" ativado."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Não perturbe."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Não perturbe\" desativado."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Não perturbe\" ativado."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desativado."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ativado."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitações de localização ativas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"Mais <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Mais <xliff:g id="NUMBER_1">%s</xliff:g> notificações no grupo.</item>
<item quantity="other">Mais <xliff:g id="NUMBER_1">%s</xliff:g> notificações no grupo.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configurações de notificação"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configurações de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A tela girará automaticamente."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Protetor de tela"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Toque nos ícones e mantenha-os pressionados para ver mais opções"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Não perturbe"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Não perturbe"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Somente prioridade"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Somente alarmes"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silêncio total"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Economia de bateria ativada"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduz o desempenho e os dados em segundo plano"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desativar a Economia de bateria"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Tudo o que aparecer na sua tela, incluindo notificações, senhas, fotos, mensagens e informações de pagamento, será capturado pelo <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Permitir que <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> grave ou transmita sua tela?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Ao gravar ou transmitir, o <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pode capturar informações confidenciais, como áudios que você ouve e também senhas, informações de pagamento, fotos e mensagens."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposição de informações confidenciais durante transmissão/gravação"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Não mostrar novamente"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Limpar tudo"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gerenciar"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Configurações de som"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Recolher"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Transcrição automática"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Dica de legenda"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Alterar dispositivo de saída"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"A tela está fixada"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ela é mantida à vista até que seja liberada. Toque em Voltar e em Visão geral e mantenha essas opções pressionadas para liberar."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Essas notificações alertarão você"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Geralmente você dispensa essas notificações. \nQuer que elas continuem a ser exibidas?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Concluído"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicar"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Continuar mostrando essas notificações?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Bloquear notificações"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Notificar silenciosamente"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquear"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuar mostrando"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizar"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostrar silenciosamente"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Com discrição"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Continuar sem som"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Receber alerta"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Com interrupção"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continuar alertando"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desativar notificações"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuar mostrando notificações desse app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"As notificações bloqueadas não aparecem em nenhum lugar nem tocam sons. É possível desbloquear as notificações nas configurações."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"As notificações silenciosas aparecem na tonalidade, mas não na tela de bloqueio. Além disso, elas não apresentam um banner nem tocam sons."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Essas notificações emitirão um som e serão exibidas na gaveta de notificações, barra de status e tela de bloqueio"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Não é possível desativar essas notificações"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Não é possível configurar esse grupo de notificações aqui"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"pelo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Este app está usando a câmera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Este app está usando o microfone."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Agenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostrar com controles de volume"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Não perturbe"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Não perturbe"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Atalho de botões de volume"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Saia do modo \"Não perturbe\" aumentando o volume"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Saia do modo \"Não perturbe\" aumentando o volume"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Relógio"</string>
<string name="headset" msgid="4534219457597457353">"Fone de ouvido"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Abrir o navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Dados móveis"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"O Wi-Fi está desativado"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth desativado"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"O recurso Não perturbe está desativado"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Configurações"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Ok"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Despejar pilha SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"O app <xliff:g id="APP">%1$s</xliff:g> está usando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplicativos estão usando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Em uso:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicativo está usando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicativos estão usando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ok"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. de privacidade"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" e "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"câmera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"localização"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microfone"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> outro app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> outros apps</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desativados"</string>
<string name="device_services" msgid="1191212554435440592">"Serviços do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sem título"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Toque para reiniciar o app e usar tela cheia."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abra as configurações de notificação do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Permitir balões deste app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloquear"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Configurações de balões do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Permitir balões de <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Negar"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permitir"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Perguntar depois"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> mais <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mover"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mover para canto superior esquerdo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mover para canto superior direito"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mover para canto inferior esquerdo"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mover para canto inferior direito"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 58011629d9c5..104eb4591199 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Utilize o carregador fornecido com o dispositivo."</string>
<string name="battery_low_why" msgid="4553600287639198111">"Definições"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Pretende ativar a Poupança de bateria?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Acerca da Poupança de bateria"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ativar"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Ativar a Poupança de bateria"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Definições"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"O utilizador com sessão iniciada atualmente neste dispositivo não pode ativar a depuração USB. Para utilizar esta funcionalidade, mude para o utilizador principal."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Porta USB desativada"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para proteger o dispositivo contra líquidos ou resíduos, a porta USB está desativada e não irá detetar quaisquer acessórios.\n\nSerá notificado quando for seguro utilizar a porta USB novamente."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Porta USB ativada para detetar carregadores e acessórios"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Ativar USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom para preencher o ecrã"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Esticar p. caber em ec. int."</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de ecrã"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloquear sem utilizar a sua impressão digital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"A analisar o rosto…"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gerir notificações"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string>
<string name="phone_label" msgid="2320074140205331708">"abrir telemóvel"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"abrir assistente de voz"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Dados móveis"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Dados móveis ativados"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Dados móveis desativados"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Não definido para utilizar dados"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desativado"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Ligação Bluetooth via telemóvel."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo de avião"</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modo de avião ligado."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silêncio total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"apenas alarmes"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Não incomodar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Modo Não incomodar desativado."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Modo Não incomodar ativado."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desligado."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ligado."</string>
@@ -279,6 +277,7 @@
<item quantity="other">Mais <xliff:g id="NUMBER_1">%s</xliff:g> notificações no grupo.</item>
<item quantity="one">Mais <xliff:g id="NUMBER_0">%s</xliff:g> notificação no grupo.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Definições de notificação"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Definições do <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"O ecrã será rodado automaticamente."</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Proteção de ecrã"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Toque sem soltar nos ícones para obter mais opções."</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Não incomodar"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Apenas prioridade"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Apenas alarmes"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silêncio total"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Poupança de bateria ativada"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduz o desempenho e os dados de segundo plano"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desativar a Poupança de bateria"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Durante a gravação ou a transmissão, o <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pode capturar informações confidenciais, tais como o áudio reproduzido, palavras-passe, informações de pagamento, fotos e mensagens."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposição de informações confidenciais durante a transmissão/gravação"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Não mostrar de novo"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Limpar tudo"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gerir"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Definições de som"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Reduzir"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Multim. legendas automáticas"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sugestão de legendas"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Mudar de dispositivo de saída"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"O ecrã está fixado"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Esta opção mantém o item visível até o soltar. Toque sem soltar em Anterior e em Vista geral para soltar."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Estas notificações irão alertá-lo."</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Normalmente, ignora estas notificações. \nPretende continuar a mostrá-las?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Concluído"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicar"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Pretende continuar a ver estas notificações?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Parar notificações"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Publicar silenciosamente"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquear"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuar a mostrar"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizar"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostrar silenciosamente"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Silenciosas"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Continuar sem som"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Interruptivas"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continuar a alertar"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desativar notificações"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Pretende continuar a ver notificações desta aplicação?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"As notificações bloqueadas não são apresentadas nem reproduzem som. Pode desbloquear as notificações nas definições."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"As notificações silenciosas são apresentadas na sombra, mas não aparecem no ecrã de bloqueio, não apresentam uma faixa nem reproduzem som."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Estas notificações emitem um som e aparecem na gaveta de notificações, na barra de estado e no ecrã de bloqueio"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Não é possível desativar estas notificações."</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Não é possível configurar este grupo de notificações aqui."</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"através da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Esta aplicação está a utilizar a câmara."</string>
<string name="appops_microphone" msgid="741508267659494555">"Esta aplicação está a utilizar o microfone."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendário"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostrar com controlos de volume"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Não incomodar"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Atalho dos botões de volume"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Sair do modo Não incomodar ao aumentar o volume"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Relógio"</string>
<string name="headset" msgid="4534219457597457353">"Ausc. com microfone integrado"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Ir para o navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Dados móveis"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi desativado"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth desativado"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Não incomodar desativado"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Cp ár. di. da. SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"A aplicação <xliff:g id="APP">%1$s</xliff:g> está a utilizar o(a) <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"As aplicações estão a utilizar o(a) <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Compreendi"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Def. de privacidade"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicações que utilizam o(a) <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicações que utilizam o(a) <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" e "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"câmara"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desativados"</string>
<string name="device_services" msgid="1191212554435440592">"Serviços do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sem título"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Toque para reiniciar esta aplicação e ficar em ecrã inteiro."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir a aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Definições dos balões da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Pretende permitir balões da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Recusar"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permitir"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Perguntar depois"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> do <xliff:g id="APP_NAME">%2$s</xliff:g> e mais<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>."</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mover"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mover p/ parte sup. esquerda"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mover parte superior direita"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mover p/ parte infer. esquerda"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mover parte inferior direita"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 23682b60261e..8b7449fe6fc6 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Usar o carregador que acompanha o dispositivo"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Configurações"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Ativar Economia de bateria?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Sobre a \"Economia de bateria\""</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ativar"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Ativar a Economia de bateria"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configurações"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"O usuário conectado a este dispositivo não pode ativar a depuração USB. Para usar esse recurso, mude para o usuário principal \"NAME\"."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Porta USB desativada"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para proteger seu dispositivo de líquidos e detritos, a porta USB está desativada e não detectará nenhum acessório.\n\nVocê receberá uma notificação quando for seguro usar a porta USB novamente."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Porta USB ativada para detectar carregadores e acessórios"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Ativar USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom p/ preencher a tela"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ampliar p/ preencher tela"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captura de tela"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Desbloquear sem usar impressão digital"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Verificando rosto"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gerenciar notificações"</string>
<string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string>
<string name="phone_label" msgid="2320074140205331708">"abrir telefone"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"abrir assistência de voz"</string>
<string name="camera_label" msgid="7261107956054836961">"abrir câmera"</string>
<string name="cancel" msgid="6442560571259935130">"Cancelar"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Área da mensagem de ajuda"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirmar"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Tentar novamente"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Toque no sensor de impressão digital"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Dados móveis"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Dados móveis ativados"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Dados móveis desativados"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Sem configuração para uso de dados"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Desativados"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Tethering Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Modo avião."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"O modo avião foi ativado."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"silêncio total"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"somente alarmes"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Não perturbe"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Não perturbe\" desativado."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Não perturbe\" ativado."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Não perturbe."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"Não perturbe\" desativado."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Não perturbe\" ativado."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth desativado."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth ativado."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitações de localização ativas"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Limpar todas as notificações."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"Mais <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Mais <xliff:g id="NUMBER_1">%s</xliff:g> notificações no grupo.</item>
<item quantity="other">Mais <xliff:g id="NUMBER_1">%s</xliff:g> notificações no grupo.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Configurações de notificação"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Configurações de <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"A tela girará automaticamente."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Protetor de tela"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Toque nos ícones e mantenha-os pressionados para ver mais opções"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Não perturbe"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Não perturbe"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Somente prioridade"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Somente alarmes"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Silêncio total"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Economia de bateria ativada"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduz o desempenho e os dados em segundo plano"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Desativar a Economia de bateria"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Tudo o que aparecer na sua tela, incluindo notificações, senhas, fotos, mensagens e informações de pagamento, será capturado pelo <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Permitir que <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> grave ou transmita sua tela?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Ao gravar ou transmitir, o <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> pode capturar informações confidenciais, como áudios que você ouve e também senhas, informações de pagamento, fotos e mensagens."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Exposição de informações confidenciais durante transmissão/gravação"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Não mostrar novamente"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Limpar tudo"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gerenciar"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Configurações de som"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Expandir"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Recolher"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Transcrição automática"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Dica de legenda"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Alterar dispositivo de saída"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"A tela está fixada"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ela é mantida à vista até que seja liberada. Toque em Voltar e em Visão geral e mantenha essas opções pressionadas para liberar."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Essas notificações alertarão você"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Geralmente você dispensa essas notificações. \nQuer que elas continuem a ser exibidas?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Concluído"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicar"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Continuar mostrando essas notificações?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Bloquear notificações"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Notificar silenciosamente"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloquear"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuar mostrando"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizar"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Mostrar silenciosamente"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Com discrição"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Continuar sem som"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Receber alerta"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Com interrupção"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Continuar alertando"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Desativar notificações"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Continuar mostrando notificações desse app?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"As notificações bloqueadas não aparecem em nenhum lugar nem tocam sons. É possível desbloquear as notificações nas configurações."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"As notificações silenciosas aparecem na tonalidade, mas não na tela de bloqueio. Além disso, elas não apresentam um banner nem tocam sons."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Essas notificações emitirão um som e serão exibidas na gaveta de notificações, barra de status e tela de bloqueio"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Não é possível desativar essas notificações"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Não é possível configurar esse grupo de notificações aqui"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"pelo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Este app está usando a câmera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Este app está usando o microfone."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Agenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Mostrar com controles de volume"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Não perturbe"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Não perturbe"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Atalho de botões de volume"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Saia do modo \"Não perturbe\" aumentando o volume"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Saia do modo \"Não perturbe\" aumentando o volume"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Relógio"</string>
<string name="headset" msgid="4534219457597457353">"Fone de ouvido"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Abrir o navegador"</string>
<string name="mobile_data" msgid="7094582042819250762">"Dados móveis"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"O Wi-Fi está desativado"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth desativado"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"O recurso Não perturbe está desativado"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Configurações"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Ok"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Despejar pilha SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> apps</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"O app <xliff:g id="APP">%1$s</xliff:g> está usando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplicativos estão usando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Em uso:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicativo está usando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplicativos estão usando <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ok"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Config. de privacidade"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Apps usando <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" e "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"câmera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"localização"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microfone"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> outro app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> outros apps</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensores desativados"</string>
<string name="device_services" msgid="1191212554435440592">"Serviços do dispositivo"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Sem título"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Toque para reiniciar o app e usar tela cheia."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Abrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Abra as configurações de notificação do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Permitir balões deste app?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloquear"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Configurações de balões do <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Permitir balões de <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Negar"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permitir"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Perguntar depois"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de <xliff:g id="APP_NAME">%2$s</xliff:g> mais <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mover"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mover para canto superior esquerdo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mover para canto superior direito"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mover para canto inferior esquerdo"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mover para canto inferior direito"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 259f1dbb06af..ee3092688d64 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Folosiți încărcătorul livrat împreună cu dispozitivul"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Setări"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Activați economisirea bateriei?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Despre Economisirea bateriei"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Activați"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Activați economisirea bateriei"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Setări"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Utilizatorul conectat momentan pe acest dispozitiv nu poate activa remedierea erorilor prin USB. Pentru a folosi această funcție, comutați la utilizatorul principal."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Portul USB a fost dezactivat"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Pentru a vă proteja dispozitivul de lichide sau reziduuri, portul USB este dezactivat și nu va detecta niciun accesoriu.\n\nVeți primi o notificare când puteți folosi din nou portul USB în siguranță."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Portul USB a fost activat pentru a detecta încărcătoarele și accesoriile"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Activați USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zoom pt. a umple ecranul"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Înt. pt. a umple ecranul"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Captură de ecran"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Deblocați fără amprentă"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Scanarea chipului"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Trimiteți"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestionați notificările"</string>
<string name="unlock_label" msgid="8779712358041029439">"deblocați"</string>
<string name="phone_label" msgid="2320074140205331708">"deschideți telefonul"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"deschideți asistentul vocal"</string>
<string name="camera_label" msgid="7261107956054836961">"deschideți camera foto"</string>
<string name="cancel" msgid="6442560571259935130">"Anulați"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Zona mesajelor de ajutor"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Confirmați"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Încercați din nou"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Atingeți senzorul de amprente"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Date mobile"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Date mobile activate"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Date mobile dezactivate"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nu este setat pentru a folosi datele"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Dezactivate"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Conectarea ca modem prin Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mod Avion."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modul Avion este activat."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"niciun sunet"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"numai alarme"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Nu deranja."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Setarea „Nu deranja” a fost dezactivată."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Setarea „Nu deranja” a fost activată."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Nu deranja."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Funcția Nu deranja a fost dezactivată."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Funcția Nu deranja a fost activată."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Conexiunea prin Bluetooth este dezactivată."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Conexiunea prin Bluetooth este activată."</string>
@@ -269,12 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Solicitări locație active"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ștergeți toate notificările."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="few">Încă <xliff:g id="NUMBER_1">%s</xliff:g> notificări în grup.</item>
<item quantity="other">Încă <xliff:g id="NUMBER_1">%s</xliff:g> de notificări în grup.</item>
<item quantity="one">Încă <xliff:g id="NUMBER_0">%s</xliff:g> notificare în grup.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Setări pentru notificări"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Setări <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ecranul se va roti în mod automat."</string>
@@ -287,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Economizor de ecran"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Atingeți lung pictogramele pentru mai multe opțiuni"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Nu deranja"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Nu deranja"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Numai cu prioritate"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Numai alarme"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Niciun sunet"</string>
@@ -440,8 +444,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Economisire baterie activată"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Reduce performanța și datele de fundal"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Dezactivați economisirea bateriei"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> va începe să captureze totul de pe ecran, inclusiv notificările, parolele, fotografiile, mesajele și informațiile de plată."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Permiteți <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> să înregistreze sau să proiecteze ecranul?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"În timp ce înregistrați sau proiectați, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> poate captura toate informațiile sensibile, cum ar fi conținutul audio pe care îl redați, parolele, informațiile de plată, fotografiile și mesajele."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Se expun informații sensibile în timpul proiectării/înregistrării"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Nu se mai afișează"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Ștergeți toate notificările"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Gestionați"</string>
@@ -516,6 +520,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Setări de sunet"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Extindeți"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Restrângeți"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Adăugați subtitrări automate la fișierele media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sfat pentru subtitrări"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Comutați dispozitivul de ieșire"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ecranul este fixat"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Astfel rămâne afișat până anulați fixarea. Atingeți lung opțiunile Înapoi și Recente pentru a anula fixarea."</string>
@@ -616,18 +622,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Aceste notificări vă vor anunța"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"De regulă respingeți aceste notificări. \nDoriți să fie afișate în continuare?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Gata"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Aplicați"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Doriți să continuați afișarea acestor notificări?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Opriți notificările"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Livrați silențios"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blocați"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Continuați afișarea"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizați"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Afișați fără sunet"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Discret"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Păstrați modul silențios"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Alertează-mă"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Interferent"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Păstrați alerta"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Dezactivați notificările"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Doriți să continuați afișarea notificărilor de la această aplicație?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Notificările blocate nu apar nicăieri și nu vor emite niciun sunet. Puteți debloca notificările în setări."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Notificările silențioase apar în umbră, dar nu apar pe ecranul de blocare, afișează un banner sau emit un sunet."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Aceste notificări vor emite un sunet și vor fi afișate în panoul cu notificări, în bara de stare și pe ecranul de blocare"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Aceste notificări nu pot fi dezactivate"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Acest grup de notificări nu poate fi configurat aici"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"prin <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Această aplicație folosește camera foto."</string>
<string name="appops_microphone" msgid="741508267659494555">"Această aplicație folosește microfonul."</string>
@@ -708,9 +720,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Calendar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Afișează cu comenzile de volum"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Nu deranja"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Nu deranja"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Comandă rapidă din butoanele de volum"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Ieșiți din Nu deranjați la creșterea volumului"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Ieșiți din modul Nu deranja la creșterea volumului"</string>
<string name="battery" msgid="7498329822413202973">"Baterie"</string>
<string name="clock" msgid="7416090374234785905">"Ceas"</string>
<string name="headset" msgid="4534219457597457353">"Set căști-microfon"</string>
@@ -851,6 +863,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Accesați browserul"</string>
<string name="mobile_data" msgid="7094582042819250762">"Date mobile"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Conexiunea Wi-Fi este dezactivată"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Funcția Bluetooth este dezactivată"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Funcția Nu deranja este dezactivată"</string>
@@ -880,39 +893,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Setări"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Date SysUI memorie"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplicații</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> de aplicații</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplicație</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> folosește <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplicațiile folosesc <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Folosit:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplicații folosesc <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> de aplicații folosesc <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplicație folosește <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Setări de confidențialitate"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplicație care folosește <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplicații care folosesc <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" și "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"cameră foto"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"locație"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"microfon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="few">Alte <xliff:g id="NUM_APPS_1">%d</xliff:g> aplicații</item>
- <item quantity="other">Alte <xliff:g id="NUM_APPS_1">%d</xliff:g> de aplicații</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> altă aplicație</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzori dezactivați"</string>
<string name="device_services" msgid="1191212554435440592">"Servicii pentru dispozitiv"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Fără titlu"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Atingeți ca să reporniți aplicația și să treceți în modul ecran complet."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Accesați <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Deschideți setările pentru notificări pentru aplicația <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Permiteți baloane de la această aplicație?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blocați"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Setări pentru baloanele <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Permiteți baloanele de la <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Refuzați"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Permiteți"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Întreabă-mă mai târziu"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de la <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> de la <xliff:g id="APP_NAME">%2$s</xliff:g> și încă <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Mutați"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Mutați în stânga sus"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Mutați în dreapta sus"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Mutați în stânga jos"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Mutați în dreapta jos"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index a3d6680014c0..7ee314d2f321 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Используйте зарядное устройство из комплекта."</string>
<string name="battery_low_why" msgid="4553600287639198111">"Настройки"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Включить режим энергосбережения?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"О режиме энергосбережения"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Включить"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Включить режим энергосбережения"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Настройки"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"В этом аккаунте нельзя включить отладку по USB. Перейдите в аккаунт основного пользователя."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-порт отключен"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Чтобы внутрь устройства не попала вода или грязь, USB-порт был отключен. Сейчас через него нельзя подсоединять другие устройства.\n\nКогда USB-порт снова можно будет использовать, вы получите уведомление."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-порт активен и может распознавать аксессуары и зарядные устройства."</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Включить USB-порт"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Подогнать по размерам экрана"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Растянуть на весь экран"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Скриншот"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Разблокировать без отпечатка пальца"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Сканирование лица"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Отправить"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Настроить уведомления"</string>
<string name="unlock_label" msgid="8779712358041029439">"Разблокировать."</string>
<string name="phone_label" msgid="2320074140205331708">"Открыть телефон."</string>
<string name="voice_assist_label" msgid="3956854378310019854">"включить аудиоподсказки"</string>
<string name="camera_label" msgid="7261107956054836961">"Открыть камеру."</string>
<string name="cancel" msgid="6442560571259935130">"Отмена"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Справочное сообщение"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Подтвердить"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Повторить попытку"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Прикоснитесь к сканеру отпечатков пальцев."</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобильный Интернет"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобильный Интернет включен"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобильный Интернет отключен"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Мобильный Интернет по умолчанию не используется."</string>
<string name="cell_data_off" msgid="1051264981229902873">"Отключен"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-модем"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим полета."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Режим полета включен."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"полная тишина"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"только будильник"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не беспокоить."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Режим \"Не беспокоить\" выключен."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Режим \"Не беспокоить\" включен."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Не беспокоить."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Режим \"Не беспокоить\" выключен."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Режим \"Не беспокоить\" включен."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Модуль Bluetooth отключен."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Модуль Bluetooth включен."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Есть активные запросы на определение местоположения"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Удалить все уведомления"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Ещё <xliff:g id="NUMBER_1">%s</xliff:g> уведомление.</item>
<item quantity="few">Ещё <xliff:g id="NUMBER_1">%s</xliff:g> уведомления.</item>
<item quantity="many">Ещё <xliff:g id="NUMBER_1">%s</xliff:g> уведомлений.</item>
<item quantity="other">Ещё <xliff:g id="NUMBER_1">%s</xliff:g> уведомления.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Настройки уведомлений"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Настройки приложения \"<xliff:g id="APP_NAME">%s</xliff:g>\""</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Экран будет поворачиваться автоматически."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Заставка"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Чтобы открыть другие параметры, нажмите на значок и удерживайте его"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Не беспокоить"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Не беспокоить"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Только важные"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Только будильник"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Полная тишина"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Режим энергосбережения включен"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Откл. фоновой передачи данных"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Отключить режим энергосбережения"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Приложение \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" будет записывать всю информацию на экране, в том числе уведомления, пароли, фотографии, сообщения и платежные данные."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Разрешить приложению \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" записывать или транслировать экран устройства?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"При записи сообщений или трансляции экрана приложение \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" может получить доступ к личной информации, например, к аудиозаписям, которые вы слушаете, паролям, фото, сообщениям и платежным данным."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Раскрытие личной информации при записи или трансляции"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Больше не показывать"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Очистить все"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Настроить"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Настройки звука"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Развернуть"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Свернуть"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматические субтитры"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Подсказка \"Закрыть субтитры\""</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Сменить устройство аудиовыхода"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Блокировка в приложении включена"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Приложение останется активным, пока вы не отмените блокировку, нажав и удерживая кнопки \"Назад\" и \"Обзор\"."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Мы будем сообщать вам об этих уведомлениях"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Обычно вы скрываете эти уведомления.\nПоказывать их?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Готово"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Применить"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Показывать эти уведомления?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Отключить уведомления"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Без звука"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Заблокировать"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Показывать"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Свернуть"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Без звука"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Беззвучные уведомления"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Не включать звук"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Оповещать меня"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Уведомления со звуковым сигналом"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Присылать уведомления"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Выключить уведомления"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Показывать уведомления от этого приложения?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Заблокированные уведомления нигде не появляются и не сопровождаются звуком. Разблокировать их можно в настройках."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Беззвучные уведомления появляются только в панели уведомлений, но не на экране блокировки. Они не отображаются в виде баннера и не сопровождаются звуком."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Такие оповещения будут появляться на экране уведомлений, в строке состояния и на заблокированном экране, а также сопровождаться звуковым сигналом."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Эти уведомления нельзя отключить."</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Эту группу уведомлений нельзя настроить здесь."</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"через приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="appops_camera" msgid="8100147441602585776">"Это приложение использует камеру."</string>
<string name="appops_microphone" msgid="741508267659494555">"Это приложение использует микрофон."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Календарь"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Показывать с регуляторами громкости"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Не беспокоить"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Не беспокоить"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Кнопки регулировки громкости"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Отключать режим \"Не беспокоить\" при увеличении громкости"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Отключать режим \"Не беспокоить\" при увеличении громкости"</string>
<string name="battery" msgid="7498329822413202973">"Батарея"</string>
<string name="clock" msgid="7416090374234785905">"Часы"</string>
<string name="headset" msgid="4534219457597457353">"Гарнитура"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Перейти в браузер"</string>
<string name="mobile_data" msgid="7094582042819250762">"Моб. Интернет"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Модуль Wi-Fi отключен"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Модуль Bluetooth отключен"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Режим \"Не беспокоить\" отключен"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Открыть настройки"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"ОК"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Передача SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> прил.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> прил.</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> прил.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> прил.</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"В приложении \"<xliff:g id="APP">%1$s</xliff:g>\" используется <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"В приложениях используется <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Используется:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one">Функцию \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" использует <xliff:g id="NUM_APPS_4">%1$d</xliff:g> приложение.</item>
- <item quantity="few">Функцию \"<xliff:g id="TYPE_3">%2$s</xliff:g>\" используют <xliff:g id="NUM_APPS_2">%1$d</xliff:g> приложения.</item>
- <item quantity="many">Функцию \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" используют <xliff:g id="NUM_APPS_4">%1$d</xliff:g> приложений.</item>
- <item quantity="other">Функцию \"<xliff:g id="TYPE_5">%2$s</xliff:g>\" используют <xliff:g id="NUM_APPS_4">%1$d</xliff:g> приложения.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"ОК"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Конфиденциальность"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Приложение, в котором используются операции <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Приложения, в которых используются операции <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" и "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камера"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"местоположение"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"микрофон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">Ещё <xliff:g id="NUM_APPS_1">%d</xliff:g> приложение</item>
- <item quantity="few">Ещё <xliff:g id="NUM_APPS_1">%d</xliff:g> приложения</item>
- <item quantity="many">Ещё <xliff:g id="NUM_APPS_1">%d</xliff:g> приложений</item>
- <item quantity="other">Ещё <xliff:g id="NUM_APPS_1">%d</xliff:g> другого приложения</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Датчики отключены"</string>
<string name="device_services" msgid="1191212554435440592">"Сервисы устройства"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без названия"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Нажмите, чтобы перезапустить приложение и перейти в полноэкранный режим."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Открыть приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Настройки уведомлений приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Разрешить всплывающие подсказки от этого приложения?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Заблокировать"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Настройки всплывающих подсказок от приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Разрешить всплывающие подсказки от приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Запретить"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Разрешить"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Напомнить позже"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> из приложения \"<xliff:g id="APP_NAME">%2$s</xliff:g>\""</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> от приложения \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" и ещё <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Перенести"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Перенести в левый верхний угол"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Перенести в правый верхний угол"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Перенести в левый нижний угол"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Перенести в правый нижний угол"</string>
</resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index e7febac33463..a75f3d2594d1 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ඔබේ උපාංගය සමඟ පැමිණි ආරෝපකය භාවිත කරන්න"</string>
<string name="battery_low_why" msgid="4553600287639198111">"සැකසීම්"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"බැටරි සුරැකුම ක්‍රියාත්මක කරන්නද?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"බැටරි සුරැකුම ගැන"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ක්‍රියාත්මක කරන්න"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"බැටරි සුරැකුම ක්‍රියාත්මක කරන්න"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"සැකසීම්"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"දැනට මෙම උපාංගයට පුරා ඇති පරිශීලකයාට USB නිදොස්කරණය ක්‍රියාත්මක කළ නොහැක. මෙම විශේෂාංගය භාවිතා කිරීම සඳහා, මූලික පරිශීලකයා වෙත මාරු වෙන්න."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB තොට අබලයි"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"ඔබේ උපාංගය ද්‍රවවලින් හෝ කුණුවලින් ආරක්‍ෂා කිරීමට, USB තොට අබල කර තිබෙන අතර, එය කිසිම අමතරාංගයක් අනාවරණ නොකරයි.\n\nනැවතත් USB තොට භාවිත කිරීම ආරක්‍ෂාකාරී වූ විට ඔබව දැනුම් දෙනු ලැබේ."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ආරෝපක සහ උපකාරක අංග අනාවරණ කිරීමට USB තොට සබල කර ඇත"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB සබල කරන්න"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"තිරය පිරවීමට විශාලනය කරන්න"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"තිරය පිරවීමට අදින්න"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"තිර රුව"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ඔබේ ඇඟිලි සලකුණ භාවිත නොකර අගුළු අරින්න"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"මුහුණ ස්කෑන් කිරීම"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"යවන්න"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"දැනුම්දීම් කළමනා කරන්න"</string>
<string name="unlock_label" msgid="8779712358041029439">"අඟුල අරින්න"</string>
<string name="phone_label" msgid="2320074140205331708">"දුරකථනය විවෘත කරන්න"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"විවෘත හඬ සහාය"</string>
<string name="camera_label" msgid="7261107956054836961">"කැමරාව විවෘත කරන්න"</string>
<string name="cancel" msgid="6442560571259935130">"අවලංගු කරන්න"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"උදවු පණිවිඩ ප්‍රදේශය"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"තහවුරු කරන්න"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"නැවත උත්සාහ කරන්න"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"ඇඟිලි සලකුණු සංවේදකය ස්පර්ශ කරන්න"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"ජංගම දත්ත"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"ජංගම දත්ත ක්‍රියාත්මකයි"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"ජංගම දත්ත ක්‍රියාවිරහිතයි"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"දත්ත භාවිත කිරීමට සකසා නැත"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ක්‍රියාවිරහිතයි"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"බ්ලූටූත් ටෙදරින්."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"අහස්යානා ආකාරය."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"අහස්යානා ආකාරය සක්‍රීයයි."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"සම්පූර්ණ නිහඬතාව"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"එලාම පමණි"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"බාධා නොකරන්න."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"බාධා නොකරන්න ක්‍රියා විරහිත කරන ලදි."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"බාධා නොකරන්න ක්‍රියාත්මක කරන ලදි"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"බාධා නොකරන්න."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'බාධා නොකරන්න\' අක්‍රියයි."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"බාධා නොකරන්න සක්‍රීයයි."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"බ්ලූටූත්."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"බ්ලූටූත් අක්‍රියයි."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"බ්ලූටූත් ක්‍රියාත්මකයි."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"පිහිටීම් ඉල්ලීම් සක්‍රියයි"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"සියලු දැනුම්දීම් හිස් කරන්න."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">ඇතුළත තව දැනුම්දීම් <xliff:g id="NUMBER_1">%s</xliff:g>ක් ඇත.</item>
<item quantity="other">ඇතුළත තව දැනුම්දීම් <xliff:g id="NUMBER_1">%s</xliff:g>ක් ඇත.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"දැනුම්දීම් සැකසීම්"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> සැකසීම්"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"තිරය ස්වයංක්‍රීයව කරකැවේ."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"තිර සුරැකුම"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ඊතර නෙට්"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"තවත් විකල්ප සඳහා නිරූපක ස්පර්ශ කර අල්ලාගෙන සිටින්න"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"බාධා නොකරන්න"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"බාධා නොකරන්න"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ප්‍රමුඛතාව පමණයි"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"එලාම පමණි"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"සම්පූර්ණ නිහඬතාව"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"බැටරි සුරැකුම ක්‍රියාත්මකයි"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ක්‍රියාකාරිත්වය සහ පසුබිම් දත්ත අඩු කරන්න"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"බැටරි සුරැකුම ක්‍රියාවිරහිත කරන්න"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> දැනුම්දීම්, මුරපද, ඡායාරූප, පණිවුඩ සහ ගෙවීමේ තොරතුරු ඇතුළුව ඔබේ තිරයේ සැම දෙයක්ම ග්‍රහණ කිරීමට පටන් ගනියි."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"ඔබේ තිරය සටහන් කිරීමට හෝ විකාශන කිරීමට <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>ට ඉඩ දෙන්නේද?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"පටිගත කරන හෝ විකාශන කරන අතරතුර, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> හට ඔබ වාදන කරන ශ්‍රව්‍යය සහ ඔබේ මුරපද, ගෙවීමේ තොරතුරු, ඡායාරූප, සහ පණිවුඩ වැනි ඕනෑම සංවේදී තොරතුරක් ග්‍රහණ කළ හැක."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"විකාශනය/පටිගත කිරීම අතරතුර සංවේදී තොරතුරු හෙළි කිරීම"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"නැවත නොපෙන්වන්න"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"සියල්ල හිස් කරන්න"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"කළමනාකරණය කරන්න"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ශබ්ද සැකසීම්"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"දිග හරින්න"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"හකුළන්න"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"මාධ්‍ය ස්වයංක්‍රීයව සිරස්තල"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"සිරස්තල ඉඟිය"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"ප්‍රතිදාන උපාංගය මාරු කරන්න"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"තීරය අමුණන ලදි"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"මෙය ඔබ ගලවන තෙක් එය දසුන තුළ තබයි. ගැලවීමට දළ විශ්ලේෂණය ස්පර්ශ කර ආපසු අල්ලාගෙන සිටින්න."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"මෙම දැනුම්දීම් ඔබට අනතුරු අඟවනු ඇත"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"ඔබ සාමාන්‍යයෙන් මෙවැනි දැනුම්දීම් ඉවත දමයි. \nඒවා දිගටම පෙන්වන්නද?"</string>
<string name="inline_done_button" msgid="492513001558716452">"නිමයි"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"යොදන්න"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"මෙම දැනුම්දීම් පෙන්වමින් තබන්නද?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"දැනුම්දීම් නවත්වන්න"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"නිහඬව බෙදා හරින්න"</string>
<string name="inline_block_button" msgid="8735843688021655065">"අවහිර කරන්න"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"පෙන්වමින් තබන්න"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"කුඩා කරන්න"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"නිහඬව පෙන්වන්න"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"මෘදු"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"නිහඬව සිටින්න"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"මට අඟවන්න"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"බාධක"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"අඟවමින් සිටින්න"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"දැනුම්දීම් අක්‍රිය කරන්න"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"මෙම යෙදුම වෙතින් දැනුම්දීම් පෙන්වමින් තබන්නද?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"අවහිර කළ දැනුම්දීම් කිසිම තැනක දිස් වීම හෝ ශබ්දයක් නැඟීම සිදු නොවේ. ඔබට සැකසීම් තුළින් දැනුම්දීම් අනවහිර කළ හැක."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"නිහඬ දැනුම්දීම් සෙවන තුළ දිස් වන නමුත් අඟුලු දිරයේ දිස් වීම, බැනරයක් ඉදිරිපත් කිරීම, හෝ ශබ්දයක් නැඟීම සිදු නොවේ."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"මෙම දැනුම්දීම් ශබ්දයක් නඟන අතර දැනුම්දීම් ලාච්චුව, තත්ත්‍ව තීරුව, සහ අඟුලු තිරය තුළ පෙන්වනු ලැබේ"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"මෙම දැනුම්දීම් ක්‍රියාවිරහිත කළ නොහැකිය"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"මෙම දැනුම්දීම් සමූහය මෙහි වින්‍යාස කළ නොහැක"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> හරහා"</string>
<string name="appops_camera" msgid="8100147441602585776">"මෙම යෙදුම කැමරාව භාවිතා කරයි."</string>
<string name="appops_microphone" msgid="741508267659494555">"මෙම යෙදුම මයික්‍රෆෝනය භාවිතා කරයි."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"දින දර්ශනය"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"හඩ පරිමා පාලන සහිතව පෙන්වන්න"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"බාධා නොකරන්න"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"බාධා නොකරන්න"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"හඩ පරිමා බොත්තම් කෙටිමග"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"හඬ පරිමාව වැඩි කරන්න මත බාධා නොකරන්න වෙතින් ඉවත් වන්න"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"හඬ පරිමාව වැඩි කරන්න මත \'බාධා නොකරන්න\' වෙතින් පිට වන්න"</string>
<string name="battery" msgid="7498329822413202973">"බැටරිය"</string>
<string name="clock" msgid="7416090374234785905">"ඔරලෝසුව"</string>
<string name="headset" msgid="4534219457597457353">"හෙඩ්සෙට්"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"බ්‍රවුසරය වෙත යන්න"</string>
<string name="mobile_data" msgid="7094582042819250762">"ජංගම දත්ත"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ක්‍රියා විරහිතයි"</string>
<string name="bt_is_off" msgid="2640685272289706392">"බ්ලූටූත් ක්‍රියා විරහිතයි"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"බාධා නොකරන්න ක්‍රියා විරහිතයි"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"සැකසීම්"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"තේරුණා"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one">යෙදුම් <xliff:g id="NUM_APPS_2">%d</xliff:g>ක්</item>
- <item quantity="other">යෙදුම් <xliff:g id="NUM_APPS_2">%d</xliff:g>ක්</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ඔබේ <xliff:g id="TYPES_LIST">%2$s</xliff:g> භාවිත කරමින් සිටී."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"යෙදුම් ඔබේ <xliff:g id="TYPES_LIST">%s</xliff:g> භාවිත කරමින් සිටී."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"භාවිතයේ ඇත:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one">යෙදුම් <xliff:g id="NUM_APPS_4">%1$d</xliff:g>ක් ඔබේ <xliff:g id="TYPE_5">%2$s</xliff:g> භාවිත කරමින් සිටිති.</item>
- <item quantity="other">යෙදුම් <xliff:g id="NUM_APPS_4">%1$d</xliff:g>ක් ඔබේ <xliff:g id="TYPE_5">%2$s</xliff:g> භාවිත කරමින් සිටිති.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"තේරුණා"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"පෞද්ගලිකත්ව සැකසීම්"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ඔබගේ <xliff:g id="TYPES_LIST">%s</xliff:g> භාවිත කරන යෙදුම්"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ඔබගේ <xliff:g id="TYPES_LIST">%s</xliff:g> භාවිත කරන යෙදුම්"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" සහ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"කැමරාව"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ස්ථානය"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"මයික්‍රෝෆෝනය"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">වෙනත් යෙදුම් <xliff:g id="NUM_APPS_1">%d</xliff:g></item>
- <item quantity="other">වෙනත් යෙදුම් <xliff:g id="NUM_APPS_1">%d</xliff:g></item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"සංවේදක ක්‍රියාවිරහිතයි"</string>
<string name="device_services" msgid="1191212554435440592">"උපාංග සේවා"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"මාතෘකාවක් නැත"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"මෙම යෙදුම යළි ඇරඹීමට සහ පූර්ණ තිරයට යාමට තට්ටු කරන්න"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> විවෘත කරන්න"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> සඳහා දැනුම්දීම් සැකසීම් විවෘත කරන්න"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"මෙම යෙදුම වෙතින් බුබුළුවලට ඉඩ දෙන්නේද?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"අවහිර කරන්න"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> බුබුළු සඳහා සැකසීම්"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> වෙතින් බුබුළුවලට ඉඩ දෙන්නේද?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ප්‍රතික්‍ෂේප කරන්න"</string>
<string name="yes_bubbles" msgid="668809525728633841">"ඉඩ දෙන්න"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"පසුව මගෙන් අසන්න"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> වෙතින් <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> වෙතින් <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> සහ තවත් <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ක්"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ගෙන යන්න"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ඉහළ වමට ගෙන යන්න"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ඉහළ දකුණට ගෙන යන්න"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"පහළ වමට ගෙන යන්න"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"පහළ දකුණට ගෙන යන්න"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index adb0b1d1bd66..535a8685a07f 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Použite nabíjačku dodanú so zariadením"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Nastavenia"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Zapnúť šetrič batérie?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Šetrič batérie"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Zapnúť"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Zapnúť šetrič batérie"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nastavenia"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Používateľ, ktorý je práve prihlásený v tomto zariadení, nemôže zapnúť ladenie USB. Ak chcete použiť túto funkciu, prepnite na hlavného používateľa."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Port USB je deaktivovaný"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Port USB je deaktivovaný na zaistenie ochrany zariadenia pred tekutinami alebo nečistotami a nerozpoznáva príslušenstvo.\n\nKeď ho budete môcť znova bezpečne použiť, upozorníme vás."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Bol povolený port USB na zisťovanie nabíjačiek a príslušenstva"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Povoliť USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Priblížiť na celú obrazovku"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Na celú obrazovku"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Snímka obrazovky"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Odomknúť bez použitia odtlačku"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Skenovanie tváre"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Odoslať"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Spravovať upozornenia"</string>
<string name="unlock_label" msgid="8779712358041029439">"odomknúť"</string>
<string name="phone_label" msgid="2320074140205331708">"otvoriť telefón"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"otvoriť hlasového asistenta"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobilné dáta"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobilné dáta sú zapnuté"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobilné dáta sú vypnuté"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nie je nastavené na používanie dát"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Vypnuté"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Pripojenie cez Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Režim v lietadle."</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Režim v lietadle je zapnutý."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"úplné ticho"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"iba budíky"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Režim bez vyrušení."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Režim bez vyrušení je vypnutý"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Režim bez vyrušení je zapnutý."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Rozhranie Bluetooth je vypnuté."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Rozhranie Bluetooth je zapnuté."</string>
@@ -281,6 +279,7 @@
<item quantity="other">Skupina obsahuje ešte <xliff:g id="NUMBER_1">%s</xliff:g> upozornení.</item>
<item quantity="one">Skupina obsahuje ešte <xliff:g id="NUMBER_0">%s</xliff:g> upozornenie.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Nastavenia upozornení"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Nastavenia aplikácie <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Obrazovka sa automaticky otočí."</string>
@@ -293,8 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Šetrič obrazovky"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Pridržaním ikon zobrazíte ďalšie možnosti"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Režim bez vyrušení"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Iba prioritné"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Iba budíky"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Úplné ticho"</string>
@@ -449,10 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Šetrič batérie je zapnutý"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Obmedzí výkonnosť a prenos údajov na pozadí"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Vypnúť šetrič batérie"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Počas zaznamenávania alebo prenášania môže <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> zachytiť citlivé údaje, napríklad prehrávaný zvuk a heslá, platobné údaje, fotky a správy."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Počas prenášania/zaznamenávania sa odhaľujú citlivé údaje"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Nabudúce nezobrazovať"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Vymazať všetko"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Spravovať"</string>
@@ -527,10 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Nastavenia zvuku"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Rozbaliť"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Zbaliť"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automaticky pridávať titulky k médiám"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zavrieť tip pre titulky"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Prepnúť výstupné zariadenie"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Obrazovka je pripnutá"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Obsah bude pripnutý v zobrazení, dokým ho neuvoľníte. Uvoľníte ho stlačením a podržaním tlačidiel Späť a Prehľad."</string>
@@ -631,27 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Tieto upozornenia vás upozornia"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Tieto upozornenia zvyčajne odmietate. \nChcete ich naďalej zobrazovať?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Hotovo"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Použiť"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Majú sa tieto upozornenia naďalej zobrazovať?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Prestať zobrazovať upozornenia"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Poskytovať bez zvukov"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokovať"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Naďalej zobrazovať"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimalizovať"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Zobraziť potichu"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Jemné"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Naďalej upozorňovať potichu"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Rušivé"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Naďalej upozorňovať"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Vypnúť upozornenia"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Majú sa upozornenia z tejto aplikácie naďalej zobrazovať?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokované upozornenia sa nikde nezobrazujú ani neprehrávajú zvuk. Upozornenia môžete odblokovať v nastaveniach."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Tiché upozornenia sa zobrazujú s odtieňom, ale nie na uzamknutej obrazovke, nezobrazia banner ani neprehrajú zvuk."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Tieto upozornenia budú mať zvukový signál a zobrazia sa vo vysúvacom paneli s upozorneniami, v stavovom riadku a na uzamknutej obrazovke"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Tieto upozornenia sa nedajú vypnúť"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"prostredníctvom aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Táto aplikácia používa fotoaparát."</string>
<string name="appops_microphone" msgid="741508267659494555">"Táto aplikácia používa mikrofón."</string>
@@ -734,11 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendár"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Zobrazovať s ovládacími prvkami hlasitosti"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Režim bez vyrušení"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Skratka tlačidiel hlasitosti"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Pri zvýšení hlasitosti ukončiť režim bez vyrušení"</string>
<string name="battery" msgid="7498329822413202973">"Batéria"</string>
<string name="clock" msgid="7416090374234785905">"Hodiny"</string>
<string name="headset" msgid="4534219457597457353">"Náhlavná súprava"</string>
@@ -879,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Otvoriť prehliadač"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilné dáta"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Pripojenie Wi‑Fi je vypnuté"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Rozhranie Bluetooth je vypnuté"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Režim bez vyrušení je vypnutý"</string>
@@ -910,10 +900,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Výpis haldy SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> používa zoznam <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikácie používajú zoznam <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Dobre"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Nastavenia ochrany súkromia"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikácia používajúca <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikácie používajúce <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" a "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"fotoaparát"</string>
@@ -922,30 +908,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Senzory sú vypnuté"</string>
<string name="device_services" msgid="1191212554435440592">"Služby zariadenia"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Bez názvu"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Klepnutím reštartujete túto aplikáciu a prejdete do režimu celej obrazovky."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Otvoriť <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Nastavenia bublín aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Povoliť bubliny z aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Odmietnuť"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Povoliť"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Spýtať sa neskôr"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> z aplikácie <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> z aplikácie <xliff:g id="APP_NAME">%2$s</xliff:g> a ďalšie (<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>)"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Presunúť"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Presunúť doľava nahor"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Presunúť doprava nahor"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Presunúť doľava nadol"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Presunúť doprava nadol"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 9992c8275d35..11b262a7f692 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Uporabite polnilnik, ki je bil priložen napravi"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Nastavitve"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Želite vklopiti varčevanje z energijo akumulatorja?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"O varčevanju z energijo akumulatorja"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Vklopi"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Vklop varčevanja z energijo akumulatorja"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Nastavitve"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Uporabnik, trenutno prijavljen v napravo, ne more vklopiti odpravljanja napak s povezavo USB. Če želite uporabljati to funkcijo, preklopite na primarnega uporabnika."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Vrata USB so onemogočena"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Za zaščito naprave pred tekočino ali umazanijo so vrata USB onemogočena in ne bodo zaznala nobene dodatne opreme.\n\nKo bo znova varno uporabljati vrata USB, boste obveščeni."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Vrata USB so omogočena za zaznavanje polnilnikov in dodatne opreme"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Omogoči USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Povečava čez cel zaslon"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Raztegnitev čez zaslon"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Posnetek zaslona"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Odklepanje brez prstnega odtisa"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Optično branje obraza"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošlji"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljanje obvestil"</string>
<string name="unlock_label" msgid="8779712358041029439">"odkleni"</string>
<string name="phone_label" msgid="2320074140205331708">"odpri telefon"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"odpri glasovnega pomočnika"</string>
<string name="camera_label" msgid="7261107956054836961">"odpri fotoaparat"</string>
<string name="cancel" msgid="6442560571259935130">"Prekliči"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Območje sporočila pomoči"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Potrdite"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Poskusi znova"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Dotaknite se tipala prstnih odtisov"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Prenos podatkov v mobilnem omrežju"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Prenos podatkov v mobilnem omrežju je vklopljen"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Prenos podatkov v mobilnem omrežju je izklopljen"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Ni nastavljeno za uporabo prenosa podatkov"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Izklopljeno"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internet prek Bluetootha."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Način za letalo."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Način za letalo je vklopljen."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"popolna tišina"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"samo alarmi"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ne moti."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Način »ne moti« je izklopljen."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Način »ne moti« je vklopljen."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ne moti."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Način »ne moti« je izklopljen."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Način »ne moti« je vklopljen."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth je izklopljen."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth je vklopljen."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktivne zahteve za lokacijo"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Izbriši vsa obvestila."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"in <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Notri je še <xliff:g id="NUMBER_1">%s</xliff:g> obvestilo.</item>
<item quantity="two">Notri sta še <xliff:g id="NUMBER_1">%s</xliff:g> obvestili.</item>
<item quantity="few">Notri so še <xliff:g id="NUMBER_1">%s</xliff:g> obvestila.</item>
<item quantity="other">Notri je še <xliff:g id="NUMBER_1">%s</xliff:g> obvestil.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Nastavitve obvestil"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Nastavitve aplikacije <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Zaslon se bo samodejno zasukal."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ohranjeval. zaslona"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Pridržite ikone, če si želite ogledati več možnosti"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ne moti"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ne moti"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Samo prednostno"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Samo alarmi"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Popolna tišina"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Varčevanje z energijo akumulatorja je vklopljeno"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Omeji zmogljivost delovanja in prenos podatkov v ozadju"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Izklop varčevanja z energijo akumulatorja"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> bo začela zajemati vse podatke na zaslonu, vključno z obvestili, gesli, fotografijami, sporočili in podatki o plačilih."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Ali aplikaciji <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> dovolite snemanje ali predvajanje zaslona?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Med snemanjem ali predvajanjem lahko aplikacija <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> zajame občutljive podatke, kot so zvok, ki ga predvajate, ter gesla, podatke o plačilu, fotografije in sporočila."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Med predvajanjem/snemanjem so izpostavljeni občutljivi podatki"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Tega ne prikaži več"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Izbriši vse"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Upravljanje"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Nastavitve zvoka"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Razširi"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Strni"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Samod. napisi predstavnosti"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zapiranje namiga za podnapise"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Izbira druge izhodne naprave"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Zaslon je pripet"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"S tem ostane zaslon viden, dokler ga ne odpnete. Če ga želite odpeti, hkrati pridržite gumba za nazaj in pregled."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ta obvestila vas bodo opozorila nase"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Ta obvestila običajno opustite. \nAli želite, da se še naprej prikazujejo?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Končano"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Uporabi"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Želite, da so ta obvestila še naprej prikazana?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Ustavi prikazovanje obvestil"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Dostava brez zvoka"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blokiraj"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Prikazuj še naprej"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimiraj"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Prikaži brez zvoka"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Brez zvočnega opozorila"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Še naprej prikazuj brez zvoka"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Opozori me"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Z zvočnim opozorilom"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Še naprej opozarjaj"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Izklopi obvestila"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Želite, da so obvestila te aplikacije še naprej prikazana?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Blokirana obvestila se ne prikažejo nikjer in ne predvajajo zvoka. Obvestila lahko odblokirate v nastavitvah."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Obvestila z izklopljenim zvokom so prikazana na zaslonu z obvestili, niso pa prikazana na zaklenjenem zaslonu, ne prikažejo pasice in ne predvajajo zvoka."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ob prejemu teh obvestil bo predvajan zvok, obvestila pa bodo prikazana na zaslonu z obvestili, v vrstici stanja in na zaklenjenem zaslonu"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Teh obvestil ni mogoče izklopiti"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"prek aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ta aplikacija uporablja fotoaparat."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ta aplikacija uporablja mikrofon."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Koledar"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Prikaži s kontrolniki glasnosti"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ne moti"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ne moti"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Bližnjica z gumboma za glasnost"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Zapustitev načina »ne moti« pri povečanju glasnosti"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Zapustitev načina »ne moti« pri povečanju glasnosti"</string>
<string name="battery" msgid="7498329822413202973">"Akumulator"</string>
<string name="clock" msgid="7416090374234785905">"Ura"</string>
<string name="headset" msgid="4534219457597457353">"Slušalke z mikrofonom"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Odpri brskalnik"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobilni podatki"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi je izklopljen"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth je izklopljen"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Način »ne moti« je izklopljen"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Nastavitve"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"V redu"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Izvoz kopice SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacija</item>
- <item quantity="two"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikaciji</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacij</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> uporablja <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikacije uporabljajo <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"V uporabi:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacija uporablja <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="two"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikaciji uporabljata <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> aplikacije uporabljajo <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacij uporablja <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Razumem"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Nastavitve zasebn."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacija, ki uporablja te funkcije: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacije, ki uporabljajo te funkcije: <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" in "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"fotoaparat"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokacijo"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">in še <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacija</item>
- <item quantity="two">in še <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikaciji</item>
- <item quantity="few">in še <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacije</item>
- <item quantity="other">in še <xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacij​</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Izklop za tipala"</string>
<string name="device_services" msgid="1191212554435440592">"Storitve naprave"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Brez naslova"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Dotaknite se za vnovični zagon te aplikacije in preklop v celozaslonski način."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Odpri aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Odpri nastavitve obvestil za aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Želite dovoliti oblačke iz te aplikacije?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blokiraj"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Nastavitve za oblačke aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Želite dovoliti oblačke iz aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Zavrni"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Dovoli"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Vprašaj me pozneje"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (<xliff:g id="APP_NAME">%2$s</xliff:g>)"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g> in toliko drugih: <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Premakni"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Premakni zgoraj levo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Premakni zgoraj desno"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Premakni spodaj levo"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Premakni spodaj desno"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 49c55d1fa38b..5b728a6bbb37 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Përdor ngarkuesin që ke marrë me pajisjen"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Cilësimet"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Të aktivizohet \"Kursyesi i baterisë\"?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Rreth \"Kursyesit të baterisë\""</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Ndiz"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Aktivizo \"Kursyesin e baterisë\""</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Cilësimet"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Përdoruesi i identifikuar aktualisht në këtë pajisje nuk mund ta aktivizojë korrigjimin e USB-së. Për ta përdorur këtë funksion, kalo te përdoruesi parësor."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Porta e USB-së është çaktivizuar"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Për të mbrojtur pajisjen tënde nga lëngjet apo papastërtitë, porta e USB-së është çaktivizuar dhe nuk do t\'i dallojë aksesorët.\n\nDo të njoftohesh kur të mos ketë rrezik përdorimi përsëri i portës së USB-së."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Porta USB është aktivizuar për të zbuluar karikuesit dhe aksesorët"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Aktivizo USB-në"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zmadho për të mbushur ekranin"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Shtrije për të mbushur ekranin"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Pamja e ekranit"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Shkyçe pa përdorur gjurmën e gishtit"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Po skanon fytyrën"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Dërgo"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Menaxho njoftimet"</string>
<string name="unlock_label" msgid="8779712358041029439">"shkyç"</string>
<string name="phone_label" msgid="2320074140205331708">"hap telefonin"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"hap ndihmën zanore"</string>
<string name="camera_label" msgid="7261107956054836961">"hap kamerën"</string>
<string name="cancel" msgid="6442560571259935130">"Anulo"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Zona e mesazhit të ndihmës"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Konfirmo"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Provo përsëri"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Prek sensorin e gjurmës së gishtit"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Të dhënat celulare"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Të dhënat celulare janë aktive"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Të dhënat celulare janë joaktive"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Nuk është caktuar të përdorë të dhënat"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Joaktiv"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Po lidhet me \"bluetooth\"."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"modaliteti i aeroplanit"</string>
@@ -187,7 +191,7 @@
<string name="carrier_network_change_mode" msgid="8149202439957837762">"Rrjeti i operatorit celular po ndryshohet"</string>
<string name="accessibility_battery_details" msgid="7645516654955025422">"Hap detajet e baterisë"</string>
<string name="accessibility_battery_level" msgid="7451474187113371965">"Bateria ka edhe <xliff:g id="NUMBER">%d</xliff:g> për qind."</string>
- <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Bateria po ngarkohet, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string>
+ <string name="accessibility_battery_level_charging" msgid="1147587904439319646">"Bateria po karikohet, <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>%%."</string>
<string name="accessibility_settings_button" msgid="799583911231893380">"Cilësimet e sistemit."</string>
<string name="accessibility_notifications_button" msgid="4498000369779421892">"Njoftimet."</string>
<string name="accessibility_overflow_action" msgid="5681882033274783311">"Shiko të gjitha njoftimet"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Modaliteti i aeroplanit është i aktivizuar."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"heshtje e plotë"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"vetëm alarmet"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Mos shqetëso."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Mos shqetëso\" është i çaktivizuar."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Mos shqetëso\" është i aktivizuar."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Mos shqetëso."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Funksioni \"Mos shqetëso\" është çaktivizuar."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"Mos shqetëso\" është aktivizuar."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth-i."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"\"Bluetooth-i\" është i çaktivizuar."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"\"Bluetooth-i\" është i aktivizuar."</string>
@@ -257,7 +261,7 @@
<string name="accessibility_quick_settings_sensor_privacy_changed_off" msgid="5152819588955163090">"Privatësia e sensorëve është çaktivizuar."</string>
<string name="accessibility_quick_settings_sensor_privacy_changed_on" msgid="529705259565826355">"Privatësia e sensorëve është aktivizuar."</string>
<string name="accessibility_brightness" msgid="8003681285547803095">"Ndriçimi i ekranit"</string>
- <string name="accessibility_ambient_display_charging" msgid="9084521679384069087">"Po ngarkohet"</string>
+ <string name="accessibility_ambient_display_charging" msgid="9084521679384069087">"Po karikohet"</string>
<string name="data_usage_disabled_dialog_3g_title" msgid="5281770593459841889">"Të dhënat 2G-3G janë ndërprerë"</string>
<string name="data_usage_disabled_dialog_4g_title" msgid="1601769736881078016">"Të dhënat 4G janë ndërprerë"</string>
<string name="data_usage_disabled_dialog_mobile_title" msgid="6801382439018099779">"Të dhënat celulare janë ndërprerë"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Kërkesat për vendodhje janë aktive"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Pastro të gjitha njoftimet."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> njoftime të tjera në brendësi.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> njoftim tjetër në brendësi.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Cilësimet e njoftimeve"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Cilësimet e <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekrani do të rrotullohet automatikisht."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Mbrojtësi i ekranit"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Eternet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Trokit dhe mbaj prekur ikonat për më shumë opsione"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Mos shqetëso"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Mos shqetëso"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Vetëm me prioritet"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Vetëm alarmet"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Heshtje e plotë"</string>
@@ -370,9 +374,9 @@
<string name="recents_quick_scrub_onboarding" msgid="2778062804333285789">"Zvarrit djathtas për të ndërruar aplikacionet me shpejtësi"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7171470775439860480">"Kalo te përmbledhja"</string>
<string name="expanded_header_battery_charged" msgid="5945855970267657951">"I ngarkuar"</string>
- <string name="expanded_header_battery_charging" msgid="205623198487189724">"Po ngarkohet"</string>
+ <string name="expanded_header_battery_charging" msgid="205623198487189724">"Po karikohet"</string>
<string name="expanded_header_battery_charging_with_time" msgid="457559884275395376">"<xliff:g id="CHARGING_TIME">%s</xliff:g> deri sa të mbushet"</string>
- <string name="expanded_header_battery_not_charging" msgid="4798147152367049732">"Nuk po ngarkohet"</string>
+ <string name="expanded_header_battery_not_charging" msgid="4798147152367049732">"Nuk po karikohet"</string>
<string name="ssl_ca_cert_warning" msgid="9005954106902053641">"Rrjeti mund\ntë monitorohet"</string>
<string name="description_target_search" msgid="3091587249776033139">"Kërko"</string>
<string name="description_direction_up" msgid="7169032478259485180">"Rrëshqit lart për <xliff:g id="TARGET_DESCRIPTION">%s</xliff:g>."</string>
@@ -398,10 +402,10 @@
<string name="interruption_level_none_twoline" msgid="3957581548190765889">"Heshtje\ne plotë"</string>
<string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Vetëm\nme prioritet"</string>
<string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Vetëm\nalarmet"</string>
- <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po ngarkohet me valë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
- <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po ngarkohet (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
- <string name="keyguard_indication_charging_time_fast" msgid="7767562163577492332">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po ngarkohet me shpejtësi (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
- <string name="keyguard_indication_charging_time_slowly" msgid="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po ngarkohet ngadalë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
+ <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me valë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
+ <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
+ <string name="keyguard_indication_charging_time_fast" msgid="7767562163577492332">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me shpejtësi (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
+ <string name="keyguard_indication_charging_time_slowly" msgid="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet ngadalë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="7305948938141024937">"Ndërro përdorues"</string>
<string name="accessibility_multi_user_switch_switcher_with_current" msgid="8434880595284601601">"Ndërro përdoruesin. Përdoruesi aktual është <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string>
<string name="accessibility_multi_user_switch_inactive" msgid="1424081831468083402">"Përdoruesi aktual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"\"Kursyesi i baterisë\" është i aktivizuar"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Pakëson veprimtarinë dhe të dhënat në sfond"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Çaktivizo \"Kursyesin e baterisë\""</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> do të fillojë të regjistrojë çdo gjë në ekranin tënd, duke përfshirë njoftimet, fjalëkalimet, fotografitë, mesazhet dhe informacionet e pagesës."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Të lejohet që <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> të regjistrojë ose të transmetojë ekranin tënd?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Gjatë regjistrimit ose transmetimit, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> mund të kapë çdo informacion delikat, si p.sh. audion që luan ti dhe fjalëkalimet e tua, informacionet e pagesës, fotografitë dhe mesazhet."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Ekspozimi i informacioneve delikate gjatë transmetimit/regjistrimit"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Mos e shfaq sërish"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Pastroji të gjitha"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Menaxho"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Cilësimet e zërit"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Zgjeroje"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Mbylle"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Media me titra automatike"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Mbylle këshillën për nëntitullin"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Ndërro pajisjen e daljes"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekrani u gozhdua"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Kjo e ruan në pamje deri sa ta heqësh nga gozhdimi. Prek dhe mbaj të shtypur \"Prapa\" dhe \"Përmbledhje\" për ta hequr nga gozhdimi."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Këto njoftime do të të sinjalizojnë"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Këto njoftime ti zakonisht i largon. \nDëshiron të vazhdosh t\'i shfaqësh ato?"</string>
<string name="inline_done_button" msgid="492513001558716452">"U krye"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Zbato"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Do të vazhdosh t\'i shfaqësh këto njoftime?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Ndalo njoftimet"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Dërgo në heshtje"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blloko"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Vazhdo të shfaqësh"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimizo"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Shfaq në heshtje"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Lehtë"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Qëndro në heshtje"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Më sinjalizo"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Ndërprerës"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Vazhdo të sinjalizosh"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Çaktivizo njoftimet"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Do të vazhdosh t\'i shfaqësh njoftimet nga ky aplikacion?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Njoftimet e bllokuara nuk shfaqen në asnjë vend dhe nuk luajnë asnjë tingull. Mund t\'i zhbllokosh njoftimet te cilësimet."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Njoftimet në heshtje shfaqen në hije, por nuk shfaqen në ekranin e kyçjes, nuk paraqesin një banderolë dhe nuk luajnë asnjë tingull."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Këto njoftime do të lëshojnë një tingull dhe do të shfaqen në sirtarin e njoftimeve, shiritin e statusit dhe ekranin e kyçjes"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Këto njoftime nuk mund të çaktivizohen"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"nëpërmjet <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ky aplikacion po përdor kamerën."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ky aplikacion po përdor mikrofonin."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendari"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Shfaq me kontrollet e volumit"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Mos shqetëso"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Mos shqetëso"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Shkurtorja e butonave të volumit"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Dil nga \"Mos shqetëso\" me volumin lart"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Dil nga \"Mos shqetëso\" me butonin e rritjes së volumit"</string>
<string name="battery" msgid="7498329822413202973">"Bateria"</string>
<string name="clock" msgid="7416090374234785905">"Ora"</string>
<string name="headset" msgid="4534219457597457353">"Kufjet me mikrofon"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Shko te shfletuesi"</string>
<string name="mobile_data" msgid="7094582042819250762">"Të dhënat celulare"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi është joaktiv"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth-i është joaktiv"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Modaliteti \"Mos shqetëso\" është joaktiv"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Cilësimet"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"E kuptova"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Hidh grumbullin SysUI"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> aplikacione</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplikacion</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> po përdor <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikacionet po përdorin <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Në përdorim:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> aplikacione po përdorin <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> aplikacion po përdor <xliff:g id="TYPE_1">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"E kuptova"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Cilësimet e privatësisë"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Aplikacionet që po përdorin <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Aplikacionet që po përdorin <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" dhe "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamerën"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"vendndodhjen"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofonin"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> aplikacione të tjera</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> aplikacion tjetër</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorët joaktivë"</string>
<string name="device_services" msgid="1191212554435440592">"Shërbimet e pajisjes"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Pa titull"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Trokit për ta rinisur këtë aplikacion dhe për të kaluar në ekranin e plotë."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Hap <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Hap cilësimet e njoftimeve për <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Të lejohen flluskat nga ky aplikacion?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blloko"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Cilësimet për flluskat e <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Të lejohen flluskat nga <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Refuzo"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Lejo"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Më pyet më vonë"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> nga <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> nga <xliff:g id="APP_NAME">%2$s</xliff:g> dhe <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> të tjera"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Zhvendos"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Zhvendos lart majtas"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Lëviz lart djathtas"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Zhvendos poshtë majtas"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Lëvize poshtë djathtas"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 8dec319db201..c3e1c941067b 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Користите пуњач који сте добили уз уређај"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Подешавања"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Желите ли да укључите Уштеду батерије?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"О Уштеди батерије"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Укључи"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Укључи Уштеду батерије"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Подешавања"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Корисник који је тренутно пријављен на овај уређај не може да укључи отклањање грешака на USB-у. Да бисте користили ову функцију, пребаците на примарног корисника."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB порт је онемогућен"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Да би се уређај заштитио од течности или нечистоће, USB порт је онемогућен и неће откривати додатну опрему.\n\nОбавестићемо вас када поново будете могли да користите USB порт."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB порт је омогућен ради откривања пуњача и додатне опреме"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Омогући USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Зумирај на целом екрану"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Развуци на цео екран"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Снимак екрана"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Откључај без коришћења отиска прста"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Скенирање лица"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Пошаљи"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Управљајте обавештењима"</string>
<string name="unlock_label" msgid="8779712358041029439">"откључај"</string>
<string name="phone_label" msgid="2320074140205331708">"отвори телефон"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"отвори гласовну помоћ"</string>
<string name="camera_label" msgid="7261107956054836961">"отвори камеру"</string>
<string name="cancel" msgid="6442560571259935130">"Откажи"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Област поруке за помоћ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Потврди"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Пробај поново"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Додирните сензор за отисак прста"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобилни подаци"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобилни подаци су укључени"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобилни подаци су искључени"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Није подешено за коришћење података"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Искључено"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth привезивање."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим рада у авиону."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Режим рада у авиону је укључен."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"потпуна тишина"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"само аларми"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не узнемиравај."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Подешавање Не узнемиравај је искључено."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Подешавање Не узнемиравај је укључено."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Не узнемиравај."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Подешавање Не узнемиравај је искључено."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Подешавање Не узнемиравај је укључено."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth је искључен."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth је укључен."</string>
@@ -269,12 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Има активних захтева за локацију"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Обриши сва обавештења."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"и још <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, још <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Још <xliff:g id="NUMBER_1">%s</xliff:g> обавештење у групи.</item>
<item quantity="few">Још <xliff:g id="NUMBER_1">%s</xliff:g> обавештења у групи.</item>
<item quantity="other">Још <xliff:g id="NUMBER_1">%s</xliff:g> обавештења у групи.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Подешавања обавештења"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Подешавања за <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран ће се аутоматски ротирати."</string>
@@ -287,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Чувар екрана"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Етернет"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Додирните и задржите иконе за још опција"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Не узнемиравај"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Не узнемиравај"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Само приоритетни прекиди"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Само аларми"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Потпуна тишина"</string>
@@ -440,8 +444,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Уштеда батерије је укључена"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Смањује перформансе и позадинске податке"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Искључи Уштеду батерије"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ће почети да снима све на екрану, укључујући обавештења, лозинке, слике, поруке и информације о плаћању."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Желите ли да дозволите да <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> снима или пребацује садржај екрана?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Када снимате или пребацујете, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> може да чува осетљиве информације, као што су звук који репродукујете и лозинке, информације о плаћању, слике и поруке."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Откривање осетљивих информација током пребацивања/снимања"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Не приказуј поново"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Обриши све"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Управљајте"</string>
@@ -516,6 +520,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Подешавања звука"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Прошири"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Скупи"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Аутоматски титл за медије"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Опис титла"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Промените излазни уређај"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Екран је закачен"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"На овај начин се ово стално приказује док га не откачите. Додирните и задржите Назад и Преглед да бисте га откачили."</string>
@@ -616,18 +622,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ова обавештења ће вас упозоравати"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Обично одбацујете ова обавештења. \nЖелите ли да се и даље приказују?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Готово"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Примени"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Желите ли да се ова обавештења и даље приказују?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Престани да приказујеш обавештења"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Шаљи без звука"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Блокирај"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Настави да приказујеш"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Умањи"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Прикажи без звука"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Дискретно"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Не укључуј звук"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Обавести ме"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Ометајућа"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Настави са обавештењима"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Искључи обавештења"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Желите ли да се обавештења из ове апликације и даље приказују?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Блокирана обавештења се не приказују и не репродукују звук. Обавештења можете да одблокирате у подешавањима."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Нечујна обавештења се приказују на траци, али се не приказују на закључаном екрану, не приказују банер и не репродукују звук."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ова обавештења ће емитовати звук и приказиваће се у фиоци за обавештења, статусној траци и на закључаном екрану"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Не можете да искључите ова обавештења"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ова група обавештења не може да се конфигурише овде"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"преко апликације <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ова апликација користи камеру."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ова апликација користи микрофон."</string>
@@ -708,9 +720,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Календар"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Прикажи са контролама јачине звука"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Не узнемиравај"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Не узнемиравај"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Пречица за дугмад за јачину звука"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Изађи из режима Не узнемиравај када је звук појачан"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Изађи из режима Не узнемиравај када је звук појачан"</string>
<string name="battery" msgid="7498329822413202973">"Батерија"</string>
<string name="clock" msgid="7416090374234785905">"Сат"</string>
<string name="headset" msgid="4534219457597457353">"Наглавне слушалице"</string>
@@ -851,6 +863,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Иди на прегледач"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобилни подаци"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi је искључен"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth је искључен"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Режим Не узнемиравај је искључен"</string>
@@ -880,39 +893,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Подешавања"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Важи"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Издвоји SysUI мем."</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> апликација</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> апликације</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> апликација</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> користи <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Апликације користе <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"У употреби"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> апликација користи дозволу <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="few"><xliff:g id="NUM_APPS_2">%1$d</xliff:g> апликације користе дозволу <xliff:g id="TYPE_3">%2$s</xliff:g>.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> апликација користи дозволу <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Важи"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Подешав. приватности"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Апликација која користи дозволе <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Апликације које користе дозволе <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" и "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камеру"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"локацију"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"микрофон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">И још <xliff:g id="NUM_APPS_1">%d</xliff:g> апликација</item>
- <item quantity="few">И још <xliff:g id="NUM_APPS_1">%d</xliff:g> апликације</item>
- <item quantity="other">И још <xliff:g id="NUM_APPS_1">%d</xliff:g> апликација</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Сензори су искључени"</string>
<string name="device_services" msgid="1191212554435440592">"Услуге за уређаје"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без наслова"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Додирните да бисте рестартовали апликацију и прешли у режим целог екрана."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Отворите <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Отворите подешавања обавештења за <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Желите ли да дозволите облачиће из ове апликације?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Блокирај"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Подешавања за <xliff:g id="APP_NAME">%1$s</xliff:g> облачиће"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Желите ли да омогућите облачиће из апликације <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Одбиј"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Дозволи"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Питај ме касније"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> из апликације <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> из апликације <xliff:g id="APP_NAME">%2$s</xliff:g> и још <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Премести"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Премести горе лево"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Премести горе десно"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Премести доле лево"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Премести доле десно"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 106298a2a0ff..380acc830c27 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Använd laddaren som följde med enheten."</string>
<string name="battery_low_why" msgid="4553600287639198111">"Inställningar"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Vill du aktivera batterisparläget?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Om batterisparläget"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aktivera"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Aktivera batterisparläget"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Inställningar"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Användaren som är inloggad på enheten för närvarande kan inte aktivera USB-felsökning. Byt till den primära användaren om du vill använda den här funktionen."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-porten har inaktiverats"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"USB-porten har inaktiverats för att skydda enheten mot vätska eller smuts. Inga tillbehör kommer att hittas.\n\nDu meddelas när det går att använda USB-porten igen."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB-porten har aktiverats för identifiering av laddare och tillbehör"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Aktivera USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Zooma för att fylla skärm"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Dra för att fylla skärmen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Skärmdump"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Lås upp utan att använda fingeravtryck"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Registrerar ansikte"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Skicka"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Hantera aviseringar"</string>
<string name="unlock_label" msgid="8779712358041029439">"lås upp"</string>
<string name="phone_label" msgid="2320074140205331708">"öppna mobilen"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"öppna röstassistenten"</string>
<string name="camera_label" msgid="7261107956054836961">"öppna kameran"</string>
<string name="cancel" msgid="6442560571259935130">"Avbryt"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Område för hjälpmeddelande"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Bekräfta"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Försök igen"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Tryck på fingeravtryckssensorn"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobildata"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobildata har aktiverats"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobildata har inaktiverats"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Inte inställd på mobildata"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Av"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Internetdelning via Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Flygplansläge"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Flygplansläget har aktiverats."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"helt tyst"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"endast alarm"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Stör ej."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Stör ej har inaktiverats."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Stör ej har aktiverats."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Stör ej."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Stör ej har inaktiverats."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Stör ej har aktiverats."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth av."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth på."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Det finns aktiva platsbegäranden"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Ta bort alla meddelanden."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> till"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> fler aviseringar i gruppen.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> till avisering i gruppen.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Aviseringsinställningar"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Inställningar för <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skärmen roteras automatiskt."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Skärmsläckare"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Tryck länge på ikonerna om du vill se fler alternativ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Stör ej"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Stör ej"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Endast prioriterade"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Endast alarm"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Helt tyst"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Batterisparläget är aktiverat"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Minskar prestanda och bakgrundsdata"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Inaktivera batterisparläget"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> börjar spela in allt på skärmen, inklusive aviseringar, lösenord, foton, meddelanden och betalningsuppgifter."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Vill du tillåta att <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> spelar in eller castar skärmen?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> kan registrera känsliga uppgifter, till exempel ljud som du spelar upp och lösenord, betalningsuppgifter, foton samt meddelanden när du spelar in eller castar."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Avslöja känsliga uppgifter under inspelning och vid castning"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Visa inte igen"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Rensa alla"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Hantera"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ljudinställningar"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Utöka"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Komprimera"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Texta media automatiskt"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Textningstips"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Byt enhet för utdata"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skärmen har fästs"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Skärmen visas tills du lossar den. Tryck länge på Tillbaka och Översikt om du vill lossa skärmen."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Dessa aviseringar visas med ljud"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Du brukar avvisa de här aviseringarna. \nVill du fortsätta att visa dem?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Klart"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Tillämpa"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Vill du fortsätta visa de här aviseringarna?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Stoppa aviseringar"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Leverera utan ljud"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Blockera"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Fortsätt visa"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Minimera"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Visa utan ljud"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Utan avbrott"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Fortsätt visa utan ljud"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Meddela mig"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Avbrott"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Fortsätt meddela"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Inaktivera aviseringar"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Vill du fortsätta visa aviseringar för den här appen?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Ljud spelas inte upp för blockerade aviseringar och de visas inte någonstans. Du kan återaktivera aviseringar i inställningarna."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Ljudlösa aviseringar visas i panelen men inte på låsskärmen eller som en banner och inget ljud spelas upp."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"De här aviseringarna visas i aviseringspanelen, statusfältet och på låsskärmen och ett ljud spelas upp"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"De här aviseringarna kan inte inaktiveras"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Den här aviseringsgruppen kan inte konfigureras här"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"via <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Kameran används av appen."</string>
<string name="appops_microphone" msgid="741508267659494555">"Mikrofonen används av appen."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalender"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Visa med volymkontroller"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Stör ej"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Stör ej"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Genväg till volymknappar"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Inaktivera Stör ej när volymen höjs"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Inaktivera Stör ej när volymen höjs"</string>
<string name="battery" msgid="7498329822413202973">"Batteri"</string>
<string name="clock" msgid="7416090374234785905">"Klocka"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Öppna webbläsaren"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobildata"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi är inaktiverat"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth är inaktiverat"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Stör ej är inaktiverat"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Inställningar"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dumpa SysUI-heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> appar</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="TYPES_LIST">%2$s</xliff:g> används av <xliff:g id="APP">%1$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"<xliff:g id="TYPES_LIST">%s</xliff:g> används av appar."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Används:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="TYPE_5">%2$s</xliff:g> används av <xliff:g id="NUM_APPS_4">%1$d</xliff:g> appar.</item>
- <item quantity="one"><xliff:g id="TYPE_1">%2$s</xliff:g> används av <xliff:g id="NUM_APPS_0">%1$d</xliff:g> app.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Sekretessinställn."</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"En app använder din <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Appar använder dina <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" och "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"plats"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> andra appar</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> annan app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorer har inaktiverats"</string>
<string name="device_services" msgid="1191212554435440592">"Enhetstjänster"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Ingen titel"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Tryck för att starta om appen i helskärmsläge."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Öppna <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Öppna aviseringsinställningarna för <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Tillåter du bubblor från den här appen?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Blockera"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Inställningar för <xliff:g id="APP_NAME">%1$s</xliff:g>-bubblor"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Vill du tillåta bubblor från <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Neka"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Tillåt"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Fråga senare"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> från <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> från <xliff:g id="APP_NAME">%2$s</xliff:g> och <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> fler"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Flytta"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Flytta högst upp till vänster"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Flytta högst upp till höger"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Flytta längst ned till vänster"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Flytta längst ned till höger"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 1df75f6b1cbc..f359ac0388b7 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Tumia chaja ambayo ilikuja na kifaa chako"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Mipangilio"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Ungependa Kuwasha Kiokoa Betri?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Kuhusu Kiokoa betri"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Washa"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Washa Kiokoa Betri"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Mipangilio"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Mtumiaji aliyeingia katika akaunti kwa kutumia kifaa hiki kwa sasa hawezi kuwasha utatuzi wa USB. Ili utumie kipengele hiki, tumia akaunti ya mtumiaji wa msingi."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Mlango wa USB umezimwa"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Ili ulinde kifaa chako dhidi ya vitu vya unyevu au uchafu, mlango wa USB umezimwa na hautatambua vifaa vyovyote.\n\nUtaarifiwa itapokuwa salama kutumia mlango wa USB tena."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Mlango wa USB umewezeshwa ili utambue chaja na vifuasi"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Washa kipengele cha USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Kuza ili kujaza skrini"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Tanua ili kujaza skrini"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Picha ya skrini"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Fungua bila kutumia kitambulisho chako"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Inachanganua uso"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Tuma"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Dhibiti arifa"</string>
<string name="unlock_label" msgid="8779712358041029439">"fungua"</string>
<string name="phone_label" msgid="2320074140205331708">"fungua simu"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"fungua mapendekezo ya sauti"</string>
<string name="camera_label" msgid="7261107956054836961">"fungua kamera"</string>
<string name="cancel" msgid="6442560571259935130">"Ghairi"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Sehemu ya ujumbe wa usaidizi"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Thibitisha"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Jaribu tena"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Gusa kitambua alama ya kidole"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Data ya Simu"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Data ya Simu Imewashwa"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Umezima data ya mtandao wa simu"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Haijawekewa mipangilio ya kutumia data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Zima"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Shiriki intaneti kwa Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Hali ya ndegeni."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Hali ya ndegeni imewashwa."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"kimya kabisa"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"kengele pekee"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Usinisumbue."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Kipengee cha usinisumbue kimezimwa."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Kipengee cha usinisumbue kimewashwa."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Usinisumbue."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Kipengee cha Usinisumbue kimezimwa."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Kipengee cha Usinisumbue kimewashwa."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth imezimwa."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth imewashwa."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Maombi ya eneo yanatumika"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Futa arifa zote."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Kuna arifa <xliff:g id="NUMBER_1">%s</xliff:g> zaidi katika kikundi.</item>
<item quantity="one">Kuna arifa <xliff:g id="NUMBER_0">%s</xliff:g> zaidi katika kikundi.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Mipangilio ya arifa"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Mipangilio ya <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Skrini itazunguka kiotomatiki."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Taswira ya skrini"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Gusa na ushikilie aikoni ili upate chaguo zaidi"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Usinisumbue"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Usinisumbue"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Kipaumbele tu"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Kengele pekee"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Kimya kabisa"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Kiokoa Betri kimewashwa"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Hupunguza utendaji na data ya chini chini"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Zima Kiokoa Betri"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> itaanza kurekodi kila kitu kwenye skrini ikiwa ni pamoja na arifa, manenosiri, picha, ujumbe na maelezo ya malipo."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Ungependa kuruhusu <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> irekodi au kutuma kwenye skrini yako?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Inaporekodi au kutuma, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> inaweza kunasa maelezo nyeti, kama vile sauti unazozicheza na manenosiri yako, maelezo ya malipo, picha na ujumbe."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Inatoa maelezo nyeti wakati wa kutuma/kurekodi"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Usionyeshe tena"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Futa zote"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Dhibiti"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Mipangilio ya sauti"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Panua"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Kunja"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Wekea maudhui manukuu kiotomatiki"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Funga kidokezo cha manukuu"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Badilisha kifaa cha kutoa sauti"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Skrini imebandikwa"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Hali hii huifanya ionekane hadi utakapoibandua. Gusa na ushikilie kipengele cha Nyuma na Muhtasari ili ubandue."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Arifa hizi zitatoa sauti"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Wewe huondoa arifa hizi. \nUngependa kuzionyesha?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Nimemaliza"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Tumia"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Ungependa kuendelea kuonyesha arifa hizi?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Acha kuonyesha arifa"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Wasilisha bila Kutoa Sauti"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Zuia"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Endelea kuonyesha"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Punguza"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Ionyeshe bila kutoa sauti"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Bila sauti"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Isitoe sauti"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Niarifu"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Za kukatiza"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Endelea kutoa arifa"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Zima arifa"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Ungependa kuendelea kuonyesha arifa kutoka programu hii?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Arifa zilizozuiwa haziwezi kuonekana mahali popote au kucheza sauti. Unaweza kuondoa kizuizi kwenye arifa katika mipangilio."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Arifa za kimya huonekana katika kivuli, lakini hazionekani kwenye skrini iliyofungwa, haziwasilishi bango au hazichezi sauti."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Arifa hizi zitatoa sauti na kuonyeshwa kwenye droo ya arifa, sehemu ya arifa na skrini iliyofungwa"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Huwezi kuzima arifa hizi"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"kupitia <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Programu hii inatumia kamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Programu hii inatumia maikrofoni."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Onyesha katika vidhibiti vya sauti"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Usinisumbue"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Usinisumbue"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Njia ya mkato ya vitufe vya sauti"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Ondoa hali ya usinisumbue sauti inapoongezwa"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Funga kipengele cha Usinisumbue sauti inapoongezwa"</string>
<string name="battery" msgid="7498329822413202973">"Betri"</string>
<string name="clock" msgid="7416090374234785905">"Saa"</string>
<string name="headset" msgid="4534219457597457353">"Vifaa vya sauti"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Tumia kivinjari"</string>
<string name="mobile_data" msgid="7094582042819250762">"Data ya simu"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g><xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi imezimwa"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth imezimwa"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Kipengele cha Usinisumbue kimezimwa"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Mipangilio"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Nimeelewa"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other">Programu <xliff:g id="NUM_APPS_2">%d</xliff:g></item>
- <item quantity="one">Programu <xliff:g id="NUM_APPS_0">%d</xliff:g></item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> inatumia <xliff:g id="TYPES_LIST">%2$s</xliff:g> yako."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Programu zinatumia <xliff:g id="TYPES_LIST">%s</xliff:g> yako."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Inatumika:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">Programu <xliff:g id="NUM_APPS_4">%1$d</xliff:g> zinatumia <xliff:g id="TYPE_5">%2$s</xliff:g> yako.</item>
- <item quantity="one">Programu <xliff:g id="NUM_APPS_0">%1$d</xliff:g> inatumia <xliff:g id="TYPE_1">%2$s</xliff:g> yako.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Nimeelewa"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Mipangilio ya faragha"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Programu inayotumia <xliff:g id="TYPES_LIST">%s</xliff:g> yako"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Programu zinazotumia <xliff:g id="TYPES_LIST">%s</xliff:g> yako"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" na "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"mahali"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"maikrofoni"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Programu zingine <xliff:g id="NUM_APPS_1">%d</xliff:g></item>
- <item quantity="one">Programu nyingine <xliff:g id="NUM_APPS_0">%d</xliff:g></item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Umezima vitambuzi"</string>
<string name="device_services" msgid="1191212554435440592">"Huduma za Kifaa"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Wimbo hauna jina"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Gusa ili uzime na uwashe upya programu hii kisha nenda kwenye skrini nzima."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Fungua <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Fungua mipangilio ya arifa ya <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Ruhusu viputo kutoka programu hii?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Zuia"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Mipangilio ya viputo vya <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Je, ungependa kuruhusu viputo kutoka <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Kataa"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Ruhusu"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Niulize baadaye"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> kutoka kwa <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> kutoka kwa <xliff:g id="APP_NAME">%2$s</xliff:g> na nyingine<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Sogeza"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Sogeza juu kushoto"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Sogeza juu kulia"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Sogeza chini kushoto"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Sogeza chini kulia"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index c67b6f3b0443..edfb20de3806 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -34,6 +34,8 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"உங்கள் சாதனத்துடன் வழங்கப்பட்ட சார்ஜரைப் பயன்படுத்தவும்"</string>
<string name="battery_low_why" msgid="4553600287639198111">"அமைப்பு"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"பேட்டரி சேமிப்பானை ஆன் செய்யவா?"</string>
+ <!-- no translation found for battery_saver_confirmation_title_generic (2090922638411744540) -->
+ <skip />
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"இயக்கு"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"பேட்டரி சேமிப்பானை ஆன் செய்"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"அமைப்பு"</string>
@@ -62,6 +64,10 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"தற்போது இந்தச் சாதனத்தில் உள்நுழைந்துள்ள பயனரால் USB பிழைதிருத்தத்தை இயக்க முடியாது. இந்த அம்சத்தை இயக்க, முதன்மைப் பயனருக்கு மாறவும்."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB போர்ட் முடக்கப்பட்டது"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"தேவையற்றவையில் இருந்து உங்கள் சாதனத்தைப் பாதுகாக்க, USB போர்ட் முடக்கப்பட்டுள்ளது, மேலும் எந்த துணைக் கருவிகளையும் கண்டறியாது.\n\nUSB போர்ட்டை மீண்டும் எப்போது பாதுகாப்பாகப் பயன்படுத்தலாம் என்பதைப் பற்றி உங்களுக்குத் தெரிவிக்கப்படும்."</string>
+ <!-- no translation found for usb_port_enabled (7906141351687694867) -->
+ <skip />
+ <!-- no translation found for usb_disable_contaminant_detection (2103905315747120033) -->
+ <skip />
<string name="compat_mode_on" msgid="6623839244840638213">"திரையை நிரப்ப அளவை மாற்று"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"திரையை நிரப்ப இழு"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ஸ்கிரீன்ஷாட்"</string>
@@ -279,6 +285,8 @@
<item quantity="other">உள்ளே மேலும் <xliff:g id="NUMBER_1">%s</xliff:g> அறிவிப்புகள் உள்ளன.</item>
<item quantity="one">உள்ளே மேலும் <xliff:g id="NUMBER_0">%s</xliff:g> அறிவிப்பு உள்ளது.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"அறிவிப்பு அமைப்புகள்"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> அமைப்புகள்"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"திரை தானாகச் சுழலும்."</string>
@@ -625,7 +633,7 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"இந்த அறிவிப்புகள் விழிப்பூட்டலாக அமையும்"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"வழக்கமாக, இந்த அறிவிப்புகளை நிராகரிக்கிறீர்கள். \nதொடர்ந்து இவற்றைக் காட்டலாமா?"</string>
<string name="inline_done_button" msgid="492513001558716452">"முடிந்தது"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
<skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"இந்த அறிவிப்புகளைத் தொடர்ந்து காட்டவா?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"அறிவிப்புகளை நிறுத்து"</string>
@@ -633,19 +641,24 @@
<string name="inline_block_button" msgid="8735843688021655065">"தடு"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"அறிவிப்புகளைத் தொடர்ந்து காட்டு"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"சிறிதாக்கு"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"ஒலிக்காமல் காட்டு"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"அறிவிப்புகளை ஒலியின்றிக் காட்டு"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
<skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"தொடர்ந்து விழிப்பூட்டு"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"இந்தப் பயன்பாட்டின் அறிவிப்புகளைத் தொடர்ந்து காட்டவா?"</string>
<!-- no translation found for hint_text_block (3554459167504485284) -->
<skip />
<!-- no translation found for hint_text_silent (859468056340177016) -->
<skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
<skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"இந்த அறிவிப்புகளை ஆஃப் செய்ய முடியாது"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> மூலமாக"</string>
<string name="appops_camera" msgid="8100147441602585776">"இந்த ஆப்ஸானது கேமராவை உபயோகிக்கிறது."</string>
<string name="appops_microphone" msgid="741508267659494555">"இந்த ஆப்ஸானது, மைக்ரோஃபோனை உபயோகிக்கிறது."</string>
@@ -869,6 +882,8 @@
<string name="go_to_web" msgid="2650669128861626071">"உலாவிக்குச் செல்"</string>
<string name="mobile_data" msgid="7094582042819250762">"மொபைல் டேட்டா"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <!-- no translation found for mobile_carrier_text_format (3241721038678469804) -->
+ <skip />
<string name="wifi_is_off" msgid="1838559392210456893">"வைஃபை முடக்கத்தில் உள்ளது"</string>
<string name="bt_is_off" msgid="2640685272289706392">"புளூடூத் முடக்கத்தில் உள்ளது"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"தொந்தரவு செய்ய வேண்டாம்\" முடக்கத்தில் உள்ளது"</string>
@@ -900,10 +915,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"உங்கள் <xliff:g id="TYPES_LIST">%2$s</xliff:g>ஐ <xliff:g id="APP">%1$s</xliff:g> ஆப்ஸ் பயன்படுத்துகிறது."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"உங்கள் <xliff:g id="TYPES_LIST">%s</xliff:g> ஆகியவற்றை ஆப்ஸ் பயன்படுத்துகின்றன."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"சரி"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"தனியுரிமை அமைப்புகள்"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"உங்கள் <xliff:g id="TYPES_LIST">%s</xliff:g> ஆகியவற்றைப் பயன்படுத்தும் ஆப்ஸ்"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"உங்கள் <xliff:g id="TYPES_LIST">%s</xliff:g> ஆகியவற்றைப் பயன்படுத்தும் ஆப்ஸ்"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" மற்றும் "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"கேமரா"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 86f3a874f1cb..ab562042e7a3 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"మీ పరికరంతో వచ్చిన ఛార్జర్‌ను ఉపయోగించండి"</string>
<string name="battery_low_why" msgid="4553600287639198111">"సెట్టింగ్‌లు"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"బ్యాటరీ సేవర్‌ను ఆన్ చేయాలా?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"బ్యాటరీ సేవర్ గురించి"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"ఆన్ చేయి"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"బ్యాటరీ సేవర్‌ను ఆన్ చేయండి"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"సెట్టింగ్‌లు"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ఈ పరికరానికి ప్రస్తుతం సైన్ ఇన్ చేసిన వినియోగదారు USB డీబగ్గింగ్ ఆన్ చేయలేరు. ఈ ఫీచర్ ఉపయోగించడానికి, ప్రాథమిక వినియోగదారుకి మారాలి."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB పోర్ట్‌ నిలిపివేయబడింది"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"మీ పరికరాన్ని ద్రవ లేదా వ్యర్థ పదార్థాల నుండి కాపాడే తరుణంలో USB పోర్ట్‌ని నిలిపివేయడంతో పాటు ఎలాంటి యాక్సెసరీస్‌ను గుర్తించలేదు.\n\n కనుక USB పోర్ట్‌ని ఉపయోగించడం సురక్షితం అయ్యాక, మళ్లీ మీకో నోటిఫికేషన్‌ రూపంలో తెలియజేస్తాం."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"ఛార్జర్‌లు, యాక్సెసరీలను గుర్తించే విధంగా USB పోర్ట్ ప్రారంభించబడింది"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USBని ప్రారంభించు"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"స్క్రీన్‌కు నింపేలా జూమ్ చేయండి"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"స్క్రీన్‌కు నింపేలా విస్తరించండి"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"స్క్రీన్‌షాట్"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"మీ వేలిముద్రను ఉపయోగించకుండా అన్‌లాక్ చేయండి"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"ముఖాన్ని స్కాన్ చేస్తోంది"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"పంపు"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"నోటిఫికేషన్‌లను నిర్వహించండి"</string>
<string name="unlock_label" msgid="8779712358041029439">"అన్‌లాక్ చేయి"</string>
<string name="phone_label" msgid="2320074140205331708">"ఫోన్‌ను తెరువు"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"వాయిస్ అసిస్టెంట్‌ను తెరువు"</string>
<string name="camera_label" msgid="7261107956054836961">"కెమెరాను తెరువు"</string>
<string name="cancel" msgid="6442560571259935130">"రద్దు చేయి"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"సహాయ సందేశ ప్రాంతం"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"నిర్ధారించు"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"మళ్లీ ప్రయత్నించు"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"వేలిముద్ర సెన్సార్‌ను తాకండి"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"మొబైల్ డేటా"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"మొబైల్ డేటా ఆన్ చేయబడింది"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"మొబైల్ డేటా ఆఫ్‌లో ఉంది"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"డేటాను ఉపయోగించే విధంగా సెట్ చేయలేదు"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ఆఫ్ చేయండి"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"బ్లూటూత్ టెథెరింగ్."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ఎయిర్‌ప్లేన్ మోడ్."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ఎయిర్‌ప్లేన్ మోడ్ ఆన్ చేయబడింది."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"మొత్తం నిశ్శబ్దం"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"అలారాలు మాత్రమే"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"అంతరాయం కలిగించవద్దు."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"అంతరాయం కలిగించవద్దు ఆఫ్ చేయబడింది."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"అంతరాయం కలిగించవద్దు ఆన్ చేయబడింది."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"అంతరాయం కలిగించవద్దు."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"అంతరాయం కలిగించవద్దు ఆఫ్ చేయబడింది."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"అంతరాయం కలిగించవద్దు ఆన్ చేయబడింది."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"బ్లూటూత్."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"బ్లూటూత్ ఆఫ్‌లో ఉంది."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"బ్లూటూత్ ఆన్‌లో ఉంది."</string>
@@ -269,11 +273,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"స్థాన అభ్యర్థనలు సక్రియంగా ఉన్నాయి"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"అన్ని నోటిఫికేషన్‌లను క్లియర్ చేయండి."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">లోపల మరో <xliff:g id="NUMBER_1">%s</xliff:g> నోటిఫికేషన్‌లు ఉన్నాయి.</item>
<item quantity="one">లోపల మరో <xliff:g id="NUMBER_0">%s</xliff:g> నోటిఫికేషన్ ఉంది.</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"నోటిఫికేషన్ సెట్టింగ్‌లు"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> సెట్టింగ్‌లు"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"స్క్రీన్ స్వయంచాలకంగా తిప్పబడుతుంది."</string>
@@ -286,7 +291,7 @@
<string name="start_dreams" msgid="5640361424498338327">"స్క్రీన్ సేవర్"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ఈథర్‌నెట్"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"మరిన్ని ఎంపికల కోసం చిహ్నాలను నొక్కి, పట్టుకోండి"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"అంతరాయం కలిగించవద్దు"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"అంతరాయం కలిగించవద్దు"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ప్రాధాన్యత మాత్రమే"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"అలారాలు మాత్రమే"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"మొత్తం నిశ్శబ్దం"</string>
@@ -437,8 +442,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"బ్యాటరీ సేవర్ ఆన్‌లో ఉంది"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"పనితీరుని మరియు నేపథ్య డేటాను తగ్గిస్తుంది"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"బ్యాటరీ సేవర్‌ను ఆఫ్ చేయండి"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"నోటిఫికేషన్‌లు, పాస్‌వర్డ్‌లు, ఫోటోలు, సందేశాలు మరియు చెల్లింపు సమాచారంతో సహా <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> మీ స్క్రీన్‌లోని ప్రతి సమాచారాన్నీ క్యాప్చర్ చేయడం ప్రారంభిస్తుంది."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"మీ స్క్రీన్‌ను రికార్డ్ లేదా క్యాస్ట్ చేయడానికి <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>ను అనుమతించాలా?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"రికార్డ్ చేేస్తున్నప్పుడు లేదా ప్రసారం చేస్తున్నప్పుడు, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ఏదైనా గోప్యమైన సమాచారాన్ని, అంటే మీరు ప్లే చేసే ఆడియో, మీ పాస్‌వర్డ్‌లు, చెల్లింపు సమాచారం, ఫోటోలు, సందేశాలు లాంటివి క్యాప్చర్ చేయగలుగుతుంది."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"ప్రసారం/రికార్డ్ అయ్యే సమయాలలో గోప్యమైన సమాచారాన్ని బహిర్గతపరచడం"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"మళ్లీ చూపవద్దు"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"అన్నీ క్లియర్ చేయండి"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"నిర్వహించండి"</string>
@@ -513,6 +518,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"ధ్వని సెట్టింగ్‌లు"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"విస్తరింపజేయండి"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"కుదించండి"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ఆటోమేటిక్ క్యాప్షన్ మీడియా"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ఉపశీర్షికల చిట్కాను మూసివేయండి"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"పరికరం అవుట్‌పుట్‌ని మార్చండి"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"స్క్రీన్ పిన్ చేయబడింది"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"దీని వలన మీరు అన్‌పిన్ చేసే వరకు ఇది వీక్షణలో ఉంచబడుతుంది. అన్‌పిన్ చేయడానికి వెనుకకు మరియు స్థూలదృష్టి తాకి &amp; అలాగే పట్టుకోండి."</string>
@@ -613,18 +620,30 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"ఈ నోటిఫికేషన్‌లు మిమ్మల్ని హెచ్చరిస్తాయి"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"మీరు సాధారణంగా ఈ నోటిఫికేషన్‌లను విస్మరిస్తారు. \nవాటి ప్రదర్శనను కొనసాగించాలా?"</string>
<string name="inline_done_button" msgid="492513001558716452">"పూర్తయింది"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"ఈ నోటిఫికేషన్‌లను చూపిస్తూ ఉండాలా?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"నోటిఫికేషన్‌లను ఆపివేయి"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"నిశ్శబ్దంగా బట్వాడా చేయండి"</string>
<string name="inline_block_button" msgid="8735843688021655065">"బ్లాక్ చేయి"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"చూపిస్తూనే ఉండు"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"కుదించు"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"నిశ్శబ్దంగా చూపండి"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"నిశబ్దంగా తెలియజేయి"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"నన్ను హెచ్చరించు"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"ఎప్పటికప్పుడు హెచ్చరించు"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"ఈ యాప్ నుండి నోటిఫికేషన్‌లను చూపిస్తూ ఉండాలా?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"బ్లాక్ చేసిన నోటిఫికే‌షన్‌లు ఎక్కడా కనిపించవు, అలాగే శబ్దం ప్లే కాదు. మీరు సెట్టింగ్‌లలో నోటిఫికేషన్‌లను అన్‌బ్లాక్ చేయవచ్చు."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"నిశ్శబ్ద నోటిఫికేషన్‌లు షేడ్‌లో కనిపిస్తాయి, కానీ లాక్ స్క్రీన్‌పై కనిపించవు, బ్యానర్‌లుగా అందించబడవు, అలాగే సౌండ్ ప్లే కాదు."</string>
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ఈ నోటిఫికేషన్‌లను ఆఫ్ చేయలేరు"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> ద్వారా"</string>
<string name="appops_camera" msgid="8100147441602585776">"ఈ యాప్ ఈ కెమెరాను ఉపయోగిస్తోంది."</string>
<string name="appops_microphone" msgid="741508267659494555">"ఈ యాప్ మైక్రోఫోన్‌ను ఉపయోగిస్తుంది."</string>
@@ -703,9 +722,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"క్యాలెండర్"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"వాల్యూమ్ నియంత్రణలతో చూపు"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"అంతరాయం కలిగించవద్దు"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"అంతరాయం కలిగించవద్దు"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"వాల్యూమ్ బటన్‌ల షార్ట్‌కట్"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"వాల్యూమ్ పెంచితే అంతరాయం కలిగించవద్దు నుండి నిష్క్రమిస్తుంది"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"వాల్యూమ్ పెంచితే అంతరాయం కలిగించవద్దు నుండి నిష్క్రమిస్తుంది"</string>
<string name="battery" msgid="7498329822413202973">"బ్యాటరీ"</string>
<string name="clock" msgid="7416090374234785905">"గడియారం"</string>
<string name="headset" msgid="4534219457597457353">"హెడ్‌సెట్"</string>
@@ -846,6 +865,7 @@
<string name="go_to_web" msgid="2650669128861626071">"బ్రౌజర్‌కు వెళ్లండి"</string>
<string name="mobile_data" msgid="7094582042819250762">"మొబైల్ డేటా"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ఆఫ్‌లో ఉంది"</string>
<string name="bt_is_off" msgid="2640685272289706392">"బ్లూటూత్ ఆఫ్‌లో ఉంది"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"అంతరాయం కలిగించవద్దు ఆఫ్‌లో ఉంది"</string>
@@ -875,36 +895,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"సెట్టింగ్‌లు"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"అర్థమైంది"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"డంప్ SysUI హీప్"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> యాప్‌లు</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> యాప్</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> మీ <xliff:g id="TYPES_LIST">%2$s</xliff:g>ని ఉపయోగిస్తోంది."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"అప్లికేషన్‌లు మీ <xliff:g id="TYPES_LIST">%s</xliff:g>ని ఉపయోగిస్తున్నాయి."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ఉపయోగిస్తున్నవి:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> అప్లికేషన్‌లు మీ <xliff:g id="TYPE_5">%2$s</xliff:g>ని ఉపయోగిస్తున్నాయి.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> అప్లికేషన్‌ మీ <xliff:g id="TYPE_1">%2$s</xliff:g>ని ఉపయోగిస్తుంది.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"అర్థమైంది"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"గోప్యతా సెట్టింగ్‌లు"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"మీ <xliff:g id="TYPES_LIST">%s</xliff:g> ఉపయోగించే యాప్‌"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"మీ<xliff:g id="TYPES_LIST">%s</xliff:g> ఉపయోగిస్తున్న యాప్‌లు"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" మరియు "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"కెమెరా"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"స్థానం"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"మైక్రోఫోన్"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> ఇతర యాప్‌లు</item>
- <item quantity="one">మరో <xliff:g id="NUM_APPS_0">%d</xliff:g> యాప్</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"సెన్సార్‌లు ఆఫ్"</string>
<string name="device_services" msgid="1191212554435440592">"పరికర సేవలు"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"శీర్షిక లేదు"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"ఈ యాప్‌ను పునఃప్రారంభించేలా నొక్కి, ఆపై పూర్తి స్క్రీన్‌‍లోకి వెళ్లండి."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g>ని తెరువు"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g>నోటిఫికేషన్ సెట్టింగ్‌లు తెరువు"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"యాప్‌ను ఉపయోగించేటప్పుడు బబుల్స్‌ను అనుమతించాలా?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"బ్లాక్ చేయి"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> బబుల్‌ల సెట్టింగ్‌లు"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> నుండి బబుల్‌లను అనుమతించాలా?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"తిరస్కరించు"</string>
<string name="yes_bubbles" msgid="668809525728633841">"అనుమతించు"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"నన్ను తర్వాత అడగండి"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> నుండి <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> నుండి <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> మరియు మరో <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"తరలించు"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ఎగువ ఎడమవైపునకు జరుపు"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ఎగువ కుడివైపునకు జరుపు"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"దిగువ ఎడమవైపునకు తరలించు"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"దిగవు కుడివైపునకు జరుపు"</string>
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 331945ae89b4..0068ea6a5d87 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"ใช้ที่ชาร์จที่ให้มาพร้อมกับอุปกรณ์"</string>
<string name="battery_low_why" msgid="4553600287639198111">"การตั้งค่า"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"เปิดโหมดประหยัดแบตเตอรี่ใช่ไหม"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"เกี่ยวกับโหมดประหยัดแบตเตอรี่"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"เปิด"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"เปิดโหมดประหยัดแบตเตอรี่"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"การตั้งค่า"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์อยู่ในขณะนี้ไม่สามารถเปิดการแก้ไขข้อบกพร่องผ่าน USB ได้ หากต้องการใช้ฟีเจอร์นี้ ให้เปลี่ยนไปเป็นผู้ใช้หลัก"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"พอร์ต USB ถูกปิดใช้"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"พอร์ต USB ถูกปิดใช้และจะไม่ตรวจจับอุปกรณ์เสริมใดๆ เพื่อปกป้องอุปกรณ์จากของเหลวและฝุ่นละออง \n\nคุณจะได้รับแจ้งเมื่อใช้พอร์ต USB ได้อย่างปลอดภัยอีกครั้ง"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"เปิดใช้พอร์ต USB แล้วเพื่อตรวจหาที่ชาร์จและอุปกรณ์เสริม"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"เปิดใช้ USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"ขยายจนเต็มหน้าจอ"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"ยืดจนเต็มหน้าจอ"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"ภาพหน้าจอ"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"ปลดล็อกโดยไม่ต้องใช้ลายนิ้วมือ"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"กำลังสแกนใบหน้า"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ส่ง"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"จัดการการแจ้งเตือน"</string>
<string name="unlock_label" msgid="8779712358041029439">"ปลดล็อก"</string>
<string name="phone_label" msgid="2320074140205331708">"เปิดโทรศัพท์"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"เปิดตัวช่วยเสียง"</string>
<string name="camera_label" msgid="7261107956054836961">"เปิดกล้อง"</string>
<string name="cancel" msgid="6442560571259935130">"ยกเลิก"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"พื้นที่ข้อความช่วยเหลือ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"ยืนยัน"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"ลองอีกครั้ง"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"แตะเซ็นเซอร์ลายนิ้วมือ"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"เน็ตมือถือ"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"อินเทอร์เน็ตมือถือเปิดอยู่"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"เน็ตมือถือปิดอยู่"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"ไม่ได้ตั้งค่าให้ใช้อินเทอร์เน็ตมือถือ"</string>
<string name="cell_data_off" msgid="1051264981229902873">"ปิด"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"การปล่อยสัญญาณบลูทูธ"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"โหมดใช้งานบนเครื่องบิน"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"เปิดโหมดบนเครื่องบินแล้ว"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ปิดเสียงทั้งหมด"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"เฉพาะปลุกเท่านั้น"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ห้ามรบกวน"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ปิดการห้ามรบกวนแล้ว"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"เปิดการห้ามรบกวนแล้ว"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ห้ามรบกวน"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"โหมดห้ามรบกวนปิดอยู่"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"เปิดโหมดห้ามรบกวนแล้ว"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"บลูทูธ"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"บลูทูธปิดอยู่"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"บลูทูธเปิดอยู่"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"คำขอตำแหน่งที่มีการใช้งาน"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"ล้างการแจ้งเตือนทั้งหมด"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">มีการแจ้งเตือนอีก <xliff:g id="NUMBER_1">%s</xliff:g> รายการด้านใน</item>
<item quantity="one">มีการแจ้งเตือนอีก <xliff:g id="NUMBER_0">%s</xliff:g> รายการด้านใน</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"การตั้งค่าการแจ้งเตือน"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"การตั้งค่า <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"หน้าจอจะหมุนโดยอัตโนมัติ"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"โปรแกรมรักษาหน้าจอ"</string>
<string name="ethernet_label" msgid="7967563676324087464">"อีเทอร์เน็ต"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"แตะไอคอนค้างไว้เพื่อดูตัวเลือกอื่นๆ"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"ห้ามรบกวน"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"ห้ามรบกวน"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"เฉพาะเรื่องสำคัญ"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"เฉพาะปลุกเท่านั้น"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ปิดเสียงทั้งหมด"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"เปิดโหมดประหยัดแบตเตอรี่อยู่"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"ลดการใช้แบตเตอรี่และอินเทอร์เน็ตที่ใช้งานอยู่เบื้องหลัง"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"ปิดโหมดประหยัดแบตเตอรี่"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> จะเริ่มจับภาพทุกสิ่งบนหน้าจอ รวมถึงการแจ้งเตือน รหัสผ่าน รูปภาพ ข้อความ และข้อมูลการชำระเงิน"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"อนุญาตให้ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> บันทึกหรือแคสต์หน้าจอของคุณไหม"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"ขณะที่กำลังบันทึกหรือแคสต์ <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> อาจบันทึกข้อมูลที่ละเอียดอ่อน เช่น เสียงที่คุณเล่นและรหัสผ่านของคุณ รวมถึงข้อมูลการชำระเงิน รูปภาพ และข้อความ"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"มีการเปิดเผยข้อมูลที่ละเอียดอ่อนระหว่างการแคสต์/บันทึก"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"ไม่ต้องแสดงข้อความนี้อีก"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"ล้างทั้งหมด"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"จัดการ"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"การตั้งค่าเสียง"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"ขยาย"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"ยุบ"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"แสดงคำบรรยายสื่อโดยอัตโนมัติ"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"เคล็ดลับเกี่ยวกับคำอธิบายภาพ"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"เปลี่ยนอุปกรณ์เอาต์พุต"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"ตรึงหน้าจอแล้ว"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"การดำเนินการนี้จะแสดงหน้าจอนี้ไว้เสมอจนกว่าคุณจะเลิกตรึง แตะ \"กลับ\" และ \"ภาพรวม\" ค้างไว้เพื่อเลิกตรึง"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"การแจ้งเตือนเหล่านี้จะส่งเสียงแจ้งเตือนคุณ"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"โดยปกติแล้ว คุณจะปิดการแจ้งเตือนเหล่านี้ \nต้องการให้แสดงต่อไหม"</string>
<string name="inline_done_button" msgid="492513001558716452">"เสร็จสิ้น"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"ใช้"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"แสดงการแจ้งเตือนเหล่านี้ต่อไปไหม"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"ปิดการแจ้งเตือน"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"ส่งแบบไม่มีเสียง"</string>
<string name="inline_block_button" msgid="8735843688021655065">"บล็อก"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"แสดงต่อไป"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"ย่อเล็กสุด"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"แสดงโดยไม่ส่งเสียง"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"แจ้งเตือนเบาๆ"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"ปิดเสียงไว้"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"แจ้งเตือนฉัน"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"แจ้งเตือนแบบขัดจังหวะ"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"แจ้งเตือนต่อไป"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"ปิดการแจ้งเตือน"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"แสดงการแจ้งเตือนจากแอปนี้ต่อไปไหม"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"การแจ้งเตือนที่บล็อกจะไม่ปรากฏหรือมีเสียง คุณเลิกบล็อกการแจ้งเตือนได้ในการตั้งค่า"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"การแจ้งเตือนแบบไม่มีเสียงจะปรากฏอยู่ในเงา แต่ไม่ปรากฏในหน้าจอล็อก แสดงแบนเนอร์ หรือมีเสียง"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"การแจ้งเตือนเหล่านี้จะส่งเสียงและแสดงในลิ้นชักการแจ้งเตือน แถบสถานะ และหน้าจอล็อก"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ปิดการแจ้งเตือนเหล่านี้ไม่ได้"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"การแจ้งเตือนกลุ่มนี้กำหนดค่าที่นี่ไม่ได้"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"ผ่าน <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"แอปนี้กำลังใช้กล้อง"</string>
<string name="appops_microphone" msgid="741508267659494555">"แอปนี้กำลังใช้ไมโครโฟน"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"ปฏิทิน"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"แสดงพร้อมการควบคุมระดับเสียง"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ห้ามรบกวน"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"ห้ามรบกวน"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"ทางลัดปุ่มปรับระดับเสียง"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"ออกจากโหมดห้ามรบกวนเมื่อเพิ่มระดับเสียง"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"ออกจากโหมดห้ามรบกวนเมื่อเพิ่มระดับเสียง"</string>
<string name="battery" msgid="7498329822413202973">"แบตเตอรี่"</string>
<string name="clock" msgid="7416090374234785905">"นาฬิกา"</string>
<string name="headset" msgid="4534219457597457353">"ชุดหูฟัง"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"ไปที่เบราว์เซอร์"</string>
<string name="mobile_data" msgid="7094582042819250762">"เน็ตมือถือ"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi ปิดอยู่"</string>
<string name="bt_is_off" msgid="2640685272289706392">"บลูทูธปิดอยู่"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\"ห้ามรบกวน\" ปิดอยู่"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"การตั้งค่า"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"รับทราบ"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> แอป</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> แอป</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ใช้<xliff:g id="TYPES_LIST">%2$s</xliff:g>ของคุณอยู่"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"หลายแอปพลิเคชันใช้<xliff:g id="TYPES_LIST">%s</xliff:g>ของคุณอยู่"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"ใช้อยู่:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">มี <xliff:g id="NUM_APPS_4">%1$d</xliff:g> แอปพลิเคชันกำลังใช้<xliff:g id="TYPE_5">%2$s</xliff:g></item>
- <item quantity="one">มี <xliff:g id="NUM_APPS_0">%1$d</xliff:g> แอปพลิเคชันกำลังใช้<xliff:g id="TYPE_1">%2$s</xliff:g></item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"รับทราบ"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"การตั้งค่าความเป็นส่วนตัว"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"มีแอปกำลังใช้<xliff:g id="TYPES_LIST">%s</xliff:g>ของคุณ"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"มีหลายแอปกำลังใช้<xliff:g id="TYPES_LIST">%s</xliff:g>ของคุณ"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" และ "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"กล้องถ่ายรูป"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"ตำแหน่ง"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"ไมโครโฟน"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">แอปอื่น <xliff:g id="NUM_APPS_1">%d</xliff:g> แอป</item>
- <item quantity="one">แอปอื่น <xliff:g id="NUM_APPS_0">%d</xliff:g> แอป</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"เซ็นเซอร์ปิดอยู่"</string>
<string name="device_services" msgid="1191212554435440592">"บริการของอุปกรณ์"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"ไม่มีชื่อ"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"แตะเพื่อรีสตาร์ทแอปนี้และแสดงแบบเต็มหน้าจอ"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"เปิด <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"เปิดการตั้งค่าการแจ้งเตือนสำหรับ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"อนุญาตลูกโป่งจากแอปนี้ไหม"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"บล็อก"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"การตั้งค่าลูกโป่ง <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"อนุญาตลูกโป่งจาก <xliff:g id="APP_NAME">%1$s</xliff:g> ไหม"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"ปฏิเสธ"</string>
<string name="yes_bubbles" msgid="668809525728633841">"อนุญาต"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"ถามฉันทีหลัง"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> จาก <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> จาก <xliff:g id="APP_NAME">%2$s</xliff:g> และอีก <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> รายการ"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ย้าย"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"ย้ายไปด้านซ้ายบน"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"ย้ายไปด้านขวาบน"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"ย้ายไปด้านซ้ายล่าง"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"ย้ายไปด้านขาวล่าง"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 394aaaa4d93a..4b843a3586eb 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Gamitin ang charger na kasama ng iyong device"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Mga Setting"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"I-on ang Pangtipid sa Baterya?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Tungkol sa Pangtipid sa Baterya"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"I-on"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"I-on ang Pangtipid sa Baterya"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Mga Setting"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Hindi mao-on ng user na kasalukuyang naka-sign in sa device na ito ang pag-debug ng USB. Upang magamit ang feature na ito, lumipat sa pangunahing user."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Na-disable ang USB port"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Para protektahan ang iyong device sa liquid o debris, na-disable ang USB port at hindi ito makaka-detect ng anumang accessory.\n\nMaaabisuhan ka kapag ligtas na gamitin muli ang USB port."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Na-enable ang USB port para ma-detect ang mga charger at accessory"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"I-enable ang USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"I-zoom upang punan screen"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"I-stretch upang mapuno screen"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Screenshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"I-unlock nang hindi ginagamit ang iyong fingerprint"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Sina-scan ang mukha"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Ipadala"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Pamahalaan ang mga notification"</string>
<string name="unlock_label" msgid="8779712358041029439">"i-unlock"</string>
<string name="phone_label" msgid="2320074140205331708">"buksan ang telepono"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"buksan ang voice assist"</string>
<string name="camera_label" msgid="7261107956054836961">"buksan ang camera"</string>
<string name="cancel" msgid="6442560571259935130">"Kanselahin"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Lugar ng mensahe ng tulong"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Kumpirmahin"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Subukang muli"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Pindutin ang fingerprint sensor"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobile Data"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Naka-on ang Mobile Data"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Naka-off ang mobile data"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Hindi nakatakdang gumamit ng data"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Naka-off"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Pag-tether ng Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Mode na eroplano."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Na-on ang Airplane mode."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ganap na katahimikan"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"mga alarm lang"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Huwag istorbohin."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Na-off na ang huwag istorbohin"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Na-on na ang huwag istorbohin."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Huwag Istorbohin."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Na-off ang Huwag Istorbohin."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Na-on ang Huwag Istorbohin."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Naka-off ang Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Naka-on ang Bluetooth."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Aktibo ang mga kahilingan ng lokasyon"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"I-clear ang lahat ng notification."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">May <xliff:g id="NUMBER_1">%s</xliff:g> pang notification sa loob.</item>
<item quantity="other">May <xliff:g id="NUMBER_1">%s</xliff:g> pang notification sa loob.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Mga setting ng notification"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Mg setting ng <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Awtomatikong iikot ang screen."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Screen saver"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Pindutin nang matagal ang mga icon para sa higit pang opsyon"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Huwag istorbohin"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Huwag Istorbohin"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Priyoridad lang"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Mga alarm lang"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Ganap na katahimikan"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Naka-on ang Pangtipid sa Baterya"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Binabawasan ang performance at data sa background"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"I-off ang Pangtipid sa Baterya"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"Magsisimula ang <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> na i-capture ang lahat sa iyong screen kasama ang mga notification, password, larawan, mensahe at impormasyon sa pagbabayad."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Payagan ang <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> na i-record o i-cast ang iyong screen?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Habang nagre-record o nagka-cast, makukuha ng <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ang anumang sensitibong impormasyon, gaya ng audio na pine-play mo at iyong mga password, impormasyon sa pagbabayad, mga larawan, at mga mensahe."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Maglalantad ng sensitibong impormasyon habang nagka-cast/nagre-record"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Huwag ipakitang muli"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"I-clear lahat"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Pamahalaan"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Mga setting ng tunog"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Palawakin"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"I-collapse"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"I-autocaption ang media"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Isara ang tip sa mga caption"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Lumipat ng output device"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Naka-pin ang screen"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Pinapanatili nitong nakikita ito hanggang sa mag-unpin ka. Pindutin nang matagal ang Bumalik at Overview upang mag-unpin."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Aalertuhan ka ng mga notification na ito"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Karaniwan mong dini-dismiss ang mga ganitong notification. \nPatuloy na ipakita ang mga ito?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Tapos na"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Ilapat"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Patuloy na ipakita ang mga notification na ito?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Ihinto ang mga notification"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Tahimik na Ihatid"</string>
<string name="inline_block_button" msgid="8735843688021655065">"I-block"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Patuloy na ipakita"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"I-minimize"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Ipakita nang tahimik"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Malumanay"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Manatiling naka-silent"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Alertuhan ako"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Nakakaabala"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Patuloy na mag-alerto"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"I-off ang mga notification"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Patuloy na ipakita ang mga notification mula sa app na ito?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Hindi lalabas kahit saan o magpe-play ng tunog ang mga na-block na notification. Maa-unblock mo ang mga notification sa mga setting."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Ang mga silent na notification ay lumalabas sa shade, ngunit hindi lumalabas sa screen ng lock, nagpapakita ng banner, o nagpe-play ng tunog."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ang mga notification na ito ay tutunog at ipapakita sa drawer ng notification, status bar, at lock screen"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Hindi maaaring i-off ang mga notification na ito"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"sa pamamagitan ng <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ginagamit ng app na ito ang camera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ginagamit ng app na ito ang mikropono."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Kalendaryo"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Ipakita nang may mga kontrol ng volume"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Huwag istorbohin"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Huwag Istorbohin"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Shortcut ng mga button ng volume"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Umalis sa huwag istorbohin nang malakas ang volume"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Lumabas sa Huwag Istorbohin kapag nilakasan ang volume"</string>
<string name="battery" msgid="7498329822413202973">"Baterya"</string>
<string name="clock" msgid="7416090374234785905">"Orasan"</string>
<string name="headset" msgid="4534219457597457353">"Headset"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Pumunta sa browser"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobile data"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Naka-off ang Wi-Fi"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Naka-off ang Bluetooth"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Naka-off ang Huwag Istorbohin"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Mga Setting"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Itapon SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> na app</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Ginagamit ng <xliff:g id="APP">%1$s</xliff:g> ang iyong <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Ginagamit ng mga application ang iyong <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Ginagamit:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one">Ginagamit ng <xliff:g id="NUM_APPS_4">%1$d</xliff:g> application ang iyong <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- <item quantity="other">Ginagamit ng <xliff:g id="NUM_APPS_4">%1$d</xliff:g> na application ang iyong <xliff:g id="TYPE_5">%2$s</xliff:g>.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Mga setting ng privacy"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"App na gumagamit ng iyong <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Mga app na gumagamit ng iyong <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" at "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"camera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"lokasyon"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikropono"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> (na) iba pang app</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> (na) iba pang app</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Naka-off ang mga sensor"</string>
<string name="device_services" msgid="1191212554435440592">"Mga Serbisyo ng Device"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Walang pamagat"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"I-tap para i-restart ang app na ito at mag-full screen."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Buksan ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Buksan ang mga setting ng notification para sa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Payagan ang mga bubble mula sa app na ito?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"I-block"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Mga setting para sa mga bubble ng <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Payagan ang mga bubble mula sa <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Tanggihan"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Payagan"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Tanungin ako sa ibang pagkakataon"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> mula sa <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> mula sa <xliff:g id="APP_NAME">%2$s</xliff:g> at <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> pa"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Ilipat"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Ilipat sa kaliwa sa itaas"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Ilipat sa kanan sa itaas"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Ilipat sa kaliwa sa ibaba"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Ilipat sa kanan sa ibaba"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 8cab5686876f..793ac7231b39 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Cihazınızla birlikte gelen şarj cihazını kullanın"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Ayarlar"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Pil Tasarrufu açılsın mı?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Pil Tasarrufu hakkında"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Aç"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Pil Tasarrufu\'nu aç"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Ayarlar"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Bu cihazda geçerli olarak oturum açmış olan kullanıcı, USB hata ayıklama özelliğini açamaz. Bu özelliği kullanmak için birincil kullanıcıya geçin."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB bağlantı noktası devre dışı bırakıldı"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Cihazınızı sıvılardan veya tozlardan korumak için USB bağlantı noktası devre dışı bırakıldı ve aksesuarları algılamayacak.\n\nUSB bağlantı noktasını tekrar güvenli bir şekilde kullanabileceğiniz zaman bilgilendirileceksiniz."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB bağlantı noktası, şarj cihazlarını ve aksesuarları algılamak üzere etkinleştirildi"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB\'yi etkinleştir"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Yakınlaştır (ekranı kaplasın)"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Genişlet (ekran kapansın)"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Ekran görüntüsü"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Kilidi, parmak iziniz olmadan açın"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Yüz taranıyor"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Gönder"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bildirimleri yönet"</string>
<string name="unlock_label" msgid="8779712358041029439">"kilidi aç"</string>
<string name="phone_label" msgid="2320074140205331708">"telefonu aç"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"sesli yardımı aç"</string>
<string name="camera_label" msgid="7261107956054836961">"kamerayı aç"</string>
<string name="cancel" msgid="6442560571259935130">"İptal"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Yardım mesajı alanı"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Onaylayın"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Tekrar dene"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Parmak izi sensörüne dokunun"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobil Veri"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobil Veri Açık"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobil veri kapalı"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Veri kullanmak üzere ayarlanmadı"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Kapalı"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth tethering"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Uçak modu."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Uçak modu açıldı."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"tamamen sessiz"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"yalnızca alarmlar"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Rahatsız etmeyin."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"\"Rahatsız etme\" ayarı kapalı."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"\"Rahatsız etme\" ayarı açık."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Rahatsız Etmeyin."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Rahatsız Etmeyin ayarı kapalı."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Rahatsız Etmeyin ayarı açık."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth kapalı."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth açık."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Konum bilgisi istekleri etkin"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Tüm bildirimleri temizle"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Grup içinde <xliff:g id="NUMBER_1">%s</xliff:g> bildirim daha var.</item>
<item quantity="one">Grup içinde <xliff:g id="NUMBER_0">%s</xliff:g> bildirim daha var.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildirim ayarları"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ayarları"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran otomatik olarak dönecektir."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ekran koruyucu"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Daha fazla seçenek için simgelere dokunun ve basılı tutun"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Rahatsız etmeyin"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Rahatsız Etmeyin"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Yalnızca öncelikliler"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Yalnızca alarmlar"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Tamamen sessiz"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Pil Tasarrufu açık"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Performansı ve arka plan verilerini azaltır"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Pil Tasarrufu\'nu kapat"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>, ekranınızda görüntülenen her şeyi (bildirimler, şifreler, fotoğraflar, mesajlar ve ödeme bilgileri dahil) kaydetmeye başlayacak."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> öğesinin ekranınızı kaydetmesine veya yayınlamasına izin veriyor musunuz?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Kayıt veya yayın sırasında <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>, çaldığınız sesler ve şifreleriniz, ödeme bilgileriniz, fotoğraflarınız ve mesajlarınız gibi hassas bilgileri yakalayabilir."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Yayın/kayıt sırasında hassas bilgileri gösterme"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Bir daha gösterme"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Tümünü temizle"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Yönet"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Ses ayarları"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Genişlet"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Daralt"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Otomatik medya altyazısı"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Altyazı ipucu"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Çıkış cihazını değiştir"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekran sabitlendi"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Bu işlem, siz sabitlemeyi kaldırana kadar ekranı görünür durumda tutar. Sabitlemeyi kaldırmak için Geri\'ye ve Genel Bakış\'a dokunup basılı tutun."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Bu bildirimler sizi sesli olarak uyaracak"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Bu bildirimleri genellikle kapatıyorsunuz. \nBildirimler gösterilmeye devam edilsin mi?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Bitti"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Uygula"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Bu bildirimler gösterilmeye devam edilsin mi?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Bildirimleri durdur"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Sessizce Teslim Et"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Engelle"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Göstermeye devam et"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Küçült"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Sessiz bir şekilde göster"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Sessiz"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Sessiz uyarı göster"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Beni uyar"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Çalışmayı kesintiye uğratan"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Uyarıda bulunmaya devam et"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Bildirimleri kapat"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Bu uygulamadan gelen bildirimler gösterilmeye devam edilsin mi?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Engellenen bildirimler hiçbir yerde görünmez veya ses çalmaz. Bildirimlerin engellemesini ayarlarda kaldırabilirsiniz."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Sessiz bildirimler gölgede görünür ancak kilit ekranında görünmez, bir banner göstermez veya bir ses çalmaz."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Bu bildirimler sesli uyarıda bulunacak; bildirim çekmecesinde, durum çubuğunda ve kilit ekranında gösterilecektir."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Bu bildirimler kapatılamaz"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Bu bildirim grubu burada yapılandırılamaz"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> ile"</string>
<string name="appops_camera" msgid="8100147441602585776">"Bu uygulama kamerayı kullanıyor."</string>
<string name="appops_microphone" msgid="741508267659494555">"Bu uygulama mikrofonu kullanıyor."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Takvim"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Ses seviyesi kontrolleriyle göster"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Rahatsız etmeyin"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Rahatsız Etmeyin"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Ses düğmeleri kısayolu"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Ses açıldığında rahatsız etmeyin modundan çık"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Ses açıldığında Rahatsız Etmeyin modundan çık"</string>
<string name="battery" msgid="7498329822413202973">"Pil"</string>
<string name="clock" msgid="7416090374234785905">"Saat"</string>
<string name="headset" msgid="4534219457597457353">"Mikrofonlu kulaklık"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Tarayıcıya git"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobil veriler"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>, <xliff:g id="CARRIER_NAME">%1$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Kablosuz bağlantı kapalı"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth kapalı"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Rahatsız Etmeyin kapalı"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Ayarlar"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Anladım"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"SysUI Yığın Dökümü"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> uygulama</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> uygulama</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> şunları kullanıyor: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Uygulamalar şunları kullanıyor: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Kullanımda:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> uygulama, cihazınızın <xliff:g id="TYPE_5">%2$s</xliff:g> özelliğini kullanıyor.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> uygulama, cihazınızın <xliff:g id="TYPE_1">%2$s</xliff:g> özelliğini kullanıyor.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Anladım"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Gizlilik ayarları"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Uygulama cihazınızın <xliff:g id="TYPES_LIST">%s</xliff:g> özelliklerini kullanıyor"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Uygulamalar cihazınızın <xliff:g id="TYPES_LIST">%s</xliff:g> özelliklerini kullanıyor"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" ve "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"konum"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> diğer uygulama</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> diğer uygulama</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensörler kapalı"</string>
<string name="device_services" msgid="1191212554435440592">"Cihaz Hizmetleri"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Başlıksız"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Bu uygulamayı yeniden başlatmak ve tam ekrana geçmek için dokunun."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> öğesini açın."</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> için bildirim ayarlarını açar"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Bu uygulamanın balonlarına izin verilsin mi?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Engelle"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> baloncukları için ayarlar"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> baloncuklarına izin verilsin mi?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Reddet"</string>
<string name="yes_bubbles" msgid="668809525728633841">"İzin Ver"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Daha sonra yeniden sor"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> uygulamasından <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> uygulamasından <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> ve diğer <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Taşı"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Sol üste taşı"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Sağ üste taşı"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Sol alta taşı"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Sağ alta taşı"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 47a60460569a..110d76ef9ec4 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Використовуйте зарядний пристрій, який входить у комплект пристрою"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Налаштування"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Увімкнути режим економії заряду акумулятора?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Про режим енергозбереження"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Увімкнути"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Увімкнути режим економії заряду акумулятора"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Налаштування"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Користувач поточного облікового запису не може вмикати налагодження USB. Щоб увімкнути цю функцію, увійдіть в обліковий запис основного користувача."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB-порт вимкнено"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Щоб захистити ваш пристрій від рідини та сміття, USB-порт вимкнено. Він не виявлятиме жодних аксесуарів.\n\nКоли USB-порт можна буде безпечно використовувати, ви отримаєте сповіщення."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Порт USB виявлятиме зарядні пристрої та аксесуари"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Увімкнути USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Масштабув. на весь екран"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Розтягнути на весь екран"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Знімок екрана"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Розблокувати без цифрового відбитка"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Сканування обличчя"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Надіслати"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Керувати сповіщеннями"</string>
<string name="unlock_label" msgid="8779712358041029439">"розблокувати"</string>
<string name="phone_label" msgid="2320074140205331708">"відкрити телефон"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"запустити голосові підказки"</string>
<string name="camera_label" msgid="7261107956054836961">"відкрити камеру"</string>
<string name="cancel" msgid="6442560571259935130">"Скасувати"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Область довідкового повідомлення"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Підтвердити"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Повторити спробу"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Торкніться сканера відбитків пальців"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Мобільне передавання даних"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Мобільне передавання даних увімкнено"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Мобільне передавання даних вимкнено"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Не вибрано для використання даних"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Вимкнено"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth-модем"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Режим польоту."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Режим польоту ввімкнено."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"без сигналів"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"лише будильники"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Не турбувати."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Режим \"Не турбувати\" вимкнено."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Режим \"Не турбувати\" ввімкнено."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Не турбувати."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Режим \"Не турбувати\" вимкнено."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Режим \"Не турбувати\" ввімкнено."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth вимк."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth увімк."</string>
@@ -269,13 +273,13 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Запити про місцезнаходження активні"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Очистити всі сповіщення."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, + <xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one">Ще <xliff:g id="NUMBER_1">%s</xliff:g> сповіщення в групі.</item>
<item quantity="few">Ще <xliff:g id="NUMBER_1">%s</xliff:g> сповіщення в групі.</item>
<item quantity="many">Ще <xliff:g id="NUMBER_1">%s</xliff:g> сповіщень у групі.</item>
<item quantity="other">Ще <xliff:g id="NUMBER_1">%s</xliff:g> сповіщення в групі.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Налаштування сповіщень"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Налаштування додатка <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Екран обертатиметься автоматично."</string>
@@ -288,7 +292,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Заставка"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Утримуйте значки, щоб переглянути більше опцій"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Не турбувати"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Не турбувати"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Лише пріоритетні"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Лише будильник"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Без сигналів"</string>
@@ -443,8 +447,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Режим економії заряду акумулятора ввімкнено"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Знижується продуктивність і обмежуються фонові дані"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Вимкнути режим економії заряду акумулятора"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> отримає доступ до всіх даних на екрані, зокрема до сповіщень, паролів, фотографій, повідомлень і платіжної інформації."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Дозволити додатку <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> записувати або транслювати дані на екрані?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Під час запису або трансляції додаток <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> може фіксувати будь-яку конфіденційну інформацію, зокрема відтворюване аудіо, паролі, платіжну інформацію, фотографії та повідомлення."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Розкриття конфіденційної інформації під час трансляції або запису"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Більше не показувати"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Очистити все"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Керувати"</string>
@@ -519,6 +523,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Налаштування звуку"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Розгорнути"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згорнути"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматичні субтитри (медіа)"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Підказка щодо субтитрів"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Увімкніть пристрій виведення"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Екран закріплено"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ви постійно бачитимете екран, доки не відкріпите його. Щоб відкріпити екран, натисніть і втримуйте кнопки \"Назад\" та \"Огляд\"."</string>
@@ -619,18 +625,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Ці сповіщення показуватимуться зі звуком"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Ви зазвичай закриваєте ці сповіщення. \nПоказувати їх?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Готово"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Застосувати"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Чи показувати ці сповіщення надалі?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Не показувати сповіщення"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Показувати без звуку"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Блокувати"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Показувати надалі"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Згорнути"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Показувати без звуку"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Тихо"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Без звуку"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Сповіщати мене"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Зі звуком"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Отримувати сповіщення"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Вимкнути сповіщення"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Чи показувати сповіщення з цього додатка надалі?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Ви не бачитимете й не чутимете заблокованих сповіщень. Розблокувати їх можна в налаштуваннях."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Сповіщення без звуку відображаються на панелі сповіщень, але не показують банер і не з’являються на заблокованому екрані."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Ці сповіщення з’являтимуться зі звуком на висувній панелі, у рядку стану й на заблокованому екрані"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Ці сповіщення не можна вимкнути"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Цю групу сповіщень не можна налаштувати тут"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"через додаток <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Цей додаток використовує камеру."</string>
<string name="appops_microphone" msgid="741508267659494555">"Цей додаток використовує мікрофон."</string>
@@ -713,9 +725,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Календар"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Показувати регулятори гучності"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Не турбувати"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Не турбувати"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Кнопки гучності на корпусі"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Вимикати режим \"Не турбувати\" під час збільшення гучності"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Вимикати режим \"Не турбувати\" за збільшення гучності"</string>
<string name="battery" msgid="7498329822413202973">"Акумулятор"</string>
<string name="clock" msgid="7416090374234785905">"Годинник"</string>
<string name="headset" msgid="4534219457597457353">"Гарнітура"</string>
@@ -856,6 +868,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Веб-переглядач"</string>
<string name="mobile_data" msgid="7094582042819250762">"Мобільний трафік"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi вимкнено"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth вимкнено"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Режим \"Не турбувати\" вимкнено"</string>
@@ -885,42 +898,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Налаштування"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> додаток</item>
- <item quantity="few"><xliff:g id="NUM_APPS_1">%d</xliff:g> додатки</item>
- <item quantity="many"><xliff:g id="NUM_APPS_2">%d</xliff:g> додатків</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> додатка</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Додаток <xliff:g id="APP">%1$s</xliff:g> використовує <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Додатки використовують <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Використовується:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="TYPE_5">%2$s</xliff:g> працює в <xliff:g id="NUM_APPS_4">%1$d</xliff:g> додатку.</item>
- <item quantity="few"><xliff:g id="TYPE_3">%2$s</xliff:g> працює в <xliff:g id="NUM_APPS_2">%1$d</xliff:g> додатках.</item>
- <item quantity="many"><xliff:g id="TYPE_5">%2$s</xliff:g> працює в <xliff:g id="NUM_APPS_4">%1$d</xliff:g> додатках.</item>
- <item quantity="other"><xliff:g id="TYPE_5">%2$s</xliff:g> працює в <xliff:g id="NUM_APPS_4">%1$d</xliff:g> додатка.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Налаштування конфіденційності"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Додаток, яким використовується <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Додатки, якими використовується <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" і "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"камеру"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"місце"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"мікрофон"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one">Ще <xliff:g id="NUM_APPS_1">%d</xliff:g> додаток</item>
- <item quantity="few">Ще <xliff:g id="NUM_APPS_1">%d</xliff:g> додатки</item>
- <item quantity="many">Ще <xliff:g id="NUM_APPS_1">%d</xliff:g> додатків​</item>
- <item quantity="other">Щ​е <xliff:g id="NUM_APPS_1">%d</xliff:g> додатка</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Датчики вимкнено"</string>
<string name="device_services" msgid="1191212554435440592">"Сервіси на пристрої"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Без назви"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Натисніть, щоб перезапустити додаток і перейти в повноекранний режим."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Відкрити додаток <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"Відкрити налаштування сповіщень додатка <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Дозволити спливаючі сповіщення з цього додатка?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Блокувати"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Налаштування спливаючих підказок від додатка <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Дозволити спливаючі підказки від додатка <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Заборонити"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Дозволити"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Запитати пізніше"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"Cповіщення \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\" від додатка <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"Сповіщення \"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>\" від додатка <xliff:g id="APP_NAME">%2$s</xliff:g> (і ще <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>)"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Перемістити"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Перемістити ліворуч угору"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Перемістити праворуч угору"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Перемістити ліворуч униз"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Перемістити праворуч униз"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 9a7cd14d118e..b4372d9c923d 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"اپنے آلہ کے ساتھ ملنے والے چارجر کا استعمال کریں"</string>
<string name="battery_low_why" msgid="4553600287639198111">"ترتیبات"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"بیٹری سیور آن کریں؟"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"بیٹری سیور کے بارے میں"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"آن کریں"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"بیٹری سیور آن کریں"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"ترتیبات"</string>
@@ -62,6 +63,10 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"‏اس آلہ پر فی الحال سائن ان کردہ صارف USB ڈیبگنگ آن نہیں کر سکتا۔ اس خصوصیت کا استعمال کرنے کیلئے، ابتدائی صارف پر سوئچ کریں۔"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"‏USB پورٹ غیر فعال ہو گیا"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"‏آپ کے آلے کی سیال یا دھول سے حفاظت کرنے کیلئے، USB پورٹ کو غیر فعال کر دیا گیا ہے اور یہ کسی لوازم کا پتہ نہیں لگا پائے گا۔\n\nUSB پورٹ کا دوبارہ استعمال کرنا محفوظ ہونے پر آپ کو مطلع کیا جائے گا۔"</string>
+ <!-- no translation found for usb_port_enabled (7906141351687694867) -->
+ <skip />
+ <!-- no translation found for usb_disable_contaminant_detection (2103905315747120033) -->
+ <skip />
<string name="compat_mode_on" msgid="6623839244840638213">"پوری سکرین پر زوم کریں"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"پوری سکرین پر پھیلائیں"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"اسکرین شاٹ"</string>
@@ -108,12 +113,13 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"فنگر پرنٹ استعمال کیے بغیرغیر مقفل کریں"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"اسکیننگ چہرہ"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"بھیجیں"</string>
+ <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
+ <skip />
<string name="unlock_label" msgid="8779712358041029439">"غیر مقفل کریں"</string>
<string name="phone_label" msgid="2320074140205331708">"فون کھولیں"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"صوتی معاون کھولیں"</string>
<string name="camera_label" msgid="7261107956054836961">"کیمرا کھولیں"</string>
<string name="cancel" msgid="6442560571259935130">"منسوخ کریں"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"امدادی پیغام کا علاقہ"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"تصدیق کریں"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"دوبارہ کوشش کریں"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"فنگر پرنٹ سینسر پر ٹچ کریں"</string>
@@ -179,6 +185,8 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"موبائل ڈیٹا"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"موبائل ڈیٹا آن ہے"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"موبائل ڈیٹا آف ہے"</string>
+ <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
+ <skip />
<string name="cell_data_off" msgid="1051264981229902873">"آف ہے"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"بلوٹوتھ ٹیدرنگ۔"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"ہوائی جہاز وضع۔"</string>
@@ -220,9 +228,12 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"ہوائی جہاز وضع کو آن کر دیا گیا۔"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"مکمل خاموشی"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"صرف الارمز"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"ڈسٹرب نہ کریں۔"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"ڈسٹرب نہ کریں کو آف کر دیا گیا۔"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"ڈسٹرب نہ کریں کو آن کر دیا گیا۔"</string>
+ <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
+ <skip />
+ <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
+ <skip />
+ <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
+ <skip />
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"بلوٹوتھ۔"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"بلوٹوتھ آف ہے۔"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"بلوٹوتھ آن ہے۔"</string>
@@ -269,11 +280,12 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"مقام کی درخواستیں فعال ہیں"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"سبھی اطلاعات صاف کریں۔"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"<xliff:g id="NUMBER">%s</xliff:g> +"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>، +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">اندر <xliff:g id="NUMBER_1">%s</xliff:g> مزید اطلاعات ہیں۔ </item>
<item quantity="one">اندر <xliff:g id="NUMBER_0">%s</xliff:g> مزید اطلاع ہے۔</item>
</plurals>
+ <!-- no translation found for notification_summary_message_format (715071952312553396) -->
+ <skip />
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"اطلاع کی ترتیبات"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> ترتیبات"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"اسکرین خود بخود گردش کرے گی۔"</string>
@@ -286,7 +298,8 @@
<string name="start_dreams" msgid="5640361424498338327">"اسکرین سیور"</string>
<string name="ethernet_label" msgid="7967563676324087464">"ایتھرنیٹ"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"مزید اختیارات کے لیے آئیکنز کو ٹچ کریں اور دبائیں رکھیں"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"ڈسٹرب نہ کریں"</string>
+ <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
+ <skip />
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"صرف ترجیحی"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"صرف الارمز"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"مکمل خاموشی"</string>
@@ -437,8 +450,10 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"بیٹری سیور آن ہے"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"کارکردگی اور پس منظر کا ڈیٹا کم کر دیتا ہے"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"بیٹری سیور آف کریں"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> آپ کی اسکرین پر ہر چیز بشمول اطلاعات، پاس ورڈز، تصاویر، پیغامات اور ادائیگی کی معلومات کو کیپچر کرنا شروع کر دے گا۔"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> کو آپ کی اسکرین کو ریکارڈ یا کاسٹ کرنے کی اجازت دیں؟"</string>
+ <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
+ <skip />
+ <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
+ <skip />
<string name="media_projection_remember_text" msgid="3103510882172746752">"دوبارہ نہ دکھائیں"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"سبھی کو صاف کریں"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"نظم کریں"</string>
@@ -513,6 +528,10 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"صوتی ترتیبات"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"پھیلائیں"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"سکیڑیں"</string>
+ <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
+ <skip />
+ <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
+ <skip />
<string name="accessibility_output_chooser" msgid="8185317493017988680">"آؤٹ پٹ آلہ سوئچ کریں"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"اسکرین پن کردہ ہے"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"یہ اسے اس وقت تک نظر میں رکھتا ہے جب تک آپ اس سے پن ہٹا نہیں دیتے۔ پن ہٹانے کیلئے پیچھے اور مجموعی جائزہ بٹنز کو ٹچ کریں اور دبائے رکھیں۔"</string>
@@ -613,18 +632,32 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"یہ اطلاعات آپ کو الرٹ کریں گی"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"آپ عام طور پر ان اطلاعات کو مسترد کرتے ہیں۔ \nان کو دکھاتے رہیں؟"</string>
<string name="inline_done_button" msgid="492513001558716452">"ہو گیا"</string>
+ <!-- no translation found for inline_ok_button (975600017662930615) -->
+ <skip />
<string name="inline_keep_showing" msgid="8945102997083836858">"یہ اطلاعات دکھانا جاری رکھیں؟"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"اطلاعات روک دیں"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"خاموشی سے ڈیلیور کریں"</string>
<string name="inline_block_button" msgid="8735843688021655065">"مسدود کریں"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"دکھانا جاری رکھیں"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"چھوٹا کریں"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"خاموشی سے دکھائیں"</string>
+ <!-- no translation found for inline_silent_button_silent (6904727667411781466) -->
+ <skip />
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"خاموش رہیں"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"مجھے متنبہ کریں"</string>
+ <!-- no translation found for inline_silent_button_alert (2449191160203602471) -->
+ <skip />
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"متنبہ کرنا جاری رکھیں"</string>
+ <!-- no translation found for inline_turn_off_notifications (8635596135532202355) -->
+ <skip />
<string name="inline_keep_showing_app" msgid="1723113469580031041">"اس ایپ کی طرف سے اطلاعات دکھانا جاری رکھیں؟"</string>
+ <!-- no translation found for hint_text_block (3554459167504485284) -->
+ <skip />
+ <!-- no translation found for hint_text_silent (859468056340177016) -->
+ <skip />
+ <!-- no translation found for hint_text_alert (2721169810318722524) -->
+ <skip />
<string name="notification_unblockable_desc" msgid="1037434112919403708">"ان اطلاعات کو آف نہیں کیا جا سکتا"</string>
+ <!-- no translation found for notification_multichannel_desc (4695920306092240550) -->
+ <skip />
<string name="notification_delegate_header" msgid="9167022191405284627">"بذریعہ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"یہ ایپ کیمرے کا استعمال کر رہی ہے۔"</string>
<string name="appops_microphone" msgid="741508267659494555">"یہ ایپ مائیکروفون کا استعمال کر رہی ہے۔"</string>
@@ -703,9 +736,11 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"کیلنڈر"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"والیوم کنٹرولز کے ساتھ دکھائیں"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"ڈسٹرب نہ کریں"</string>
+ <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
+ <skip />
<string name="volume_dnd_silent" msgid="4363882330723050727">"والیوم بٹنز کے شارٹ کٹ"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"زیادہ والیوم پر \'ڈسٹرب نہ کریں\' سے خارج ہوں"</string>
+ <!-- no translation found for volume_up_silent (7545869833038212815) -->
+ <skip />
<string name="battery" msgid="7498329822413202973">"بیٹری"</string>
<string name="clock" msgid="7416090374234785905">"گھڑی"</string>
<string name="headset" msgid="4534219457597457353">"ہیڈ سیٹ"</string>
@@ -846,6 +881,8 @@
<string name="go_to_web" msgid="2650669128861626071">"براؤزر پر جائیں"</string>
<string name="mobile_data" msgid="7094582042819250762">"موبائل ڈیٹا"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <!-- no translation found for mobile_carrier_text_format (3241721038678469804) -->
+ <skip />
<string name="wifi_is_off" msgid="1838559392210456893">"‏Wi-Fi آف ہے"</string>
<string name="bt_is_off" msgid="2640685272289706392">"بلوٹوتھ آف ہے"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"\'ڈسٹرب نہ کریں\' آف ہے"</string>
@@ -875,36 +912,40 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"ترتیبات"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"سمجھ آ گئی"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ایپس</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ایپ</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> آپ کی <xliff:g id="TYPES_LIST">%2$s</xliff:g> کا استعمال کر رہی ہے۔"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"ایپلیکیشنز آپ کی <xliff:g id="TYPES_LIST">%s</xliff:g> کا استعمال کر رہی ہیں۔"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"زیر استعمال:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ایپلیکیشنز آپ کی <xliff:g id="TYPE_5">%2$s</xliff:g> کا استعمال کر رہی ہیں۔</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ایپلیکیشن آپ کی <xliff:g id="TYPE_1">%2$s</xliff:g> کا استعمال کر رہی ہے۔</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"سمجھ آ گئی"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"رازداری کی ترتیبات"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"ایپ آپ کی <xliff:g id="TYPES_LIST">%s</xliff:g> کا استعمال کر رہی ہیں"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"ایپس آپ کی <xliff:g id="TYPES_LIST">%s</xliff:g> کا استعمال کر رہی ہیں"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"، "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" اور "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"کیمرا"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"مقام"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"مائیکروفون"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> دیگر ایپس</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> دیگر ایپ</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"سینسرز آف ہیں"</string>
<string name="device_services" msgid="1191212554435440592">"آلہ کی سروس"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"کوئی عنوان نہیں ہے"</string>
+ <!-- no translation found for restart_button_description (2035077840254950187) -->
+ <skip />
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> کھولیں"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> کے لئے اطلاع کی ترتیبات کھولیں"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"اس اپپ کو بلبلوں کی اجازت دیں؟"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"مسدود کریں"</string>
+ <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
+ <skip />
+ <!-- no translation found for bubbles_prompt (8807968030159469710) -->
+ <skip />
+ <!-- no translation found for no_bubbles (337101288173078247) -->
+ <skip />
<string name="yes_bubbles" msgid="668809525728633841">"اجازت دیں"</string>
+ <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
+ <skip />
+ <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
+ <skip />
+ <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
+ <skip />
+ <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index a1dd2e18c472..292f4ef6e731 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Qurilmangiz bilan kelgan quvvatlash moslamasidan foydalaning"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Sozlamalar"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Quvvat tejash yoqilsinmi?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Quvvat tejash funksiyasi haqida"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Yoqish"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Quvvat tejash funksiyasini yoqing"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Sozlamalar"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Ayni paytda ushbu qurilmaga o‘z hisobi bilan kirgan foydalanuvchi USB orqali nosozliklarni tuzatish funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun asosiy foydalanuvchi profiliga o‘ting."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB port faolsizlashtirildi"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Qurilmangizni suyuqlik va turli parchalardan himoya qilish uchun USB port faolsizlashtiriladi va hech qanday aksessuarni aniqlay olmaydi.\n\nUSB portdan xavfsiz foydalanish mumkin boʻlganda, sizga xabar beriladi."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Quvvatlash moslamalari va aksessuarlarni aniqlash uchun USB port yoqildi"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"USB xususiyatini yoqish"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Ekranga moslashtirish"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Ekran hajmida cho‘zish"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Skrinshot"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Barmoq izisiz qulfdan chiqarish"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Yuzni skanerlash"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Yuborish"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bildirishnomalarni boshqarish"</string>
<string name="unlock_label" msgid="8779712358041029439">"qulfdan chiqarish"</string>
<string name="phone_label" msgid="2320074140205331708">"telefonni ochish"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"ovozli yordamni yoqish"</string>
<string name="camera_label" msgid="7261107956054836961">"kamerani ochish"</string>
<string name="cancel" msgid="6442560571259935130">"Bekor qilish"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Yordam xabari"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"OK"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Qayta urinish"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Barmoq izi skaneriga tegining"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Mobil internet"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Mobil internet yoniq"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Mobil internet yoqilmagan"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Maʼlumotlardan foydalanish uchun sozlanmagan"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Yoqilmagan"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth modem"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Parvoz rejimi"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Parvoz rejimi yoqildi."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"jimjitlik"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"faqat signallar"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Bezovta qilinmasin."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"“Bezovta qilinmasin” funksiyasi o‘chirildi."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"“Bezovta qilinmasin” funksiyasi yoqildi."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Bezovta qilinmasin."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Bezovta qilinmasin funksiyasi faolsizlantirildi."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Bezovta qilinmasin rejimi yoqildi."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth o‘chirilgan."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth yoqilgan."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Joylashuv so‘rovlari yoniq"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Barcha eslatmalarni tozalash."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">Guruhda yana <xliff:g id="NUMBER_1">%s</xliff:g> ta bildirishnoma.</item>
<item quantity="one">Guruhda yana <xliff:g id="NUMBER_0">%s</xliff:g> ta bildirishnoma.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Bildirishnoma sozlamalari"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> sozlamalari"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Ekran avtomatik buriladi."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Ekran lavhasi"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Boshqa parametrlarni ochish uchun ikonkalarni bosib turing"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Bezovta qilinmasin"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Bezovta qilinmasin"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Faqat muhimlari"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Faqat signallar"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Jimjitlik"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Quvvat tejash rejimi yoniq"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Unumdorlik pasayadi va fonda internetdan foydalanish cheklanadi"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Quvvat tejash rejimidan chiqish"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ekrandagi bildirishnomalar, parollar, rasmlar, xabarlar va toʻlovlar kabi barcha narsalarni translatsiya qilishni boshlaydi."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ekranni yozib olishi va translatsiya qilishiga ruxsat berilsinmi?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Yozib olinayotganda yoki translatsiya paytida, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> siz ijro etgan audio, parollar, toʻlov maʼlumotlari, suratlar va xabarlar kabi har qanday shaxsiy maʼlumotlarni yozib olishi mumkin."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Translatsiya/yozib olish paytida shaxsiy maʼlumotlarning oshkor boʻlishi"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Boshqa ko‘rsatilmasin"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Hammasini tozalash"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Boshqarish"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Tovush sozlamalari"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Yoyish"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yig‘ish"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Avtomatik taglavha mediasi"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Taglavhalar maslahatini yopish"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Audiochiqish qurilmasini almashtirish"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Ekran qadaldi"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Ekran yechilmaguncha u o‘zgarmas holatda qoladi. Uni yechish uchun “Orqaga” va “Umumiy ma’lumot” tugmalarini bosib turing."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Bu bildirishnomalar sizni ogohlantiradi"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Odatda bunday bildirishnomalarni yopasiz. \nUlar ochiq tursinmi?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Tayyor"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Joriy qilish"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Mazkur bildirishnomalar chiqaversinmi?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Chiqmasin"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Ovozsiz"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Bloklash"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Ha"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Kichraytirish"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Ovozsiz"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Tovushsiz bildirishnomalar"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Ovozsiz qolsin"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Ogohlantirish"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Tovushli bildirishnomalar"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Signal berishda davom etilsin"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Bildirishnoma kelmasin"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Bu ilovadan keladigan bildirishnomalar chiqaversinmi?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Bloklangan bildirishnomalar hech qayerda chiqmaydi va ovoz chiqarmaydi. Sozlamalar orqali bildirishnomalarni blokdan chiqarish mumkin."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Ovozsiz bildirishnomalar soyada chiqadi, lekin ekran qulfida chiqmaydi, banner namoyish qilmaydi va ovoz chiqarmaydi."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Bu bildirishnomalar tovush chiqaradi va bildirishnomalar paneli, holat qatori va ekran qulfida chiqadi."</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Bu bildirishnomalarni chiqmaydigan qilish imkonsiz"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Ushbu bildirishnomalar guruhi bu yerda sozlanmaydi"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"<xliff:g id="APP_NAME">%1$s</xliff:g> orqali"</string>
<string name="appops_camera" msgid="8100147441602585776">"Bu ilova kameradan foydalanmoqda."</string>
<string name="appops_microphone" msgid="741508267659494555">"Bu ilova mikrofondan foydalanmoqda."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Taqvim"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Ovoz balandligini boshqarish tugmalari bilan ko‘rsatish"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Bezovta qilinmasin"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Bezovta qilinmasin"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Ovoz balandligini boshqarish tugmalari"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Ovozni ko‘targanda “Bezovta qilinmasin” rejimini o‘chirish"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Ovozni balandlatganda Bezovta qilinmasin rejimidan chiqish"</string>
<string name="battery" msgid="7498329822413202973">"Batareya"</string>
<string name="clock" msgid="7416090374234785905">"Soat"</string>
<string name="headset" msgid="4534219457597457353">"Audio moslama"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Brauzerni ochish"</string>
<string name="mobile_data" msgid="7094582042819250762">"Mobil internet"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi o‘chiq"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth o‘chiq"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Bezovta qilinmasin rejimi o‘chiq"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Sozlamalar"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> ta ilova</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> ta ilova</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> ishlatmoqda: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Ilovalarda ishlatilmoqda: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Band:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> ta ilova <xliff:g id="TYPE_5">%2$s</xliff:g> ishlatmoqda.</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> ta ilova <xliff:g id="TYPE_1">%2$s</xliff:g> ishlatmoqda.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Maxfiylik sozlamalari"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"<xliff:g id="TYPES_LIST">%s</xliff:g> ishlatayotgan ilova"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Ilovalar <xliff:g id="TYPES_LIST">%s</xliff:g> ishlatmoqda"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" va "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"kamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"joylashuv"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"mikrofon"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">Yana <xliff:g id="NUM_APPS_1">%d</xliff:g> ta ilova</item>
- <item quantity="one">Yana <xliff:g id="NUM_APPS_0">%d</xliff:g> ta ilova</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Sensorlar nofaol"</string>
<string name="device_services" msgid="1191212554435440592">"Qurilma xizmatlari"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Nomsiz"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Bu ilovani qaytadan ishga tushirish va butun ekranga ochish uchun bosing."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Ochish: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"<xliff:g id="APP_NAME">%1$s</xliff:g> bildirishnoma sozlamalarini ochish"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Bu ilovadan qalqib chiquvchi maslahat chiqishiga ruxsat berasizmi?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Bloklash"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> pufakchalari uchun sozlamalar"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> pufakchalariga ruxsat berilsinmi?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Rad etish"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Ruxsat"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Keyinroq soʻralsin"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> ilovasidan <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> va yana <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ta bildirishnoma"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Surish"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Yuqori chapga surish"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Yuqori oʻngga surish"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Quyi chapga surish"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Quyi oʻngga surish"</string>
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index a353286c535c..5db23247dc62 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Sử dụng bộ sạc đi kèm với thiết bị"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Cài đặt"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Bật trình tiết kiệm pin?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Giới thiệu về Trình tiết kiệm pin"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Bật"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Bật trình tiết kiệm pin"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Cài đặt"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Người dùng hiện đã đăng nhập vào thiết bị này không thể bật tính năng gỡ lỗi USB. Để sử dụng tính năng này, hãy chuyển sang người dùng chính."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Đã tắt cổng USB"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Để bảo vệ thiết bị của bạn khỏi chất lỏng hay mảnh vỡ, cổng USB sẽ tắt và không thể phát hiện được bất kỳ phụ kiện nào.\n\nBạn sẽ được thông báo khi có thể sử dụng lại cổng USB một cách an toàn."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Đã bật cổng USB để phát hiện bộ sạc và phụ kiện"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Bật USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"T.phóng để lấp đầy m.hình"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Giãn ra để lấp đầy m.hình"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Chụp ảnh màn hình"</string>
@@ -108,8 +111,7 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Mở khóa không dùng vân tay của bạn"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Quét tìm khuôn mặt"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Gửi"</string>
- <!-- no translation found for accessibility_manage_notification (2026361503393549753) -->
- <skip />
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Quản lý thông báo"</string>
<string name="unlock_label" msgid="8779712358041029439">"mở khóa"</string>
<string name="phone_label" msgid="2320074140205331708">"mở điện thoại"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"mở trợ lý thoại"</string>
@@ -180,8 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Dữ liệu di động"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Dữ liệu di động đang bật"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Đã tắt dữ liệu di động"</string>
- <!-- no translation found for not_default_data_content_description (9194667237765917844) -->
- <skip />
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Chưa được đặt để sử dụng dữ liệu"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Tắt"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Chia sẻ kết nối Internet qua Bluetooth"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Chế độ trên máy bay."</string>
@@ -223,12 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Đã bật chế độ trên máy bay."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"hoàn toàn tắt tiếng"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"chỉ báo thức"</string>
- <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) -->
- <skip />
- <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) -->
- <skip />
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Không làm phiền."</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Đã tắt chế độ Không làm phiền."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Đã bật tính năng Không làm phiền."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"Bluetooth tắt."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"Bluetooth bật."</string>
@@ -279,6 +277,7 @@
<item quantity="other">Còn <xliff:g id="NUMBER_1">%s</xliff:g> thông báo nữa bên trong.</item>
<item quantity="one">Còn <xliff:g id="NUMBER_0">%s</xliff:g> thông báo nữa bên trong.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Cài đặt thông báo"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"Cài đặt <xliff:g id="APP_NAME">%s</xliff:g>"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Màn hình sẽ xoay tự động."</string>
@@ -291,8 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Trình bảo vệ m.hình"</string>
<string name="ethernet_label" msgid="7967563676324087464">"Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Chạm và giữ các biểu tượng để xem thêm tùy chọn khác"</string>
- <!-- no translation found for quick_settings_dnd_label (7112342227663678739) -->
- <skip />
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Không làm phiền"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Chỉ ưu tiên"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Chỉ báo thức"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Hoàn toàn tắt tiếng"</string>
@@ -443,10 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Trình tiết kiệm pin đang bật"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Giảm hiệu suất và dữ liệu nền"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Tắt trình tiết kiệm pin"</string>
- <!-- no translation found for media_projection_dialog_text (5751657130671431216) -->
- <skip />
- <!-- no translation found for media_projection_dialog_title (8124184308671641248) -->
- <skip />
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Trong khi quay hoặc quyền, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> có thể ghi mọi thông tin nhạy cảm, chẳng hạn như âm thanh bạn phát, mật khẩu, thông tin thanh toán, ảnh và tin nhắn."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Để lộ thông tin nhạy cảm khi truyền/quay"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Không hiển thị lại"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Xóa tất cả"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Quản lý"</string>
@@ -521,10 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Cài đặt âm thanh"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Mở rộng"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Thu gọn"</string>
- <!-- no translation found for volume_odi_captions_tip (1193653197906918269) -->
- <skip />
- <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) -->
- <skip />
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Tự động chú thích nội dung"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Đóng mẹo về chú thích"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Chuyển đổi thiết bị đầu ra"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Màn hình được ghim"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Thao tác này sẽ duy trì hiển thị màn hình cho đến khi bạn bỏ ghim. Hãy chạm và giữ Quay lại và Tổng quan để bỏ ghim."</string>
@@ -625,27 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Các thông báo này sẽ phát âm báo cho bạn"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Bạn thường bỏ qua những thông báo này. \nTiếp tục hiển thị thông báo?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Xong"</string>
- <!-- no translation found for inline_ok_button (966006867967928987) -->
- <skip />
+ <string name="inline_ok_button" msgid="975600017662930615">"Áp dụng"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Tiếp tục hiển thị các thông báo này?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Dừng thông báo"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Gửi mà không phát âm báo"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Chặn"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Tiếp tục hiển thị"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Thu nhỏ"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Hiển thị không phát âm báo"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Nhẹ nhàng"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Tiếp tục chế độ im lặng"</string>
- <!-- no translation found for inline_silent_button_alert (2273030946176140380) -->
- <skip />
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Gián đoạn"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Tiếp tục cảnh báo"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Tắt thông báo"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Tiếp tục hiển thị các thông báo từ ứng dụng này?"</string>
- <!-- no translation found for hint_text_block (3554459167504485284) -->
- <skip />
- <!-- no translation found for hint_text_silent (859468056340177016) -->
- <skip />
- <!-- no translation found for hint_text_alert (428122667751463119) -->
- <skip />
+ <string name="hint_text_block" msgid="3554459167504485284">"Thông báo bị chặn sẽ không hiển thị ở bất cứ đâu hay phát ra âm thanh. Bạn có thể truy cập vào phần cài đặt để bỏ chặn thông báo."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Thông báo im lặng hiển thị trong ngăn nhưng không xuất hiện trên màn hình khóa, hiển thị biểu ngữ hay phát ra âm thanh."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Các thông báo này sẽ phát ra âm thanh và hiển thị trong ngăn thông báo, thanh trạng thái và màn hình khóa"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Không thể tắt các thông báo này"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Không thể định cấu hình nhóm thông báo này tại đây"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"thông qua <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Ứng dụng này đang sử dụng máy ảnh."</string>
<string name="appops_microphone" msgid="741508267659494555">"Ứng dụng này đang sử dụng micrô."</string>
@@ -724,11 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Lịch"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Hiển thị với các điều khiển âm lượng"</string>
- <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) -->
- <skip />
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Không làm phiền"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Phím tắt các nút âm lượng"</string>
- <!-- no translation found for volume_up_silent (7545869833038212815) -->
- <skip />
+ <string name="volume_up_silent" msgid="7545869833038212815">"Thoát chế độ Không làm phiền khi tăng âm lượng"</string>
<string name="battery" msgid="7498329822413202973">"Pin"</string>
<string name="clock" msgid="7416090374234785905">"Đồng hồ"</string>
<string name="headset" msgid="4534219457597457353">"Tai nghe"</string>
@@ -869,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Đi tới trình duyệt"</string>
<string name="mobile_data" msgid="7094582042819250762">"Dữ liệu di động"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi tắt"</string>
<string name="bt_is_off" msgid="2640685272289706392">"Bluetooth tắt"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Không làm phiền tắt"</string>
@@ -900,10 +890,6 @@
<string name="heap_dump_tile_name" msgid="9141031328971226374">"Trích xuất bộ nhớ SysUI"</string>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> đang dùng <xliff:g id="TYPES_LIST">%2$s</xliff:g> của bạn."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Các ứng dụng đang dùng <xliff:g id="TYPES_LIST">%s</xliff:g> của bạn."</string>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"OK"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Cài đặt quyền riêng tư"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Ứng dụng đang sử dụng <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Các ứng dụng đang sử dụng <xliff:g id="TYPES_LIST">%s</xliff:g>"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" và "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"máy ảnh"</string>
@@ -912,30 +898,18 @@
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Tắt cảm biến"</string>
<string name="device_services" msgid="1191212554435440592">"Dịch vụ cho thiết bị"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Không có tiêu đề"</string>
- <!-- no translation found for restart_button_description (2035077840254950187) -->
- <skip />
+ <string name="restart_button_description" msgid="2035077840254950187">"Nhấn để khởi động lại ứng dụng này và xem ở chế độ toàn màn hình."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Mở <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <!-- no translation found for bubbles_settings_button_description (2970630476657287189) -->
- <skip />
- <!-- no translation found for bubbles_prompt (8807968030159469710) -->
- <skip />
- <!-- no translation found for no_bubbles (337101288173078247) -->
- <skip />
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Tùy chọn cài đặt cho bong bóng <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Bạn muốn cho phép bong bóng của <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Từ chối"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Cho phép"</string>
- <!-- no translation found for ask_me_later_bubbles (2147688438402939029) -->
- <skip />
- <!-- no translation found for bubble_content_description_single (1184462974339387516) -->
- <skip />
- <!-- no translation found for bubble_content_description_stack (8666349184095622232) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) -->
- <skip />
- <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) -->
- <skip />
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Hỏi tôi sau"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> của <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> từ <xliff:g id="APP_NAME">%2$s</xliff:g> và <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> bong bóng khác"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Di chuyển"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Chuyển lên trên cùng bên trái"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Chuyển lên trên cùng bên phải"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Chuyển tới dưới cùng bên trái"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Chuyển tới dưới cùng bên phải"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 30af99aedf44..ea35df9cc07f 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"使用设备随附的充电器"</string>
<string name="battery_low_why" msgid="4553600287639198111">"设置"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"要开启省电模式吗?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"关于省电模式"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"开启"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"开启省电模式"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"设置"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"目前已登录此设备的用户无法开启 USB 调试功能。要使用此功能,请切换为主要用户的帐号。"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB 端口已停用"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"为避免液体或碎屑导致您的设备受损,系统已停用 USB 端口,因此目前无法检测任何配件。\n\n系统会在可重新安全使用 USB 端口时通知您。"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB 端口已启用,可检测充电器和配件"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"启用 USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"缩放以填满屏幕"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"拉伸以填满屏幕"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"屏幕截图"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"不使用指纹解锁"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"正在扫描面孔"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"发送"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"管理通知"</string>
<string name="unlock_label" msgid="8779712358041029439">"解锁"</string>
<string name="phone_label" msgid="2320074140205331708">"打开电话"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"打开语音助理"</string>
<string name="camera_label" msgid="7261107956054836961">"打开相机"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"帮助消息区域"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"确认"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"重试"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"请触摸指纹传感器"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"移动数据"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"移动数据已开启"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"移动数据网络已关闭"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"未设置为使用移动数据"</string>
<string name="cell_data_off" msgid="1051264981229902873">"关闭"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"蓝牙网络共享。"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"飞行模式。"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"飞行模式已开启。"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"完全静音"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"仅限闹钟"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"勿扰。"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"已关闭勿扰模式。"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"已开启勿扰模式。"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"勿扰。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"勿扰模式已关闭。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"勿扰模式已开启。"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"蓝牙。"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"蓝牙关闭。"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"蓝牙开启。"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"应用发出了有效位置信息请求"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (+<xliff:g id="OVERFLOW">%2$s</xliff:g>)"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">此群组内还有 <xliff:g id="NUMBER_1">%s</xliff:g> 条通知。</item>
<item quantity="one">此群组内还有 <xliff:g id="NUMBER_0">%s</xliff:g> 条通知。</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>:<xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知设置"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>设置"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"屏幕会自动旋转。"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"屏保"</string>
<string name="ethernet_label" msgid="7967563676324087464">"有线网络"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"触摸并按住相应图标即可查看更多选项"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"勿扰"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"勿扰"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"仅限优先事项"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"仅限闹钟"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"完全阻止"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"省电模式已开启"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"降低性能并限制后台流量"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"关闭省电模式"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>将开始捕获您屏幕上显示的所有内容(包括通知、密码、照片、消息和付款信息)。"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"要允许<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>录制或投射您的屏幕内容吗?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"在录制或投射内容时,<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>可以获取任何敏感信息,例如您播放的音频、您的密码、付款信息、照片和消息等。"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"在投射/录制时显示敏感信息"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"不再显示"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"全部清除"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"管理"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"声音设置"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"展开"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"收起"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自动字幕媒体"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"关闭字幕提示"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"切换输出设备"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"已固定屏幕"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"这将会固定显示此屏幕,直到您取消固定为止。触摸并按住“返回”和“概览”即可取消固定屏幕。"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"这些通知将会提醒您"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"您通常会关闭这些通知。\n是否继续显示通知?"</string>
<string name="inline_done_button" msgid="492513001558716452">"完成"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"应用"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"要继续显示这些通知吗?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"停止通知"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"无声发送"</string>
<string name="inline_block_button" msgid="8735843688021655065">"屏蔽"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"继续显示"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"最小化"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"显示通知但不发出提示音"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"无声显示"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"显示通知但不发出提示音"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"提醒我"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"强制提醒"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"继续提醒"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"关闭通知"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"要继续显示来自此应用的通知吗?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"被屏蔽的通知不会显示在任何位置,也不会发出声音。您可以在“设置”中取消屏蔽通知。"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"无声通知会显示在通知栏中,但不会显示在锁定屏幕上,也不会显示横幅或播放声音。"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"这些通知会发出提示音,并会显示在通知抽屉式导航栏、状态栏和锁定屏幕中"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"无法关闭这些通知"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"您无法在此处配置这组通知"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"通过<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"此应用正在使用摄像头。"</string>
<string name="appops_microphone" msgid="741508267659494555">"此应用正在使用麦克风。"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"日历"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"与音量控件一起显示"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"勿扰"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"勿扰"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"音量按钮快捷键"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"按音量调高键时退出勿扰模式"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"按音量调高键时退出勿扰模式"</string>
<string name="battery" msgid="7498329822413202973">"电池"</string>
<string name="clock" msgid="7416090374234785905">"时钟"</string>
<string name="headset" msgid="4534219457597457353">"耳机"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"转到浏览器"</string>
<string name="mobile_data" msgid="7094582042819250762">"移动数据"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>,<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"WLAN 已关闭"</string>
<string name="bt_is_off" msgid="2640685272289706392">"蓝牙已关闭"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"“勿扰”模式已关闭"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"设置"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"知道了"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"转储 SysUI 堆"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> 个应用</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> 个应用</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g>正在使用您的<xliff:g id="TYPES_LIST">%2$s</xliff:g>。"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"有多个应用正在使用您的<xliff:g id="TYPES_LIST">%s</xliff:g>。"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"正在使用:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> 个应用正在使用您的<xliff:g id="TYPE_5">%2$s</xliff:g>。</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%1$d</xliff:g> 个应用正在使用您的<xliff:g id="TYPE_1">%2$s</xliff:g>。</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"知道了"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"隐私权设置"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"正在使用您的<xliff:g id="TYPES_LIST">%s</xliff:g>的应用"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"正在使用您的<xliff:g id="TYPES_LIST">%s</xliff:g>的应用"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" 和 "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"相机"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"位置信息"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"麦克风"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">另外 <xliff:g id="NUM_APPS_1">%d</xliff:g> 个应用</item>
- <item quantity="one">另外 <xliff:g id="NUM_APPS_0">%d</xliff:g> 个应用</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"已关闭传感器"</string>
<string name="device_services" msgid="1191212554435440592">"设备服务"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"无标题"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"点按即可重启此应用并进入全屏模式。"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"打开<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"打开<xliff:g id="APP_NAME">%1$s</xliff:g>的通知设置"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"要在此应用中启用气泡功能吗?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"屏蔽"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g>气泡的相关设置"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"要允许来自<xliff:g id="APP_NAME">%1$s</xliff:g>的气泡吗?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"拒绝"</string>
<string name="yes_bubbles" msgid="668809525728633841">"允许"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"以后再说"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>:<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g>和另外 <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> 个应用:<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"移动"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"移至左上角"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"移至右上角"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"移至左下角"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"移至右下角"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 04e7ecae58d5..0245e56e0cc0 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"使用裝置隨附的充電器"</string>
<string name="battery_low_why" msgid="4553600287639198111">"設定"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"要開啟省電模式嗎?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"關於「省電模式」"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"開啟"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"開啟省電模式"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"設定"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"目前登入此裝置的使用者無法啟用 USB 偵錯功能。如要使用此功能,請切換至主要使用者。"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"已停用 USB 連接埠"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"為了保護您的裝置免受液體或碎片損害,USB 連接埠已停用,因此不會偵測到任何配件。\n\nUSB 連接埠可安全使用時,您會收到通知。"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"已啟用 USB 連接埠以偵測充電器和配件"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"啟用 USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"放大為全螢幕"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"放大為全螢幕"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"擷取螢幕畫面"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"不使用指紋解鎖"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"掃瞄緊面孔"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"傳送"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"管理通知"</string>
<string name="unlock_label" msgid="8779712358041029439">"解鎖"</string>
<string name="phone_label" msgid="2320074140205331708">"開啟電話"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"開啟語音助手"</string>
<string name="camera_label" msgid="7261107956054836961">"開啟相機"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"說明訊息區域"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"確認"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"請再試一次"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"請輕觸指紋感應器"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"流動數據"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"開咗流動數據"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"流動數據已關閉"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"未設定至可使用資料"</string>
<string name="cell_data_off" msgid="1051264981229902873">"關閉"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"藍牙網絡共享。"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"飛航模式。"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"飛行模式已開啟。"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"完全靜音"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"只限鬧鐘"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"請勿騷擾。"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"已關閉「請勿騷擾」。"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"已開啟「請勿騷擾」。"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"請勿騷擾。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"閂咗「請勿騷擾」。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"已開咗「請勿騷擾」。"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"藍牙。"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"藍牙已關閉。"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"藍牙已開啟。"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"位置要求啟動中"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (+<xliff:g id="OVERFLOW">%2$s</xliff:g> 個)"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">裡面還有 <xliff:g id="NUMBER_1">%s</xliff:g> 個通知。</item>
<item quantity="one">裡面還有 <xliff:g id="NUMBER_0">%s</xliff:g> 個通知。</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>:<xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知設定"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>設定"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"螢幕會自動旋轉。"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"螢幕保護程式"</string>
<string name="ethernet_label" msgid="7967563676324087464">"以太網"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"按住圖示即可查看更多選項"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"請勿騷擾"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"請勿騷擾"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"只限優先"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"只限鬧鐘"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"完全靜音"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"省電模式已開啟"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"降低效能並限制背景數據傳輸"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"關閉省電模式"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> 將開始擷取螢幕上的所有內容,包括通知、密碼、相片、訊息和付款資料。"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"要允許 <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> 錄製或投放您的畫面嗎?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"錄製或投放期間,「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」可以擷取任何敏感資料,例如您播放的音效檔案、您的密碼、付款資料、相片和訊息。"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"在投放/錄製期間披露敏感資訊"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"不用再顯示"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"全部清除"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"管理"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"音效設定"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"收合"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動為媒體加入字幕"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"字幕提示"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"切換輸出裝置"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"螢幕已固定"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"畫面將會繼續顯示,直至您取消固定。按住 [返回] 和 [概覽] 即可取消固定。"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"這些通知會提醒您"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"您通常會關閉這些通知。\n要繼續顯示通知嗎?"</string>
<string name="inline_done_button" msgid="492513001558716452">"完成"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"套用"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"要繼續顯示這些通知嗎?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"停止通知"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"傳送但不發出音效"</string>
<string name="inline_block_button" msgid="8735843688021655065">"封鎖"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"繼續顯示"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"最小化"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"顯示通知但不發出音效"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"溫柔"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"保持靜音"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"提示我"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"打擾"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"繼續提示"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"關閉通知"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"要繼續顯示此應用程式的通知嗎?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"已封鎖的通知不會顯示於畫面的任何地方,或播放任何聲音。您可以在設定中解除封鎖此類通知。"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"靜音通知會出現在通知欄,但不會出現在上鎖畫面,亦不會顯示橫額或播放音效。"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"這些通知會發出聲音,並在通知導覽列、狀態列和上鎖畫面中顯示"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"無法關閉這些通知"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"無法在此設定這組通知"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"透過「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
<string name="appops_camera" msgid="8100147441602585776">"此應用程式目前使用相機。"</string>
<string name="appops_microphone" msgid="741508267659494555">"此應用程式目前使用麥克風。"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"日曆"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"與音量控制一起顯示"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"請勿騷擾"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"請勿騷擾"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"音量按鈕快速鍵"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"調高音量時停用「請勿騷擾」模式"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"調高音量時停用「請勿騷擾」模式"</string>
<string name="battery" msgid="7498329822413202973">"電池"</string>
<string name="clock" msgid="7416090374234785905">"時鐘"</string>
<string name="headset" msgid="4534219457597457353">"耳機"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"前往瀏覽器"</string>
<string name="mobile_data" msgid="7094582042819250762">"流動數據"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>,<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi 已關閉"</string>
<string name="bt_is_off" msgid="2640685272289706392">"藍牙已關閉"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"「請勿騷擾」已關閉"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"設定"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"知道了"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"傾印 SysUI 記憶體快照"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> 個應用程式</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> 個應用程式</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"「<xliff:g id="APP">%1$s</xliff:g>」正在使用<xliff:g id="TYPES_LIST">%2$s</xliff:g>。"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"有多個應用程式正在使用<xliff:g id="TYPES_LIST">%s</xliff:g>。"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"正在使用:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">有 <xliff:g id="NUM_APPS_4">%1$d</xliff:g> 個應用程式正在使用您的<xliff:g id="TYPE_5">%2$s</xliff:g>。</item>
- <item quantity="one">有 <xliff:g id="NUM_APPS_0">%1$d</xliff:g> 個應用程式正在使用您的<xliff:g id="TYPE_1">%2$s</xliff:g>。</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"知道了"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"私隱設定"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" 和 "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"相機"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"位置"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"麥克風"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">其他 <xliff:g id="NUM_APPS_1">%d</xliff:g> 個應用程式</item>
- <item quantity="one">其他 <xliff:g id="NUM_APPS_0">%d</xliff:g> 個應用程式</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"感應器已關閉"</string>
<string name="device_services" msgid="1191212554435440592">"裝置服務"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"無標題"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"輕按即可重新開啟此應用程式並放大至全螢幕。"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」的通知設定"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"要為此應用程式啟用小視窗嗎?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"封鎖"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」小視窗設定"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"要允許開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」的小視窗嗎?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"拒絕"</string>
<string name="yes_bubbles" msgid="668809525728633841">"允許"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"稍後再詢問我"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"來自「<xliff:g id="APP_NAME">%2$s</xliff:g>」的 <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"來自「<xliff:g id="APP_NAME">%2$s</xliff:g>」及另外 <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> 個應用程式的<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"移動"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"移去左上角"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"移去右上角"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"移去左下角"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"移去右下角"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 86b0eea2876d..01b5c7af7fc9 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"使用裝置隨附的充電器"</string>
<string name="battery_low_why" msgid="4553600287639198111">"設定"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"要開啟節約耗電量模式嗎?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"關於節約耗電量功能"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"開啟"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"開啟節約耗電量模式"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"設定"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"目前登入這個裝置的使用者無法啟用 USB 偵錯功能。如要使用這項功能,請切換到主要使用者。"</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"USB 連接埠已停用"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"為了避免液體或灰塵導致你的裝置受損,系統已停用 USB 連接埠,因此目前無法偵測任何配件。\n\n系統會在可繼續安全使用 USB 連接埠時通知你。"</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"USB 通訊埠已啟用,可偵測充電器和配件"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"啟用 USB 連接埠"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"放大為全螢幕"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"放大為全螢幕"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"擷取螢幕畫面"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"不使用指紋進行解鎖"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"掃描臉孔"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"傳送"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"管理通知"</string>
<string name="unlock_label" msgid="8779712358041029439">"解除鎖定"</string>
<string name="phone_label" msgid="2320074140205331708">"開啟電話"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"開啟語音小幫手"</string>
<string name="camera_label" msgid="7261107956054836961">"開啟攝影機"</string>
<string name="cancel" msgid="6442560571259935130">"取消"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"說明訊息區域"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"確認"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"再試一次"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"請輕觸指紋感應器"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"行動數據"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"行動數據已開啟"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"行動數據已關閉"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"並未設為使用行動數據"</string>
<string name="cell_data_off" msgid="1051264981229902873">"已關閉"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"藍牙網路共用"</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"飛行模式。"</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"飛航模式已開啟。"</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"完全靜音"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"僅限鬧鐘"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"零打擾。"</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"已停用「零打擾」設定。"</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"已啟用「零打擾」設定。"</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"零打擾。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"「零打擾」設定已關閉。"</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"「零打擾」設定已開啟。"</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"藍牙。"</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"藍牙已關閉。"</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"藍牙已開啟。"</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"有位置資訊要求"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"清除所有通知。"</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> (+<xliff:g id="OVERFLOW">%2$s</xliff:g>)"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="other">群組中還有 <xliff:g id="NUMBER_1">%s</xliff:g> 則通知。</item>
<item quantity="one">群組中還有 <xliff:g id="NUMBER_0">%s</xliff:g> 則通知。</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>:<xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"通知設定"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g>設定"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"螢幕會自動旋轉。"</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"螢幕保護程式"</string>
<string name="ethernet_label" msgid="7967563676324087464">"乙太網路"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"按住圖示即可查看更多選項"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"零打擾"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"零打擾"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"僅限優先通知"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"僅限鬧鐘"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"完全靜音"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"節約耗電量模式已開啟"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"降低效能並限制背景數據傳輸"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"關閉節約耗電量模式"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> 會開始擷取畫面上的所有內容 (包含通知、密碼、相片、訊息和付款資訊)。"</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"要允許 <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> 錄製或投放你的畫面嗎?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"「<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>」在錄製或投放內容時可擷取任何機密資訊,例如你播放的音訊,以及你的密碼、付款資訊、相片和訊息。"</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"在投放/錄製時顯示機密資訊"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"不要再顯示"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"全部清除"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"管理"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"音效設定"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"展開"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"收合"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動產生媒體字幕"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"關閉字幕提示"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"切換輸出裝置"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"螢幕已固定"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"這會讓目前的螢幕畫面保持顯示狀態,直到取消固定為止。按住 [返回] 按鈕和 [總覽] 按鈕即可取消固定。"</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"系統顯示這些通知時會發出音效"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"你通常會關閉這些通知。\n要繼續顯示通知嗎?"</string>
<string name="inline_done_button" msgid="492513001558716452">"完成"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"套用"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"要繼續顯示這些通知嗎?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"停止顯示通知"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"無聲傳送"</string>
<string name="inline_block_button" msgid="8735843688021655065">"封鎖"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"繼續顯示"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"最小化"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"顯示通知但不發出音效"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"無聲顯示"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"繼續顯示通知但不發出音效"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"顯示通知"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"強制提醒"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"繼續顯示通知"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"關閉通知"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"要繼續顯示這個應用程式的通知嗎?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"遭封鎖的通知不會顯示在任何地方,也不會播放音效。你可以在設定頁面中解除封鎖通知。"</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"無聲通知會顯示於通知欄,但不會顯示在螢幕鎖定畫面,也不會顯示橫幅及播放音效。"</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"這些通知會發出音效,並顯示在通知導覽匣、狀態列和螢幕鎖定畫面中"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"無法關閉這些通知"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"無法在這裡設定這個通知群組"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"透過「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
<string name="appops_camera" msgid="8100147441602585776">"這個應用程式正在使用相機。"</string>
<string name="appops_microphone" msgid="741508267659494555">"這個應用程式正在使用麥克風。"</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"日曆"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"與音量控制項一起顯示"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"零打擾"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"零打擾"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"音量按鈕快速鍵"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"按下調高音量鍵時停用「零打擾」模式"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"按下調高音量鍵時停用「零打擾」模式"</string>
<string name="battery" msgid="7498329822413202973">"電池"</string>
<string name="clock" msgid="7416090374234785905">"時鐘"</string>
<string name="headset" msgid="4534219457597457353">"耳機"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"前往瀏覽器"</string>
<string name="mobile_data" msgid="7094582042819250762">"行動數據"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> - <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>,<xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"Wi-Fi 已關閉"</string>
<string name="bt_is_off" msgid="2640685272289706392">"藍牙已關閉"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"零打擾模式已關閉"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"設定"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"我知道了"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"傾印 SysUI 記憶體快照"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> 個應用程式</item>
- <item quantity="one"><xliff:g id="NUM_APPS_0">%d</xliff:g> 個應用程式</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"「<xliff:g id="APP">%1$s</xliff:g>」正在使用<xliff:g id="TYPES_LIST">%2$s</xliff:g>。"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"有多個應用程式正在使用<xliff:g id="TYPES_LIST">%s</xliff:g>。"</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"使用中:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="other">有 <xliff:g id="NUM_APPS_4">%1$d</xliff:g> 個應用程式正在使用你的<xliff:g id="TYPE_5">%2$s</xliff:g>。</item>
- <item quantity="one">有 <xliff:g id="NUM_APPS_0">%1$d</xliff:g> 個應用程式正在使用你的<xliff:g id="TYPE_1">%2$s</xliff:g>。</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"我知道了"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"隱私權設定"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"使用<xliff:g id="TYPES_LIST">%s</xliff:g>的應用程式"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">"、 "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" 和 "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"相機"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"位置"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"麥克風"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="other">另外 <xliff:g id="NUM_APPS_1">%d</xliff:g> 個應用程式</item>
- <item quantity="one">另外 <xliff:g id="NUM_APPS_0">%d</xliff:g> 個應用程式</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"已關閉感應器"</string>
<string name="device_services" msgid="1191212554435440592">"裝置服務"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"無標題"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"輕觸即可重新啟動這個應用程式並進入全螢幕模式。"</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"開啟「<xliff:g id="APP_NAME">%1$s</xliff:g>」的通知設定"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"要允許這個應用程式顯示泡泡嗎?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"封鎖"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」泡泡的設定"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」顯示泡泡嗎?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"拒絕"</string>
<string name="yes_bubbles" msgid="668809525728633841">"允許"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"稍後再詢問我"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g>:<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"「<xliff:g id="APP_NAME">%2$s</xliff:g>」和其他 <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> 個應用程式:<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"移動"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"移至左上方"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"移至右上方"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"移至左下方"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"移至右下方"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 612b61e846cc..1f465ccb8539 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -34,6 +34,7 @@
<string name="invalid_charger_text" msgid="6480624964117840005">"Sebenzisa ishaja eze nedivayisi yakho"</string>
<string name="battery_low_why" msgid="4553600287639198111">"Izilungiselelo"</string>
<string name="battery_saver_confirmation_title" msgid="2052100465684817154">"Vula isilondolozi sebhethri?"</string>
+ <string name="battery_saver_confirmation_title_generic" msgid="2090922638411744540">"Mayelana nesilondolozi sebhethri"</string>
<string name="battery_saver_confirmation_ok" msgid="7507968430447930257">"Vula"</string>
<string name="battery_saver_start_action" msgid="8187820911065797519">"Vula isilondolozi sebhethri"</string>
<string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Izilungiselelo"</string>
@@ -62,6 +63,8 @@
<string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"Umsebenzisi manje ongene ngemvume kule divayisi entsha akakwazi ukuvula ukulungisa amaphutha ku-USB. Ukuze usebenzise lesi sici, shintshela kumsebenzisi oyinhloko."</string>
<string name="usb_contaminant_title" msgid="206854874263058490">"Imbobo ye-USB ikhutshaziwe"</string>
<string name="usb_contaminant_message" msgid="2205845572186473860">"Ukuze uvikele idivayisi yakho kusukela kuketshezi noma ama-debris, imbobo ye-USB iyakhutshazwa futhi ngeke ithole noma iziphi izisetshenziswa.\n\nUzokwaziswa uma kuphephile ukuphinda usebenzise imbobo yakho ye-USB."</string>
+ <string name="usb_port_enabled" msgid="7906141351687694867">"Imbobo ye-USB inikwe amandla ukuze ithole amashaja nezisetshenziswa"</string>
+ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Nika amandla i-USB"</string>
<string name="compat_mode_on" msgid="6623839244840638213">"Sondeza ukugcwalisa isikrini"</string>
<string name="compat_mode_off" msgid="4434467572461327898">"Nweba ukugcwalisa isikrini"</string>
<string name="global_action_screenshot" msgid="8329831278085426283">"Isithombe-skrini"</string>
@@ -108,12 +111,12 @@
<string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"Vula ngaphandle kokusebenzisa izigxivizo zakho zeminwe"</string>
<string name="accessibility_scanning_face" msgid="769545173211758586">"Ukuskena ubuso"</string>
<string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Thumela"</string>
+ <string name="accessibility_manage_notification" msgid="2026361503393549753">"Phatha izaziso"</string>
<string name="unlock_label" msgid="8779712358041029439">"vula"</string>
<string name="phone_label" msgid="2320074140205331708">"vula ifoni"</string>
<string name="voice_assist_label" msgid="3956854378310019854">"vula isilekeleli sezwi"</string>
<string name="camera_label" msgid="7261107956054836961">"vula ikhamera"</string>
<string name="cancel" msgid="6442560571259935130">"Khansela"</string>
- <string name="accessibility_biometric_dialog_help_area" msgid="8953787076940186847">"Indawo yosizo lomlayezo"</string>
<string name="biometric_dialog_confirm" msgid="6468457350041712674">"Qinisekisa"</string>
<string name="biometric_dialog_try_again" msgid="1900185172633183201">"Zama futhi"</string>
<string name="fingerprint_dialog_touch_sensor" msgid="8511557690663181761">"Thinta inzwa yesigxivizo somunwe"</string>
@@ -179,6 +182,7 @@
<string name="accessibility_cell_data" msgid="5326139158682385073">"Idatha Yeselula"</string>
<string name="accessibility_cell_data_on" msgid="5927098403452994422">"Idatha yeselula ivuliwe"</string>
<string name="cell_data_off_content_description" msgid="4356113230238585072">"Idatha yeselula ivaliwe"</string>
+ <string name="not_default_data_content_description" msgid="9194667237765917844">"Akusethiwe ukuze kusetshenziswe idatha"</string>
<string name="cell_data_off" msgid="1051264981229902873">"Valiwe"</string>
<string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Imodemu nge-Bluetooth."</string>
<string name="accessibility_airplane_mode" msgid="834748999790763092">"Imodi yendiza."</string>
@@ -220,9 +224,9 @@
<string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Imodi yendiza ivuliwe."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"ukuthula okuphelele"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"ama-alamu kuphela"</string>
- <string name="accessibility_quick_settings_dnd" msgid="6607873236717185815">"Ungaphazamisi."</string>
- <string name="accessibility_quick_settings_dnd_changed_off" msgid="898107593453022935">"Ukungaphazamisi kuvaliwe."</string>
- <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"Ukungaphazamisi kuvuliwe."</string>
+ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Ungaphazamisi"</string>
+ <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Ukungaphazamisi kuvaliwe."</string>
+ <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Ukungaphazamisi kuvuliwe."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"I-Bluetooth."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"I-Bluetooth ivaliwe."</string>
<string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"I-Bluetooth ivuliwe."</string>
@@ -269,11 +273,11 @@
<string name="accessibility_location_active" msgid="2427290146138169014">"Izicelo zendawo ziyasebenza"</string>
<string name="accessibility_clear_all" msgid="5235938559247164925">"Susa zonke izaziso."</string>
<string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
- <string name="notification_group_overflow_indicator_ambient" msgid="879560382990377886">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>, +<xliff:g id="OVERFLOW">%2$s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404">
<item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> izaziso eziningi ngaphakathi.</item>
<item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> izaziso eziningi ngaphakathi.</item>
</plurals>
+ <string name="notification_summary_message_format" msgid="715071952312553396">"<xliff:g id="CONTACT_NAME">%1$s</xliff:g>: <xliff:g id="MESSAGE_CONTENT">%2$s</xliff:g>"</string>
<string name="status_bar_notification_inspect_item_title" msgid="5668348142410115323">"Izilungiselelo zesaziso"</string>
<string name="status_bar_notification_app_settings_title" msgid="5525260160341558869">"<xliff:g id="APP_NAME">%s</xliff:g> izilungiselelo"</string>
<string name="accessibility_rotation_lock_off" msgid="4062780228931590069">"Isikrini sizophenduka ngokuzenzakalela."</string>
@@ -286,7 +290,7 @@
<string name="start_dreams" msgid="5640361424498338327">"Isigcini sihenqo"</string>
<string name="ethernet_label" msgid="7967563676324087464">"I-Ethernet"</string>
<string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Thinta uphinde ubambe izithonjana ukuze uthole ezinye izinketho"</string>
- <string name="quick_settings_dnd_label" msgid="8735855737575028208">"Ungaphazamisi"</string>
+ <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Ungaphazamisi"</string>
<string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Okubalulekile kuphela"</string>
<string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Ama-alamu kuphela"</string>
<string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Ukuthula okuphelele"</string>
@@ -437,8 +441,8 @@
<string name="battery_saver_notification_title" msgid="8614079794522291840">"Isilondolozi sebhethri sivuliwe"</string>
<string name="battery_saver_notification_text" msgid="820318788126672692">"Sehlisa ukusebenza nedatha yasemuva"</string>
<string name="battery_saver_notification_action_text" msgid="132118784269455533">"Vala isilondolozi sebhethri"</string>
- <string name="media_projection_dialog_text" msgid="1443042478990422751">"I-<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> izoqala ukuthatha yonke into kusikrini sakho efaka izaziso, amaphasiwedi, izithombe, imilayezo, nolwazi lwenkokhelo."</string>
- <string name="media_projection_dialog_title" msgid="7574971526813630219">"Vumela i-<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ukuthi irekhode noma isakaze isikrini sakho?"</string>
+ <string name="media_projection_dialog_text" msgid="5751657130671431216">"Ngenkathi kurekhodwa noma kusakazwa, i-<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> ingathwebula ulwazi olunozwelo, olufana nomsindo owudlalayo kanye namaphasiwedi akho, ulwazi lokukhokha, izithombe, nemilayezo."</string>
+ <string name="media_projection_dialog_title" msgid="8124184308671641248">"Ukuveza ulwazi oluzwelayo ngesikhathi sokusakaza/ukurekhoda"</string>
<string name="media_projection_remember_text" msgid="3103510882172746752">"Ungabonisi futhi"</string>
<string name="clear_all_notifications_text" msgid="814192889771462828">"Sula konke"</string>
<string name="manage_notifications_text" msgid="2386728145475108753">"Phatha"</string>
@@ -513,6 +517,8 @@
<string name="accessibility_volume_settings" msgid="4915364006817819212">"Izilungiselelo zomsindo"</string>
<string name="accessibility_volume_expand" msgid="5946812790999244205">"Nweba"</string>
<string name="accessibility_volume_collapse" msgid="3609549593031810875">"Goqa"</string>
+ <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Yenza amagama-ngcazo ngokuzenzakalela emidiya"</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Ithiphu lamagama-ngcazo"</string>
<string name="accessibility_output_chooser" msgid="8185317493017988680">"Shintsha idivayisi yokukhipha"</string>
<string name="screen_pinning_title" msgid="3273740381976175811">"Isikrini siphiniwe"</string>
<string name="screen_pinning_description" msgid="8909878447196419623">"Lokhu kuyigcina ibukeka uze ususe ukuphina. Thinta uphinde ubambe okuthi Emuva Nokubuka konke ukuze ususe ukuphina."</string>
@@ -613,18 +619,24 @@
<string name="notification_channel_unsilenced" msgid="4790904571552394137">"Lezi zaziso zizokuxwayisa"</string>
<string name="inline_blocking_helper" msgid="3055064577771478591">"Uvamise ukucashisa lezi zaziso. \nQhubeka ulokhu uzibonisa?"</string>
<string name="inline_done_button" msgid="492513001558716452">"Kwenziwe"</string>
+ <string name="inline_ok_button" msgid="975600017662930615">"Faka"</string>
<string name="inline_keep_showing" msgid="8945102997083836858">"Qhubeka nokubonisa lezi zaziso?"</string>
<string name="inline_stop_button" msgid="4172980096860941033">"Misa izaziso"</string>
<string name="inline_deliver_silently_button" msgid="7756289895745629140">"Letha ngokuthula"</string>
<string name="inline_block_button" msgid="8735843688021655065">"Vimba"</string>
<string name="inline_keep_button" msgid="6665940297019018232">"Qhubeka nokubonisa"</string>
<string name="inline_minimize_button" msgid="966233327974702195">"Nciphisa"</string>
- <string name="inline_silent_button_silent" msgid="4411510650503783646">"Bonisa ngokuthulile"</string>
+ <string name="inline_silent_button_silent" msgid="6904727667411781466">"Okumnene"</string>
<string name="inline_silent_button_stay_silent" msgid="6308371431217601009">"Hlala uthulile"</string>
- <string name="inline_silent_button_alert" msgid="7961887853830826523">"Ngazise"</string>
+ <string name="inline_silent_button_alert" msgid="2449191160203602471">"Okuphazamisayo"</string>
<string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"Qhubeka wazise"</string>
+ <string name="inline_turn_off_notifications" msgid="8635596135532202355">"Vala izaziso"</string>
<string name="inline_keep_showing_app" msgid="1723113469580031041">"Qhubeka nokubonisa izaziso kusuka kulolu hlelo lokusebenza?"</string>
+ <string name="hint_text_block" msgid="3554459167504485284">"Izaziso ezivinjiwe aziveli noma ikuphi noma zidlale umsindo. Ungavulela izaziso kuzilungiselelo."</string>
+ <string name="hint_text_silent" msgid="859468056340177016">"Izaziso ezithulile zivela kumthunzi, kodwa aziveli kusikrini sokukhiya, ziphrezenta isibhengezo, noma zidlala umsindo."</string>
+ <string name="hint_text_alert" msgid="2721169810318722524">"Lezi zaziso zizokwenza umsindo ziphinze zivele kukhabethe lesaziso, kubha lesimo, nakusikrini sokukhiya"</string>
<string name="notification_unblockable_desc" msgid="1037434112919403708">"Lezi zaziso azikwazi ukuvalwa"</string>
+ <string name="notification_multichannel_desc" msgid="4695920306092240550">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string>
<string name="notification_delegate_header" msgid="9167022191405284627">"nge-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="appops_camera" msgid="8100147441602585776">"Lolu hlelo lokusebenza lusebenzisa ikhamera."</string>
<string name="appops_microphone" msgid="741508267659494555">"Lolu hlelo lokusebenza lusebenzisa imakrofoni."</string>
@@ -703,9 +715,9 @@
<string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"I-YouTube"</string>
<string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"Ikhalenda"</string>
<string name="tuner_full_zen_title" msgid="4540823317772234308">"Bonisa ngezilawuli zevolomu"</string>
- <string name="volume_and_do_not_disturb" msgid="3373784330208603030">"Ungaphazamisi"</string>
+ <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"Ungaphazamisi"</string>
<string name="volume_dnd_silent" msgid="4363882330723050727">"Izinqamuleli zezinkinobho zevolomu"</string>
- <string name="volume_up_silent" msgid="7141255269783588286">"Phuma kokuthi ungaphazamisi ekukhuphuleni ivolumu"</string>
+ <string name="volume_up_silent" msgid="7545869833038212815">"Phuma ekungaphazamiseni uma kuphakanyiswe ivolumu"</string>
<string name="battery" msgid="7498329822413202973">"Ibhethri"</string>
<string name="clock" msgid="7416090374234785905">"Iwashi"</string>
<string name="headset" msgid="4534219457597457353">"Ama-earphone"</string>
@@ -846,6 +858,7 @@
<string name="go_to_web" msgid="2650669128861626071">"Iya kusiphequluli"</string>
<string name="mobile_data" msgid="7094582042819250762">"Idatha yeselula"</string>
<string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string>
+ <string name="mobile_carrier_text_format" msgid="3241721038678469804">"I-<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string>
<string name="wifi_is_off" msgid="1838559392210456893">"I-Wi-Fi ivaliwe"</string>
<string name="bt_is_off" msgid="2640685272289706392">"I-Bluetooth ivaliwe"</string>
<string name="dnd_is_off" msgid="6167780215212497572">"Ungaphazamisi kuvaliwe"</string>
@@ -875,36 +888,28 @@
<string name="open_saver_setting_action" msgid="8314624730997322529">"Izilungiselelo"</string>
<string name="auto_saver_okay_action" msgid="2701221740227683650">"Ngiyezwa"</string>
<string name="heap_dump_tile_name" msgid="9141031328971226374">"I-Dump SysUI Heap"</string>
- <plurals name="ongoing_privacy_chip_multiple_apps" formatted="false" msgid="1406406529558080714">
- <item quantity="one"><xliff:g id="NUM_APPS_2">%d</xliff:g> izinhlelo zokusebenza</item>
- <item quantity="other"><xliff:g id="NUM_APPS_2">%d</xliff:g> izinhlelo zokusebenza</item>
- </plurals>
<string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"I-<xliff:g id="APP">%1$s</xliff:g> isebenzisa i-<xliff:g id="TYPES_LIST">%2$s</xliff:g> yakho."</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Izinhlelo zokusebenza zisebenzisa i-<xliff:g id="TYPES_LIST">%s</xliff:g> yakho."</string>
- <string name="ongoing_privacy_chip_in_use" msgid="5174331553211609272">"Kuyasebenza:"</string>
- <plurals name="ongoing_privacy_chip_content_multiple_apps_single_op" formatted="false" msgid="4871926099254314088">
- <item quantity="one"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> izinhlelo zokusebenza zisebenzisa i-<xliff:g id="TYPE_5">%2$s</xliff:g> yakho.</item>
- <item quantity="other"><xliff:g id="NUM_APPS_4">%1$d</xliff:g> izinhlelo zokusebenza zisebenzisa i-<xliff:g id="TYPE_5">%2$s</xliff:g> yakho.</item>
- </plurals>
- <string name="ongoing_privacy_dialog_ok" msgid="3273300106348958308">"Ngiyezwa"</string>
- <string name="ongoing_privacy_dialog_open_settings" msgid="6773015940472748876">"Izilungiselelo zobumfihlo"</string>
- <string name="ongoing_privacy_dialog_single_app_title" msgid="6019646962021696632">"Uhlelo lokusebenza olusebenzisa i-<xliff:g id="TYPES_LIST">%s</xliff:g> yakho"</string>
- <string name="ongoing_privacy_dialog_multiple_apps_title" msgid="8013356222977903365">"Izinhlelo zokusebenza ezisebenzisa i-<xliff:g id="TYPES_LIST">%s</xliff:g> yakho"</string>
<string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="2400503446627122483">" kanye "</string>
<string name="privacy_type_camera" msgid="1676604631892420333">"ikhamera"</string>
<string name="privacy_type_location" msgid="6435497989657286700">"indawo"</string>
<string name="privacy_type_microphone" msgid="4153045784928554506">"imakrofoni"</string>
- <plurals name="ongoing_privacy_dialog_overflow_text" formatted="false" msgid="3441296594927649172">
- <item quantity="one"><xliff:g id="NUM_APPS_1">%d</xliff:g> ezinye izinhlelo zokusebenza</item>
- <item quantity="other"><xliff:g id="NUM_APPS_1">%d</xliff:g> ezinye izinhlelo zokusebenza</item>
- </plurals>
<string name="sensor_privacy_mode" msgid="8982771253020769598">"Izinzwa zivaliwe"</string>
<string name="device_services" msgid="1191212554435440592">"Amasevisi edivayisi"</string>
<string name="music_controls_no_title" msgid="5236895307087002011">"Asikho isihloko"</string>
+ <string name="restart_button_description" msgid="2035077840254950187">"Thepha ukuze uqale kabusha lolu hlelo lokusebenza uphinde uye kusikrini esigcwele."</string>
<string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Vula i-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_settings_button_description" msgid="1940331766151865776">"VUla izilungiselelo zesaziso ze-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="bubbles_prompt" msgid="2684301469286150276">"Vmela amabhamuza kusuka kulolu hlelo lokusebenza?"</string>
- <string name="no_bubbles" msgid="7173621233904687258">"Vimba"</string>
+ <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Izilungiselelo zamabhamuza e-<xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="bubbles_prompt" msgid="8807968030159469710">"Vumela amabhamuza kusukela ku-<xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="no_bubbles" msgid="337101288173078247">"Yenqaba"</string>
<string name="yes_bubbles" msgid="668809525728633841">"Vumela"</string>
+ <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ngibuze ngesinye isikhathi"</string>
+ <string name="bubble_content_description_single" msgid="1184462974339387516">"I-<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> kusuka ku-<xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8666349184095622232">"I-<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> kusukela ku-<xliff:g id="APP_NAME">%2$s</xliff:g> nokungu-<xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> ngaphezulu"</string>
+ <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"Hambisa"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"Hambisa phezulu kwesokunxele"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"Hambisa phezulu ngakwesokudla"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"Hambisa inkinobho ngakwesokunxele"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"Hambisa inkinobho ngakwesokudla"</string>
</resources>
diff --git a/packages/SystemUI/res/values/attrs.xml b/packages/SystemUI/res/values/attrs.xml
index e0bcf2435948..d4bf9cd18510 100644
--- a/packages/SystemUI/res/values/attrs.xml
+++ b/packages/SystemUI/res/values/attrs.xml
@@ -38,6 +38,7 @@
<attr name="frameColor" format="color" />
<declare-styleable name="BatteryMeterView">
<attr name="frameColor" />
+ <attr name="textAppearance" format="reference"/>
</declare-styleable>
<declare-styleable name="Clock">
<attr name="amPmStyle" format="enum">
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index ce04638a51e5..a067cd202247 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -316,6 +316,7 @@
<item>com.android.systemui.SliceBroadcastRelayHandler</item>
<item>com.android.systemui.SizeCompatModeActivityController</item>
<item>com.android.systemui.statusbar.notification.InstantAppNotifier</item>
+ <item>com.android.systemui.theme.ThemeOverlayController</item>
</string-array>
<!-- SystemUI vender service, used in config_systemUIServiceComponents. -->
@@ -486,4 +487,7 @@
<integer name="ongoing_appops_dialog_max_apps">5</integer>
+ <!-- Launcher package name for overlaying icons. -->
+ <string name="launcher_overlayable_package" translatable="false">com.android.launcher3</string>
+
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 95a4da670417..6dfe701e26f5 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -413,7 +413,7 @@
<!-- The height of the qs customize header. Should be (28dp - qs_tile_margin_top_bottom). -->
<dimen name="qs_customize_header_min_height">40dp</dimen>
<dimen name="qs_tile_margin_top">18dp</dimen>
- <dimen name="qs_tile_background_size">40dp</dimen>
+ <dimen name="qs_tile_background_size">44dp</dimen>
<dimen name="qs_quick_tile_size">48dp</dimen>
<!-- Maximum width of quick quick settings panel. Defaults to MATCH_PARENT-->
<dimen name="qs_quick_layout_width">-1px</dimen>
@@ -424,7 +424,6 @@
<dimen name="qs_page_indicator_height">8dp</dimen>
<dimen name="qs_tile_icon_size">24dp</dimen>
<dimen name="qs_tile_text_size">12sp</dimen>
- <dimen name="qs_carrier_info_text_size">14sp</dimen>
<dimen name="qs_tile_divider_height">1dp</dimen>
<dimen name="qs_panel_padding">16dp</dimen>
<dimen name="qs_dual_tile_height">112dp</dimen>
@@ -432,7 +431,6 @@
<dimen name="qs_dual_tile_padding_horizontal">6dp</dimen>
<dimen name="qs_tile_padding_top">14dp</dimen>
<dimen name="qs_tile_padding_top_large_text">4dp</dimen>
- <dimen name="qs_tile_padding_below_icon">12dp</dimen>
<dimen name="qs_tile_padding_bottom">16dp</dimen>
<dimen name="qs_tile_spacing">4dp</dimen>
<dimen name="qs_panel_padding_bottom">0dp</dimen>
diff --git a/packages/SystemUI/res/values/internal.xml b/packages/SystemUI/res/values/internal.xml
index 930cfce65b61..c29a51f6178e 100644
--- a/packages/SystemUI/res/values/internal.xml
+++ b/packages/SystemUI/res/values/internal.xml
@@ -17,6 +17,7 @@
<resources>
<dimen name="status_bar_height">@*android:dimen/status_bar_height</dimen>
<dimen name="navigation_bar_height">@*android:dimen/navigation_bar_height</dimen>
+ <dimen name="navigation_bar_frame_height">@*android:dimen/navigation_bar_frame_height</dimen>
<dimen name="navigation_bar_height_car_mode">@*android:dimen/navigation_bar_height_car_mode</dimen>
</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index f47d4b5aac6d..e098bc5acd5c 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -424,6 +424,9 @@
<!-- Content description of the data connection type LTE+. [CHAR LIMIT=NONE] -->
<string name="data_connection_lte_plus">LTE+</string>
+ <!-- Content description of the data connection type 5Ge. [CHAR LIMIT=NONE] -->
+ <string name="data_connection_5ge" translate="false">5Ge</string>
+
<!-- Content description of the data connection type 5G. [CHAR LIMIT=NONE] -->
<string name="data_connection_5g" translate="false">5G</string>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 2ff481f7c8fd..eb68b0f0b630 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -222,13 +222,10 @@
<item name="android:textSize">@dimen/celltile_rat_type_size</item>
</style>
- <style name="TextAppearance.QS.CarrierInfo">
- <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
- <item name="android:textSize">@dimen/qs_carrier_info_text_size</item>
+ <style name="TextAppearance.QS.Status" parent="TextAppearance.QS.TileLabel.Secondary">
+ <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item>
</style>
- <style name="TextAppearance.QS.Status" parent="TextAppearance.QS.TileLabel.Secondary" />
-
<style name="TextAppearance.AppOpsDialog" />
<style name="TextAppearance.AppOpsDialog.Title">
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java
index 1d9105c35ac5..d2fe5cd9ef64 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/RecentsAnimationControllerCompat.java
@@ -77,9 +77,15 @@ public class RecentsAnimationControllerCompat {
}
}
- public void finish(boolean toHome) {
+ /**
+ * Finish the current recents animation.
+ * @param toHome Going to home or back to the previous app.
+ * @param sendUserLeaveHint determines whether userLeaveHint will be set true to the previous
+ * app.
+ */
+ public void finish(boolean toHome, boolean sendUserLeaveHint) {
try {
- mAnimationController.finish(toHome);
+ mAnimationController.finish(toHome, sendUserLeaveHint);
} catch (RemoteException e) {
Log.e(TAG, "Failed to finish recents animation", e);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
index b738b576ef2f..70366a839da5 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
@@ -138,6 +138,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
ClockManager clockManager) {
super(context, attrs);
mStatusBarStateController = statusBarStateController;
+ mStatusBarState = mStatusBarStateController.getState();
mSysuiColorExtractor = colorExtractor;
mClockManager = clockManager;
mTransition = new ClockBoundsTransition();
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java
index 64e56f955058..bc00b5cf9a45 100644
--- a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java
+++ b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java
@@ -20,8 +20,10 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.database.ContentObserver;
+import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
+import android.os.UserHandle;
import android.provider.Settings;
import android.util.ArrayMap;
import android.util.DisplayMetrics;
@@ -35,6 +37,7 @@ import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManager.DockEventListener;
import com.android.systemui.plugins.ClockPlugin;
import com.android.systemui.plugins.PluginListener;
+import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.util.InjectionInflationController;
@@ -61,6 +64,7 @@ public final class ClockManager {
private final ContentResolver mContentResolver;
private final SettingsWrapper mSettingsWrapper;
private final Handler mMainHandler = new Handler(Looper.getMainLooper());
+ private final CurrentUserTracker mCurrentUserTracker;
/**
* Observe settings changes to know when to switch the clock face.
@@ -68,9 +72,11 @@ public final class ClockManager {
private final ContentObserver mContentObserver =
new ContentObserver(mMainHandler) {
@Override
- public void onChange(boolean selfChange) {
- super.onChange(selfChange);
- reload();
+ public void onChange(boolean selfChange, Uri uri, int userId) {
+ super.onChange(selfChange, uri, userId);
+ if (userId == mCurrentUserTracker.getCurrentUserId()) {
+ reload();
+ }
}
};
@@ -123,6 +129,12 @@ public final class ClockManager {
mPluginManager = pluginManager;
mContentResolver = contentResolver;
mSettingsWrapper = settingsWrapper;
+ mCurrentUserTracker = new CurrentUserTracker(context) {
+ @Override
+ public void onUserSwitched(int newUserId) {
+ reload();
+ }
+ };
mPreviewClocks = new AvailableClocks();
Resources res = context.getResources();
@@ -203,10 +215,11 @@ public final class ClockManager {
mPluginManager.addPluginListener(mPreviewClocks, ClockPlugin.class, true);
mContentResolver.registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE),
- false, mContentObserver);
+ false, mContentObserver, UserHandle.USER_ALL);
mContentResolver.registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.DOCKED_CLOCK_FACE),
- false, mContentObserver);
+ false, mContentObserver, UserHandle.USER_ALL);
+ mCurrentUserTracker.startTracking();
if (mDockManager == null) {
mDockManager = SysUiServiceProvider.getComponent(mContext, DockManager.class);
}
@@ -218,6 +231,7 @@ public final class ClockManager {
private void unregister() {
mPluginManager.removePluginListener(mPreviewClocks);
mContentResolver.unregisterContentObserver(mContentObserver);
+ mCurrentUserTracker.stopTracking();
if (mDockManager != null) {
mDockManager.removeListener(mDockEventListener);
}
@@ -334,7 +348,8 @@ public final class ClockManager {
private ClockPlugin getClockPlugin() {
ClockPlugin plugin = null;
if (ClockManager.this.isDocked()) {
- final String name = mSettingsWrapper.getDockedClockFace();
+ final String name = mSettingsWrapper.getDockedClockFace(
+ mCurrentUserTracker.getCurrentUserId());
if (name != null) {
plugin = mClocks.get(name);
if (plugin != null) {
@@ -342,7 +357,8 @@ public final class ClockManager {
}
}
}
- final String name = mSettingsWrapper.getLockScreenCustomClockFace();
+ final String name = mSettingsWrapper.getLockScreenCustomClockFace(
+ mCurrentUserTracker.getCurrentUserId());
if (name != null) {
plugin = mClocks.get(name);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/SettingsWrapper.java b/packages/SystemUI/src/com/android/keyguard/clock/SettingsWrapper.java
index 58e11553af9d..e1c658be4c26 100644
--- a/packages/SystemUI/src/com/android/keyguard/clock/SettingsWrapper.java
+++ b/packages/SystemUI/src/com/android/keyguard/clock/SettingsWrapper.java
@@ -34,15 +34,19 @@ public class SettingsWrapper {
/**
* Gets the value stored in settings for the custom clock face.
+ *
+ * @param userId ID of the user.
*/
- public String getLockScreenCustomClockFace() {
- return Settings.Secure.getString(mContentResolver, CUSTOM_CLOCK_FACE);
+ public String getLockScreenCustomClockFace(int userId) {
+ return Settings.Secure.getStringForUser(mContentResolver, CUSTOM_CLOCK_FACE, userId);
}
/**
* Gets the value stored in settings for the clock face to use when docked.
+ *
+ * @param userId ID of the user.
*/
- public String getDockedClockFace() {
- return Settings.Secure.getString(mContentResolver, DOCKED_CLOCK_FACE);
+ public String getDockedClockFace(int userId) {
+ return Settings.Secure.getStringForUser(mContentResolver, DOCKED_CLOCK_FACE, userId);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
index 62b0542bd7fe..329b001a0a7c 100644
--- a/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
+++ b/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
@@ -47,6 +47,8 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.annotation.StyleRes;
+
import com.android.settingslib.Utils;
import com.android.settingslib.graph.ThemedBatteryDrawable;
import com.android.systemui.plugins.DarkIconDispatcher;
@@ -86,6 +88,7 @@ public class BatteryMeterView extends LinearLayout implements
private BatteryController mBatteryController;
private SettingObserver mSettingObserver;
+ private final @StyleRes int mPercentageStyleId;
private int mTextColor;
private int mLevel;
private int mShowPercentMode = MODE_DEFAULT;
@@ -132,6 +135,7 @@ public class BatteryMeterView extends LinearLayout implements
defStyle, 0);
final int frameColor = atts.getColor(R.styleable.BatteryMeterView_frameColor,
context.getColor(R.color.meter_background_color));
+ mPercentageStyleId = atts.getResourceId(R.styleable.BatteryMeterView_textAppearance, 0);
mDrawable = new ThemedBatteryDrawable(context, frameColor);
atts.recycle();
@@ -402,6 +406,9 @@ public class BatteryMeterView extends LinearLayout implements
if (!showing) {
mBatteryPercentView = loadPercentView();
if (mTextColor != 0) mBatteryPercentView.setTextColor(mTextColor);
+ if (mPercentageStyleId != 0) { // Only set if specified as attribute
+ mBatteryPercentView.setTextAppearance(mPercentageStyleId);
+ }
updatePercentText();
addView(mBatteryPercentView,
new ViewGroup.LayoutParams(
@@ -440,7 +447,6 @@ public class BatteryMeterView extends LinearLayout implements
scaledLayoutParams.setMargins(0, 0, 0, marginBottom);
mBatteryIconView.setLayoutParams(scaledLayoutParams);
- FontSizeUtils.updateFontSize(mBatteryPercentView, R.dimen.qs_time_expanded_size);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
index 4fe09a92a1de..665df777c1c1 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
@@ -26,16 +26,41 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
*/
class Bubble {
+ private final String mKey;
+ private final BubbleExpandedView.OnBubbleBlockedListener mListener;
+
+ private boolean mInflated;
+
public BubbleView iconView;
public BubbleExpandedView expandedView;
- public String key;
public NotificationEntry entry;
+ Bubble(NotificationEntry e, BubbleExpandedView.OnBubbleBlockedListener listener) {
+ entry = e;
+ mKey = e.key;
+ mListener = listener;
+ }
+
+ /** @deprecated use the other constructor to defer View creation. */
+ @Deprecated
Bubble(NotificationEntry e, LayoutInflater inflater, BubbleStackView stackView,
BubbleExpandedView.OnBubbleBlockedListener listener) {
- entry = e;
- key = entry.key;
+ this(e, listener);
+ inflate(inflater, stackView);
+ }
+
+ public String getKey() {
+ return mKey;
+ }
+
+ boolean isInflated() {
+ return mInflated;
+ }
+ void inflate(LayoutInflater inflater, BubbleStackView stackView) {
+ if (mInflated) {
+ return;
+ }
iconView = (BubbleView) inflater.inflate(
R.layout.bubble_view, stackView, false /* attachToRoot */);
iconView.setNotif(entry);
@@ -44,12 +69,14 @@ class Bubble {
R.layout.bubble_expanded_view, stackView, false /* attachToRoot */);
expandedView.setEntry(entry, stackView);
- expandedView.setOnBlockedListener(listener);
+ expandedView.setOnBlockedListener(mListener);
+ mInflated = true;
}
- public void setEntry(NotificationEntry entry) {
- key = entry.key;
- iconView.update(entry);
- expandedView.update(entry);
+ void setEntry(NotificationEntry entry) {
+ if (mInflated) {
+ iconView.update(entry);
+ expandedView.update(entry);
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index b1e22127cd4f..418d052e1858 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -216,9 +216,30 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
}
mBubbleData = data;
+ mBubbleData.setListener(mBubbleDataListener);
mSurfaceSynchronizer = synchronizer;
}
+ /**
+ * BubbleStackView is lazily created by this method the first time a Bubble is added. This
+ * method initializes the stack view and adds it to the StatusBar just above the scrim.
+ */
+ private void ensureStackViewCreated() {
+ if (mStackView == null) {
+ mStackView = new BubbleStackView(mContext, mBubbleData, mSurfaceSynchronizer);
+ ViewGroup sbv = mStatusBarWindowController.getStatusBarView();
+ // TODO(b/130237686): When you expand the shade on top of expanded bubble, there is no
+ // scrim between bubble and the shade
+ int bubblePosition = sbv.indexOfChild(sbv.findViewById(R.id.scrim_behind)) + 1;
+ sbv.addView(mStackView, bubblePosition,
+ new FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT));
+ if (mExpandListener != null) {
+ mStackView.setExpandListener(mExpandListener);
+ }
+ mStackView.setOnBlockedListener(this);
+ }
+ }
+
@Override
public void onUiModeChanged() {
if (mStackView != null) {
@@ -324,27 +345,15 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
/**
* Adds or updates a bubble associated with the provided notification entry.
*
- * @param notif the notification associated with this bubble.
+ * @param notif the notification associated with this bubble.
*/
void updateBubble(NotificationEntry notif) {
if (mStackView != null && mBubbleData.getBubble(notif.key) != null) {
// It's an update
mStackView.updateBubble(notif);
} else {
- if (mStackView == null) {
- mStackView = new BubbleStackView(mContext, mBubbleData, mSurfaceSynchronizer);
- ViewGroup sbv = mStatusBarWindowController.getStatusBarView();
- // XXX: Bug when you expand the shade on top of expanded bubble, there is no scrim
- // between bubble and the shade
- int bubblePosition = sbv.indexOfChild(sbv.findViewById(R.id.scrim_behind)) + 1;
- sbv.addView(mStackView, bubblePosition,
- new FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT));
- if (mExpandListener != null) {
- mStackView.setExpandListener(mExpandListener);
- }
- mStackView.setOnBlockedListener(this);
- }
// It's new
+ ensureStackViewCreated();
mStackView.addBubble(notif);
}
if (shouldAutoExpand(notif)) {
@@ -438,6 +447,47 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
}
};
+ private final BubbleData.Listener mBubbleDataListener = new BubbleData.Listener() {
+ @Override
+ public void onBubbleAdded(Bubble bubble) {
+
+ }
+
+ @Override
+ public void onBubbleRemoved(Bubble bubble, int reason) {
+
+ }
+
+ public void onBubbleUpdated(Bubble bubble) {
+
+ }
+
+ @Override
+ public void onOrderChanged(List<Bubble> bubbles) {
+
+ }
+
+ @Override
+ public void onSelectionChanged(Bubble selectedBubble) {
+
+ }
+
+ @Override
+ public void onExpandedChanged(boolean expanded) {
+
+ }
+
+ @Override
+ public void showFlyoutText(Bubble bubble, String text) {
+
+ }
+
+ @Override
+ public void apply() {
+
+ }
+ };
+
/**
* Lets any listeners know if bubble state has changed.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
index 36098352a7ee..fe3f9d192cd5 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
@@ -22,6 +22,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -32,7 +33,61 @@ import javax.inject.Singleton;
@Singleton
public class BubbleData {
+ /**
+ * This interface reports changes to the state and appearance of bubbles which should be applied
+ * as necessary to the UI.
+ * <p>
+ * Each operation is a report of a pending operation. Each should be considered in
+ * combination, when {@link #apply()} is called. For example, both: onExpansionChanged,
+ * and onOrderChanged
+ */
+ interface Listener {
+
+ /**
+ * A new Bubble has been added. A call to {@link #onOrderChanged(List)} will
+ * follow, including the new Bubble in position
+ */
+ void onBubbleAdded(Bubble bubble);
+
+ /**
+ * A Bubble has been removed. A call to {@link #onOrderChanged(List)} will
+ * follow.
+ */
+ void onBubbleRemoved(Bubble bubble, @BubbleController.DismissReason int reason);
+
+ /**
+ * An existing bubble has been updated.
+ *
+ * @param bubble the bubble which was updated
+ */
+ void onBubbleUpdated(Bubble bubble);
+
+ /**
+ * Indicates that one or more bubbles should change position. This may be result of insert,
+ * or removal of a Bubble, in addition to re-sorting existing Bubbles.
+ *
+ * @param bubbles an immutable list of the bubbles in the new order
+ */
+ void onOrderChanged(List<Bubble> bubbles);
+
+ /** Indicates the selected bubble changed. */
+ void onSelectionChanged(Bubble selectedBubble);
+
+ /**
+ * The UI should transition to the given state, incorporating any pending changes during
+ * the animation.
+ */
+ void onExpandedChanged(boolean expanded);
+
+ /** Flyout text should animate in, showing the given text. */
+ void showFlyoutText(Bubble bubble, String text);
+
+ /** Commit any pending operations (since last call of apply()) */
+ void apply();
+ }
+
private HashMap<String, Bubble> mBubbles = new HashMap<>();
+ private Listener mListener;
@VisibleForTesting
@Inject
@@ -51,7 +106,7 @@ public class BubbleData {
}
public void addBubble(Bubble b) {
- mBubbles.put(b.key, b);
+ mBubbles.put(b.getKey(), b);
}
@Nullable
@@ -69,4 +124,8 @@ public class BubbleData {
public void clear() {
mBubbles.clear();
}
+
+ public void setListener(Listener listener) {
+ mListener = listener;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java
index d1939d0fddb0..477e7d7ebf72 100644
--- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageProcessHelper.java
@@ -85,9 +85,7 @@ class ImageProcessHelper {
Bitmap bitmap = bitmaps[0];
if (bitmap != null) {
int[] histogram = processHistogram(bitmap);
- Float val = computePercentile85(bitmap, histogram);
- bitmaps[0] = null;
- return val;
+ return computePercentile85(bitmap, histogram);
}
Log.e(TAG, "Per85ComputeTask: Can't get bitmap");
return DEFAULT_PER85;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
index e2453128d4b0..3c59f69fdee6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
@@ -44,7 +44,6 @@ public class QSIconViewImpl extends QSIconView {
protected final View mIcon;
protected final int mIconSizePx;
- protected final int mTilePaddingBelowIconPx;
private boolean mAnimationEnabled = true;
private int mState = -1;
private int mTint;
@@ -54,7 +53,6 @@ public class QSIconViewImpl extends QSIconView {
final Resources res = context.getResources();
mIconSizePx = res.getDimensionPixelSize(R.dimen.qs_tile_icon_size);
- mTilePaddingBelowIconPx = res.getDimensionPixelSize(R.dimen.qs_tile_padding_below_icon);
mIcon = createIcon();
addView(mIcon);
@@ -73,7 +71,7 @@ public class QSIconViewImpl extends QSIconView {
final int w = MeasureSpec.getSize(widthMeasureSpec);
final int iconSpec = exactly(mIconSizePx);
mIcon.measure(MeasureSpec.makeMeasureSpec(w, getIconMeasureMode()), iconSpec);
- setMeasuredDimension(w, mIcon.getMeasuredHeight() + mTilePaddingBelowIconPx);
+ setMeasuredDimension(w, mIcon.getMeasuredHeight());
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
index bfcf0214dd05..a732a253f5a3 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
@@ -40,7 +40,6 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.FrameLayout;
import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
import android.widget.Switch;
import com.android.settingslib.Utils;
@@ -63,6 +62,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
private boolean mTileState;
private boolean mCollapsedView;
private boolean mClicked;
+ private boolean mShowRippleEffect = true;
private final ImageView mBg;
private final int mColorActive;
@@ -80,7 +80,6 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
// Default to Quick Tile padding, and QSTileView will specify its own padding.
int padding = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_padding);
mIconFrame = new FrameLayout(context);
- mIconFrame.setForegroundGravity(Gravity.CENTER);
int size = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size);
addView(mIconFrame, new LayoutParams(size, size));
mBg = new ImageView(getContext());
@@ -93,14 +92,14 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
int bgSize = context.getResources().getDimensionPixelSize(R.dimen.qs_tile_background_size);
d.setIntrinsicHeight(bgSize);
d.setIntrinsicWidth(bgSize);
- mBg.setScaleType(ScaleType.FIT_CENTER);
mBg.setImageDrawable(d);
- mIconFrame.addView(mBg, ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT);
+ FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(bgSize, bgSize, Gravity.CENTER);
+ mIconFrame.addView(mBg, lp);
+ mBg.setLayoutParams(lp);
mIcon = icon;
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
- ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- params.setMargins(0, padding, 0, padding);
+ ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,
+ Gravity.CENTER);
mIconFrame.addView(mIcon, params);
mIconFrame.setClipChildren(false);
mIconFrame.setClipToPadding(false);
@@ -210,6 +209,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
mCircleColor = circleColor;
}
+ mShowRippleEffect = state.showRippleEffect;
setClickable(state.state != Tile.STATE_UNAVAILABLE);
setLongClickable(state.handlesLongClick);
mIcon.setIcon(state, allowAnimations);
@@ -255,7 +255,7 @@ public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView {
@Override
public void setClickable(boolean clickable) {
super.setClickable(clickable);
- setBackground(clickable ? mRipple : null);
+ setBackground(clickable && mShowRippleEffect ? mRipple : null);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
index c664a2090c04..d62f10d312d7 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
@@ -16,6 +16,7 @@
package com.android.systemui.qs.tiles;
import android.content.Intent;
+import android.provider.Settings.Secure;
import android.service.quicksettings.Tile;
import android.widget.Switch;
@@ -23,6 +24,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.QSTile.BooleanState;
import com.android.systemui.qs.QSHost;
+import com.android.systemui.qs.SecureSetting;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -32,6 +34,7 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
BatteryController.BatteryStateChangeCallback {
private final BatteryController mBatteryController;
+ private final SecureSetting mSetting;
private int mLevel;
private boolean mPowerSave;
@@ -45,6 +48,12 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
super(host);
mBatteryController = batteryController;
mBatteryController.observe(getLifecycle(), this);
+ mSetting = new SecureSetting(mContext, mHandler, Secure.LOW_POWER_WARNING_ACKNOWLEDGED) {
+ @Override
+ protected void handleValueChanged(int value, boolean observedChange) {
+ handleRefreshState(null);
+ }
+ };
}
@Override
@@ -53,12 +62,19 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
}
@Override
+ protected void handleDestroy() {
+ super.handleDestroy();
+ mSetting.setListening(false);
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.QS_BATTERY_TILE;
}
@Override
public void handleSetListening(boolean listening) {
+ mSetting.setListening(listening);
}
@Override
@@ -88,6 +104,7 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
state.contentDescription = state.label;
state.value = mPowerSave;
state.expandedAccessibilityClassName = Switch.class.getName();
+ state.showRippleEffect = mSetting.getValue() == 0;
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
index 4d6693ff6613..7b6fb943f512 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
@@ -631,7 +631,9 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
public void notifyAssistantVisibilityChanged(float visibility) {
try {
- mOverviewProxy.onAssistantVisibilityChanged(visibility);
+ if (mOverviewProxy != null) {
+ mOverviewProxy.onAssistantVisibilityChanged(visibility);
+ }
} catch (RemoteException e) {
Log.e(TAG_OPS, "Failed to call onAssistantVisibilityChanged()", e);
}
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
index 34f3c606be62..33a2acfe9521 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
@@ -64,6 +64,7 @@ import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
+import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.TaskStackChangeListener;
import java.io.PrintWriter;
@@ -339,7 +340,7 @@ public class RecentsOnboarding {
}
public void onConnectedToLauncher() {
- if (!ONBOARDING_ENABLED) {
+ if (!ONBOARDING_ENABLED || QuickStepContract.isGesturalMode(mContext)) {
return;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index a87e50c50f51..3441591e03ff 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -83,7 +83,7 @@ public class KeyguardIndicationController implements StateListener {
private final int mSlowThreshold;
private final int mFastThreshold;
- private LockIcon mLockIcon;
+ private final LockIcon mLockIcon;
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private String mRestingIndication;
@@ -539,7 +539,6 @@ public class KeyguardIndicationController implements StateListener {
protected class BaseKeyguardCallback extends KeyguardUpdateMonitorCallback {
public static final int HIDE_DELAY_MS = 5000;
- private int mLastSuccessiveErrorMessage = -1;
@Override
public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) {
@@ -577,20 +576,14 @@ public class KeyguardIndicationController implements StateListener {
if (!updateMonitor.isUnlockingWithBiometricAllowed()) {
return;
}
+ animatePadlockError();
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
mStatusBarKeyguardViewManager.showBouncerMessage(helpString,
mInitialTextColorState);
} else if (updateMonitor.isScreenOn()) {
- mLockIcon.setTransientBiometricsError(true);
showTransientIndication(helpString);
hideTransientIndicationDelayed(TRANSIENT_BIOMETRIC_ERROR_TIMEOUT);
- mHandler.removeMessages(MSG_CLEAR_BIOMETRIC_MSG);
- mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_CLEAR_BIOMETRIC_MSG),
- TRANSIENT_BIOMETRIC_ERROR_TIMEOUT);
}
- // Help messages indicate that there was actually a try since the last error, so those
- // are not two successive error messages anymore.
- mLastSuccessiveErrorMessage = -1;
}
@Override
@@ -600,15 +593,9 @@ public class KeyguardIndicationController implements StateListener {
if (shouldSuppressBiometricError(msgId, biometricSourceType, updateMonitor)) {
return;
}
+ animatePadlockError();
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
- // When swiping up right after receiving a biometric error, the bouncer calls
- // authenticate leading to the same message being shown again on the bouncer.
- // We want to avoid this, as it may confuse the user when the message is too
- // generic.
- if (mLastSuccessiveErrorMessage != msgId) {
- mStatusBarKeyguardViewManager.showBouncerMessage(errString,
- mInitialTextColorState);
- }
+ mStatusBarKeyguardViewManager.showBouncerMessage(errString, mInitialTextColorState);
} else if (updateMonitor.isScreenOn()) {
showTransientIndication(errString);
// We want to keep this message around in case the screen was off
@@ -616,7 +603,13 @@ public class KeyguardIndicationController implements StateListener {
} else {
mMessageToShowOnScreenOn = errString;
}
- mLastSuccessiveErrorMessage = msgId;
+ }
+
+ private void animatePadlockError() {
+ mLockIcon.setTransientBiometricsError(true);
+ mHandler.removeMessages(MSG_CLEAR_BIOMETRIC_MSG);
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_CLEAR_BIOMETRIC_MSG),
+ TRANSIENT_BIOMETRIC_ERROR_TIMEOUT);
}
private boolean shouldSuppressBiometricError(int msgId,
@@ -670,21 +663,19 @@ public class KeyguardIndicationController implements StateListener {
@Override
public void onBiometricAuthenticated(int userId, BiometricSourceType biometricSourceType) {
super.onBiometricAuthenticated(userId, biometricSourceType);
- mLastSuccessiveErrorMessage = -1;
mHandler.sendEmptyMessage(MSG_HIDE_TRANSIENT);
}
@Override
- public void onBiometricAuthFailed(BiometricSourceType biometricSourceType) {
- super.onBiometricAuthFailed(biometricSourceType);
- mLastSuccessiveErrorMessage = -1;
- }
-
- @Override
public void onUserUnlocked() {
if (mVisible) {
updateIndication(false);
}
}
+
+ @Override
+ public void onKeyguardBouncerChanged(boolean bouncer) {
+ mLockIcon.setBouncerVisible(bouncer);
+ }
};
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
index 351627980c08..23e2d277034d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
@@ -197,7 +197,7 @@ public class StatusBarWifiView extends FrameLayout implements DarkReceiver,
private boolean updateState(WifiIconState state) {
setContentDescription(state.contentDescription);
if (mState.resId != state.resId && state.resId >= 0) {
- mWifiIcon.setImageDrawable(mContext.getDrawable(mState.resId));
+ mWifiIcon.setImageDrawable(mContext.getDrawable(state.resId));
}
mIn.setVisibility(state.activityIn ? View.VISIBLE : View.GONE);
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 d11eab7bb895..562e535eb42a 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
@@ -401,7 +401,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
@Override
public void getOutline(View view, Outline outline) {
if (mAmbientState.isDarkAtAll() || !mShowDarkShelf) {
- outline.setRoundRect(mBackgroundAnimationRect, mCornerRadius);
+ float xProgress = mDarkXInterpolator.getInterpolation(
+ (1 - mLinearDarkAmount) * mBackgroundXFactor);
+ outline.setRoundRect(mBackgroundAnimationRect,
+ MathUtils.lerp(mCornerRadius / 2.0f, mCornerRadius,
+ xProgress));
} else {
ViewOutlineProvider.BACKGROUND.getOutline(view, outline);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
index 212666f24b36..79bf6b3e49f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
@@ -17,6 +17,7 @@ package com.android.systemui.statusbar.phone;
import android.content.Context;
import android.content.pm.ParceledListSlice;
+import android.content.res.Resources;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.PointF;
@@ -140,6 +141,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
private WindowManager.LayoutParams mEdgePanelLp;
public EdgeBackGestureHandler(Context context, OverviewProxyService overviewProxyService) {
+ final Resources res = context.getResources();
mContext = context;
mDisplayId = context.getDisplayId();
mMainExecutor = context.getMainExecutor();
@@ -148,10 +150,9 @@ public class EdgeBackGestureHandler implements DisplayListener {
mEdgeWidth = QuickStepContract.getEdgeSensitivityWidth(context);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
- mSwipeThreshold = context.getResources()
- .getDimension(R.dimen.navigation_edge_action_drag_threshold);
+ mSwipeThreshold = res.getDimension(R.dimen.navigation_edge_action_drag_threshold);
- mNavBarHeight = context.getResources().getDimensionPixelSize(R.dimen.navigation_bar_height);
+ mNavBarHeight = res.getDimensionPixelSize(R.dimen.navigation_bar_frame_height);
}
/**
@@ -204,6 +205,7 @@ public class EdgeBackGestureHandler implements DisplayListener {
if (!mIsEnabled) {
WindowManagerWrapper.getInstance().removePinnedStackListener(mImeChangedListener);
+ mContext.getSystemService(DisplayManager.class).unregisterDisplayListener(this);
try {
WindowManagerGlobal.getWindowManagerService()
@@ -215,6 +217,8 @@ public class EdgeBackGestureHandler implements DisplayListener {
} else {
updateDisplaySize();
+ mContext.getSystemService(DisplayManager.class).registerDisplayListener(this,
+ mContext.getMainThreadHandler());
try {
WindowManagerWrapper.getInstance().addPinnedStackListener(mImeChangedListener);
@@ -344,7 +348,8 @@ public class EdgeBackGestureHandler implements DisplayListener {
private void updateDisplaySize() {
mContext.getSystemService(DisplayManager.class)
- .getDisplay(mDisplayId).getRealSize(mDisplaySize);
+ .getDisplay(mDisplayId)
+ .getRealSize(mDisplaySize);
}
private void sendEvent(int action, int code) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
index 6ebd6b3f04cd..3cc4a7bfa1eb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
@@ -57,8 +57,10 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
private int mDensity;
private boolean mPulsing;
private boolean mDozing;
+ private boolean mBouncerVisible;
private boolean mLastDozing;
private boolean mLastPulsing;
+ private boolean mLastBouncerVisible;
private final Runnable mDrawOffTimeout = () -> update(true /* forceUpdate */);
private float mDarkAmount;
@@ -109,9 +111,9 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
int state = getState();
mIsFaceUnlockState = state == STATE_SCANNING_FACE;
if (state != mLastState || mLastDozing != mDozing || mLastPulsing != mPulsing
- || mLastScreenOn != mScreenOn || force) {
+ || mLastScreenOn != mScreenOn || mLastBouncerVisible != mBouncerVisible || force) {
int iconAnimRes = getAnimationResForTransition(mLastState, state, mLastPulsing,
- mPulsing, mLastDozing, mDozing);
+ mPulsing, mLastDozing, mDozing, mBouncerVisible);
boolean isAnim = iconAnimRes != -1;
Drawable icon;
@@ -159,6 +161,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
mLastScreenOn = mScreenOn;
mLastDozing = mDozing;
mLastPulsing = mPulsing;
+ mLastBouncerVisible = mBouncerVisible;
}
setVisibility(mDozing && !mPulsing ? GONE : VISIBLE);
@@ -231,8 +234,8 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
}
private static int getAnimationResForTransition(int oldState, int newState,
- boolean wasPulsing, boolean pulsing,
- boolean wasDozing, boolean dozing) {
+ boolean wasPulsing, boolean pulsing, boolean wasDozing, boolean dozing,
+ boolean bouncerVisible) {
// Never animate when screen is off
if (dozing && !pulsing) {
@@ -249,7 +252,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
return com.android.internal.R.anim.lock_unlock;
} else if (justLocked) {
return com.android.internal.R.anim.lock_lock;
- } else if (newState == STATE_SCANNING_FACE) {
+ } else if (newState == STATE_SCANNING_FACE && bouncerVisible) {
return com.android.internal.R.anim.lock_scanning;
} else if (!wasPulsing && pulsing && newState != STATE_LOCK_OPEN) {
return com.android.internal.R.anim.lock_in;
@@ -298,4 +301,15 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
int color = ColorUtils.blendARGB(Color.TRANSPARENT, Color.WHITE, mDarkAmount);
drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
+
+ /**
+ * If bouncer is visible or not.
+ */
+ public void setBouncerVisible(boolean bouncerVisible) {
+ if (mBouncerVisible == bouncerVisible) {
+ return;
+ }
+ mBouncerVisible = bouncerVisible;
+ update();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
index 1d87a8b439e8..443cc4397bd3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/MultiUserSwitch.java
@@ -98,8 +98,10 @@ public class MultiUserSwitch extends FrameLayout implements View.OnClickListener
// Short-circuiting from UserManager. Needs to be extracted because of SystemUI boolean flag
// qs_show_user_switcher_for_single_user
+ // The default in UserManager is to show the switcher. We want to not show it unless the
+ // user explicitly requests it in Settings
final boolean userSwitcherEnabled = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.USER_SWITCHER_ENABLED, 1) != 0;
+ Settings.Global.USER_SWITCHER_ENABLED, 0) != 0;
if (!UserManager.supportsMultipleUsers()
|| mUserManager.hasUserRestriction(UserManager.DISALLOW_USER_SWITCH)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index e2a63cc00d9e..835db6f532db 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -34,7 +34,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.graphics.Canvas;
import android.graphics.Point;
@@ -48,8 +47,6 @@ import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
import android.view.Display;
-import android.view.IPinnedStackController;
-import android.view.IPinnedStackListener;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.View;
@@ -237,45 +234,6 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
}
};
- private final IPinnedStackListener.Stub mImeChangedListener = new IPinnedStackListener.Stub() {
- @Override
- public void onListenerRegistered(IPinnedStackController controller) {
- }
-
- @Override
- public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) {
- post(() -> {
- // TODO remove this and do below when mNavigationIconHints changes
- if (imeVisible) {
- getBackButton().setVisibility(VISIBLE);
- reloadNavIcons();
- } else {
- getImeSwitchButton().setVisibility(GONE);
- }
- mImeVisible = imeVisible;
- updateWindowTouchable();
- });
- }
-
- @Override
- public void onShelfVisibilityChanged(boolean shelfVisible, int shelfHeight) {
- }
-
- @Override
- public void onMinimizedStateChanged(boolean isMinimized) {
- }
-
- @Override
- public void onMovementBoundsChanged(Rect insetBounds, Rect normalBounds,
- Rect animatingBounds, boolean fromImeAdjustment, boolean fromShelfAdjustment,
- int displayRotation) {
- }
-
- @Override
- public void onActionsChanged(ParceledListSlice actions) {
- }
- };
-
private BroadcastReceiver mOverlaysChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -507,9 +465,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
final boolean useAltBack =
(mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0;
final boolean isRtl = mConfiguration.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
- float degrees = useAltBack
- ? (isRtl ? 270 : -90)
- : (isRtl ? 180 : 0);
+ float degrees = useAltBack ? (isRtl ? 90 : -90) : 0;
if (drawable.getRotation() == degrees) {
return;
}
@@ -559,10 +515,13 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
public void setNavigationIconHints(int hints) {
if (hints == mNavigationIconHints) return;
- final boolean backAlt = (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0;
- if ((mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0 && !backAlt) {
- mTransitionListener.onBackAltCleared();
+ final boolean newBackAlt = (hints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0;
+ final boolean oldBackAlt =
+ (mNavigationIconHints & StatusBarManager.NAVIGATION_HINT_BACK_ALT) != 0;
+ if (newBackAlt != oldBackAlt) {
+ onImeVisibilityChanged(newBackAlt);
}
+
if (DEBUG) {
android.widget.Toast.makeText(getContext(),
"Navigation icon hints = " + hints,
@@ -572,6 +531,14 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
updateNavButtonIcons();
}
+ private void onImeVisibilityChanged(boolean visible) {
+ if (!visible) {
+ mTransitionListener.onBackAltCleared();
+ }
+ mImeVisible = visible;
+ updateWindowTouchable();
+ }
+
public void setDisabledFlags(int disabledFlags) {
if (mDisabledFlags == disabledFlags) return;
@@ -1114,14 +1081,6 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
filter.addDataScheme("package");
getContext().registerReceiver(mOverlaysChangedReceiver, filter);
mEdgeBackGestureHandler.onNavBarAttached();
-
- if (QuickStepContract.isGesturalMode(getContext())) {
- try {
- WindowManagerWrapper.getInstance().addPinnedStackListener(mImeChangedListener);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to register pinned stack listener", e);
- }
- }
updateWindowTouchable();
}
@@ -1139,8 +1098,6 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav
getContext().unregisterReceiver(mOverlaysChangedReceiver);
mEdgeBackGestureHandler.onNavBarDetached();
-
- WindowManagerWrapper.getInstance().removePinnedStackListener(mImeChangedListener);
}
private void setUpSwipeUpOnboarding(boolean connectedToOverviewProxy) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java
index 03c89c60360f..dd0c3443f2ab 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonDrawable.java
@@ -37,6 +37,7 @@ import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.Drawable;
import android.util.FloatProperty;
import android.view.ContextThemeWrapper;
+import android.view.View;
import com.android.settingslib.Utils;
import com.android.systemui.R;
@@ -79,9 +80,10 @@ public class KeyButtonDrawable extends Drawable {
private final ShadowDrawableState mState;
private AnimatedVectorDrawable mAnimatedDrawable;
- public KeyButtonDrawable(Drawable d, @ColorInt int lightColor, @ColorInt int darkColor) {
+ public KeyButtonDrawable(Drawable d, @ColorInt int lightColor, @ColorInt int darkColor,
+ boolean horizontalFlip) {
this(d, new ShadowDrawableState(lightColor, darkColor,
- d instanceof AnimatedVectorDrawable));
+ d instanceof AnimatedVectorDrawable, horizontalFlip));
}
private KeyButtonDrawable(Drawable d, ShadowDrawableState state) {
@@ -282,7 +284,12 @@ public class KeyButtonDrawable extends Drawable {
// Call mutate, so that the pixel allocation by the underlying vector drawable is cleared.
final Drawable d = mState.mChildState.newDrawable().mutate();
setDrawableBounds(d);
+ canvas.save();
+ if (mState.mHorizontalFlip) {
+ canvas.scale(-1f, 1f, width * 0.5f, height * 0.5f);
+ }
d.draw(canvas);
+ canvas.restore();
if (mState.mIsHardwareBitmap) {
bitmap = bitmap.copy(Bitmap.Config.HARDWARE, false);
@@ -305,7 +312,12 @@ public class KeyButtonDrawable extends Drawable {
// Call mutate, so that the pixel allocation by the underlying vector drawable is cleared.
final Drawable d = mState.mChildState.newDrawable().mutate();
setDrawableBounds(d);
+ canvas.save();
+ if (mState.mHorizontalFlip) {
+ canvas.scale(-1f, 1f, width * 0.5f, height * 0.5f);
+ }
d.draw(canvas);
+ canvas.restore();
// Draws the shadow from original drawable
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG);
@@ -357,6 +369,7 @@ public class KeyButtonDrawable extends Drawable {
int mShadowColor;
float mDarkIntensity;
int mAlpha;
+ boolean mHorizontalFlip;
boolean mIsHardwareBitmap;
Bitmap mLastDrawnIcon;
@@ -368,11 +381,12 @@ public class KeyButtonDrawable extends Drawable {
final boolean mSupportsAnimation;
public ShadowDrawableState(@ColorInt int lightColor, @ColorInt int darkColor,
- boolean animated) {
+ boolean animated, boolean horizontalFlip) {
mLightColor = lightColor;
mDarkColor = darkColor;
mSupportsAnimation = animated;
mAlpha = 255;
+ mHorizontalFlip = horizontalFlip;
}
@Override
@@ -400,7 +414,7 @@ public class KeyButtonDrawable extends Drawable {
* @return KeyButtonDrawable
*/
public static KeyButtonDrawable create(@NonNull Context ctx, @DrawableRes int icon,
- boolean hasShadow) {
+ boolean hasShadow) {
final int dualToneDarkTheme = Utils.getThemeAttr(ctx, R.attr.darkIconTheme);
final int dualToneLightTheme = Utils.getThemeAttr(ctx, R.attr.lightIconTheme);
Context lightContext = new ContextThemeWrapper(ctx, dualToneLightTheme);
@@ -409,7 +423,7 @@ public class KeyButtonDrawable extends Drawable {
}
public static KeyButtonDrawable create(Context lightContext, Context darkContext,
- @DrawableRes int iconResId, boolean hasShadow) {
+ @DrawableRes int iconResId, boolean hasShadow) {
return create(lightContext,
Utils.getColorAttrDefaultColor(lightContext, R.attr.singleToneColor),
Utils.getColorAttrDefaultColor(darkContext, R.attr.singleToneColor),
@@ -418,10 +432,12 @@ public class KeyButtonDrawable extends Drawable {
public static KeyButtonDrawable create(Context context, @ColorInt int lightColor,
@ColorInt int darkColor, @DrawableRes int iconResId, boolean hasShadow) {
- final KeyButtonDrawable drawable = new KeyButtonDrawable(context.getDrawable(iconResId),
- lightColor, darkColor);
+ final Resources res = context.getResources();
+ boolean isRtl = res.getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
+ Drawable d = context.getDrawable(iconResId);
+ final KeyButtonDrawable drawable = new KeyButtonDrawable(d, lightColor, darkColor,
+ isRtl && d.isAutoMirrored());
if (hasShadow) {
- final Resources res = context.getResources();
int offsetX = res.getDimensionPixelSize(R.dimen.nav_key_button_shadow_offset_x);
int offsetY = res.getDimensionPixelSize(R.dimen.nav_key_button_shadow_offset_y);
int radius = res.getDimensionPixelSize(R.dimen.nav_key_button_shadow_radius);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index c5996a1e1b00..8f135c80a1d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -47,6 +47,8 @@ import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionD
import java.io.PrintWriter;
import java.util.BitSet;
import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class MobileSignalController extends SignalController<
@@ -73,6 +75,9 @@ public class MobileSignalController extends SignalController<
private SignalStrength mSignalStrength;
private MobileIconGroup mDefaultIcons;
private Config mConfig;
+ private boolean mInflateSignalStrengths = false;
+ // Some specific carriers have 5GE network which is special LTE CA network.
+ private static final int NETWORK_TYPE_LTE_CA_5GE = TelephonyManager.MAX_NETWORK_TYPE + 1;
// TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't
// need listener lists anymore.
@@ -114,6 +119,7 @@ public class MobileSignalController extends SignalController<
public void setConfiguration(Config config) {
mConfig = config;
+ updateInflateSignalStrength();
mapIconSets();
updateTelephony();
}
@@ -236,11 +242,19 @@ public class MobileSignalController extends SignalController<
TelephonyIcons.LTE_PLUS);
}
}
+ mNetworkToIconLookup.put(NETWORK_TYPE_LTE_CA_5GE,
+ TelephonyIcons.LTE_CA_5G_E);
mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC);
}
+ private void updateInflateSignalStrength() {
+ mInflateSignalStrengths = SubscriptionManager.getResourcesForSubId(mContext,
+ mSubscriptionInfo.getSubscriptionId())
+ .getBoolean(R.bool.config_inflateSignalStrength);
+ }
+
private int getNumLevels() {
- if (mConfig.inflateSignalStrengths) {
+ if (mInflateSignalStrengths) {
return SignalStrength.NUM_SIGNAL_STRENGTH_BINS + 1;
}
return SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
@@ -252,7 +266,7 @@ public class MobileSignalController extends SignalController<
return SignalDrawable.getCarrierChangeState(getNumLevels());
} else if (mCurrentState.connected) {
int level = mCurrentState.level;
- if (mConfig.inflateSignalStrengths) {
+ if (mInflateSignalStrengths) {
level++;
}
boolean dataDisabled = mCurrentState.userSetup
@@ -381,6 +395,26 @@ public class MobileSignalController extends SignalController<
}
}
+ private boolean isCarrierSpecificDataIcon() {
+ if (mConfig.patternOfCarrierSpecificDataIcon == null
+ || mConfig.patternOfCarrierSpecificDataIcon.length() == 0) {
+ return false;
+ }
+
+ Pattern stringPattern = Pattern.compile(mConfig.patternOfCarrierSpecificDataIcon);
+ String[] operatorNames = new String[]{mServiceState.getOperatorAlphaLongRaw(),
+ mServiceState.getOperatorAlphaShortRaw()};
+ for (String opName : operatorNames) {
+ if (!TextUtils.isEmpty(opName)) {
+ Matcher matcher = stringPattern.matcher(opName);
+ if (matcher.find()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
/**
* Updates the network's name based on incoming spn and plmn.
*/
@@ -535,6 +569,7 @@ public class MobileSignalController extends SignalController<
pw.println(" mSignalStrength=" + mSignalStrength + ",");
pw.println(" mDataState=" + mDataState + ",");
pw.println(" mDataNetType=" + mDataNetType + ",");
+ pw.println(" mInflateSignalStrengths=" + mInflateSignalStrengths + ",");
}
class MobilePhoneStateListener extends PhoneStateListener {
@@ -559,12 +594,8 @@ public class MobileSignalController extends SignalController<
+ " dataState=" + state.getDataRegState());
}
mServiceState = state;
- if (state != null) {
- mDataNetType = state.getDataNetworkType();
- if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null &&
- mServiceState.isUsingCarrierAggregation()) {
- mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA;
- }
+ if (mServiceState != null) {
+ updateDataNetType(mServiceState.getDataNetworkType());
}
updateTelephony();
}
@@ -576,12 +607,19 @@ public class MobileSignalController extends SignalController<
+ " type=" + networkType);
}
mDataState = state;
+ updateDataNetType(networkType);
+ updateTelephony();
+ }
+
+ private void updateDataNetType(int networkType) {
mDataNetType = networkType;
- if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null &&
- mServiceState.isUsingCarrierAggregation()) {
- mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA;
+ if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE) {
+ if (isCarrierSpecificDataIcon()) {
+ mDataNetType = NETWORK_TYPE_LTE_CA_5GE;
+ } else if (mServiceState != null && mServiceState.isUsingCarrierAggregation()) {
+ mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA;
+ }
}
- updateTelephony();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index d01430a97783..faf63c838259 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -55,6 +55,7 @@ import android.util.Log;
import android.util.MathUtils;
import android.util.SparseArray;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
@@ -108,16 +109,10 @@ public class NetworkControllerImpl extends BroadcastReceiver
private final SubscriptionDefaults mSubDefaults;
private final DataSaverController mDataSaverController;
private final CurrentUserTracker mUserTracker;
+ private final Object mLock = new Object();
private Config mConfig;
- private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
- @Override
- public void onActiveDataSubscriptionIdChanged(int subId) {
- mActiveMobileDataSubscription = subId;
- doUpdateMobileControllers();
- }
- };
-
+ private PhoneStateListener mPhoneStateListener;
private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
// Subcontrollers.
@@ -279,6 +274,14 @@ public class NetworkControllerImpl extends BroadcastReceiver
// TODO: Move off of the deprecated CONNECTIVITY_ACTION broadcast and rely on callbacks
// exclusively for status bar icons.
mConnectivityManager.registerDefaultNetworkCallback(callback, mReceiverHandler);
+ // Register the listener on our bg looper
+ mPhoneStateListener = new PhoneStateListener(bgLooper) {
+ @Override
+ public void onActiveDataSubscriptionIdChanged(int subId) {
+ mActiveMobileDataSubscription = subId;
+ doUpdateMobileControllers();
+ }
+ };
}
public DataSaverController getDataSaverController() {
@@ -600,7 +603,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
updateNoSims();
return;
}
- setCurrentSubscriptions(subscriptions);
+ synchronized (mLock) {
+ setCurrentSubscriptionsLocked(subscriptions);
+ }
updateNoSims();
recalculateEmergency();
}
@@ -628,8 +633,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
return false;
}
+ @GuardedBy("mLock")
@VisibleForTesting
- void setCurrentSubscriptions(List<SubscriptionInfo> subscriptions) {
+ public void setCurrentSubscriptionsLocked(List<SubscriptionInfo> subscriptions) {
Collections.sort(subscriptions, new Comparator<SubscriptionInfo>() {
@Override
public int compare(SubscriptionInfo lhs, SubscriptionInfo rhs) {
@@ -1102,6 +1108,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
boolean hspaDataDistinguishable;
boolean inflateSignalStrengths = false;
boolean alwaysShowDataRatIcon = false;
+ public String patternOfCarrierSpecificDataIcon = "";
/**
* Mapping from NR 5G status string to an integer. The NR 5G status string should match
@@ -1140,6 +1147,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL);
config.hideLtePlus = b.getBoolean(
CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL);
+ config.patternOfCarrierSpecificDataIcon = b.getString(
+ CarrierConfigManager.KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING);
String nr5GIconConfiguration =
b.getString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING);
if (!TextUtils.isEmpty(nr5GIconConfiguration)) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index e151ca3e23f3..c22ff8ba594b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -35,6 +35,7 @@ class TelephonyIcons {
static final int ICON_3G = R.drawable.ic_3g_mobiledata;
static final int ICON_4G = R.drawable.ic_4g_mobiledata;
static final int ICON_4G_PLUS = R.drawable.ic_4g_plus_mobiledata;
+ static final int ICON_5G_E = R.drawable.ic_5g_e_mobiledata;
static final int ICON_1X = R.drawable.ic_1x_mobiledata;
static final int ICON_5G = R.drawable.ic_5g_mobiledata;
static final int ICON_5G_PLUS = R.drawable.ic_5g_plus_mobiledata;
@@ -204,6 +205,19 @@ class TelephonyIcons {
TelephonyIcons.ICON_LTE_PLUS,
true);
+ static final MobileIconGroup LTE_CA_5G_E = new MobileIconGroup(
+ "5Ge",
+ null,
+ null,
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH,
+ 0, 0,
+ 0,
+ 0,
+ AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
+ R.string.data_connection_5ge,
+ TelephonyIcons.ICON_5G_E,
+ true);
+
static final MobileIconGroup NR_5G = new MobileIconGroup(
"5G",
null,
@@ -276,6 +290,7 @@ class TelephonyIcons {
ICON_NAME_TO_ICON.put("h+", H_PLUS);
ICON_NAME_TO_ICON.put("4g", FOUR_G);
ICON_NAME_TO_ICON.put("4g+", FOUR_G_PLUS);
+ ICON_NAME_TO_ICON.put("5ge", LTE_CA_5G_E);
ICON_NAME_TO_ICON.put("lte", LTE);
ICON_NAME_TO_ICON.put("lte+", LTE_PLUS);
ICON_NAME_TO_ICON.put("5g", NR_5G);
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
new file mode 100644
index 000000000000..f318f8f94e50
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.theme;
+
+import android.app.ActivityManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.om.OverlayManager;
+import android.content.pm.UserInfo;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import com.android.systemui.Dependency;
+import com.android.systemui.R;
+import com.android.systemui.SystemUI;
+
+import com.google.android.collect.Sets;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Controls the application of theme overlays across the system for all users.
+ * This service is responsible for:
+ * - Observing changes to Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES and applying the
+ * corresponding overlays across the system
+ * - Observing user switches, applying the overlays for the current user to user 0 (for systemui)
+ * - Observing work profile changes and applying overlays from the primary user to their
+ * associated work profiles
+ */
+public class ThemeOverlayController extends SystemUI {
+ private static final String TAG = "ThemeOverlayController";
+ private static final boolean DEBUG = false;
+
+ private ThemeOverlayManager mThemeManager;
+ private UserManager mUserManager;
+
+ @Override
+ public void start() {
+ if (DEBUG) Log.d(TAG, "Start");
+ mUserManager = mContext.getSystemService(UserManager.class);
+ mThemeManager = new ThemeOverlayManager(
+ mContext.getSystemService(OverlayManager.class),
+ mContext.getString(R.string.launcher_overlayable_package));
+ final Handler bgHandler = Dependency.get(Dependency.BG_HANDLER);
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_USER_SWITCHED);
+ filter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
+ mContext.registerReceiverAsUser(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (DEBUG) Log.d(TAG, "Updating overlays for user switch / profile added.");
+ updateThemeOverlays();
+ }
+ }, UserHandle.ALL, filter, null, bgHandler);
+ mContext.getContentResolver().registerContentObserver(
+ Settings.Secure.getUriFor(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES),
+ false,
+ new ContentObserver(bgHandler) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri, int userId) {
+ if (DEBUG) Log.d(TAG, "Overlay changed for user: " + userId);
+ if (ActivityManager.getCurrentUser() == userId) {
+ updateThemeOverlays();
+ }
+ }
+ },
+ UserHandle.USER_ALL);
+ }
+
+ private void updateThemeOverlays() {
+ final int currentUser = ActivityManager.getCurrentUser();
+ final String overlayPackageJson = Settings.Secure.getStringForUser(
+ mContext.getContentResolver(), Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
+ currentUser);
+ if (DEBUG) Log.d(TAG, "updateThemeOverlays: " + overlayPackageJson);
+ final Map<String, String> categoryToPackage = new ArrayMap<>();
+ if (!TextUtils.isEmpty(overlayPackageJson)) {
+ try {
+ JSONObject object = new JSONObject(overlayPackageJson);
+ for (String category : ThemeOverlayManager.THEME_CATEGORIES) {
+ if (object.has(category)) {
+ categoryToPackage.put(category, object.getString(category));
+ }
+ }
+ } catch (JSONException e) {
+ Log.i(TAG, "Failed to parse THEME_CUSTOMIZATION_OVERLAY_PACKAGES.", e);
+ }
+ }
+ Set<UserHandle> userHandles = Sets.newHashSet(UserHandle.of(currentUser));
+ for (UserInfo userInfo : mUserManager.getEnabledProfiles(currentUser)) {
+ if (userInfo.isManagedProfile()) {
+ userHandles.add(userInfo.getUserHandle());
+ }
+ }
+ mThemeManager.applyCurrentUserOverlays(categoryToPackage, userHandles);
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayManager.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayManager.java
new file mode 100644
index 000000000000..1a9fd5315c32
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayManager.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.theme;
+
+import android.content.om.OverlayInfo;
+import android.content.om.OverlayManager;
+import android.os.UserHandle;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import androidx.annotation.VisibleForTesting;
+
+import com.google.android.collect.Sets;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+class ThemeOverlayManager {
+ private static final String TAG = "ThemeOverlayManager";
+ private static final boolean DEBUG = false;
+
+ @VisibleForTesting
+ static final String ANDROID_PACKAGE = "android";
+ @VisibleForTesting
+ static final String SETTINGS_PACKAGE = "com.android.settings";
+ @VisibleForTesting
+ static final String SYSUI_PACKAGE = "com.android.systemui";
+
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_COLOR = "android.theme.customization.accent_color";
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_FONT = "android.theme.customization.font";
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_SHAPE =
+ "android.theme.customization.adaptive_icon_shape";
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_ICON_ANDROID =
+ "android.theme.customization.icon_pack.android";
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_ICON_SYSUI =
+ "android.theme.customization.icon_pack.systemui";
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_ICON_SETTINGS =
+ "android.theme.customization.icon_pack.settings";
+ @VisibleForTesting
+ static final String OVERLAY_CATEGORY_ICON_LAUNCHER =
+ "android.theme.customization.icon_pack.launcher";
+
+ /* All theme customization categories used by the system. */
+ static final Set<String> THEME_CATEGORIES = Sets.newHashSet(
+ OVERLAY_CATEGORY_COLOR,
+ OVERLAY_CATEGORY_FONT,
+ OVERLAY_CATEGORY_SHAPE,
+ OVERLAY_CATEGORY_ICON_ANDROID,
+ OVERLAY_CATEGORY_ICON_SYSUI,
+ OVERLAY_CATEGORY_ICON_SETTINGS,
+ OVERLAY_CATEGORY_ICON_LAUNCHER);
+
+ /* Categories that need to applied to the current user as well as the system user. */
+ @VisibleForTesting
+ static final Set<String> SYSTEM_USER_CATEGORIES = Sets.newHashSet(
+ OVERLAY_CATEGORY_COLOR,
+ OVERLAY_CATEGORY_FONT,
+ OVERLAY_CATEGORY_SHAPE,
+ OVERLAY_CATEGORY_ICON_ANDROID,
+ OVERLAY_CATEGORY_ICON_SYSUI);
+
+ /* Allowed overlay categories for each target package. */
+ private final Map<String, Set<String>> mTargetPackageToCategories = new ArrayMap<>();
+ /* Target package for each overlay category. */
+ private final Map<String, String> mCategoryToTargetPackage = new ArrayMap<>();
+ private final OverlayManager mOverlayManager;
+ private final String mLauncherPackage;
+
+ ThemeOverlayManager(OverlayManager overlayManager, String launcherPackage) {
+ mOverlayManager = overlayManager;
+ mLauncherPackage = launcherPackage;
+ mTargetPackageToCategories.put(ANDROID_PACKAGE, Sets.newHashSet(
+ OVERLAY_CATEGORY_COLOR, OVERLAY_CATEGORY_FONT,
+ OVERLAY_CATEGORY_SHAPE, OVERLAY_CATEGORY_ICON_ANDROID));
+ mTargetPackageToCategories.put(SYSUI_PACKAGE,
+ Sets.newHashSet(OVERLAY_CATEGORY_ICON_SYSUI));
+ mTargetPackageToCategories.put(SETTINGS_PACKAGE,
+ Sets.newHashSet(OVERLAY_CATEGORY_ICON_SETTINGS));
+ mTargetPackageToCategories.put(mLauncherPackage,
+ Sets.newHashSet(OVERLAY_CATEGORY_ICON_LAUNCHER));
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_COLOR, ANDROID_PACKAGE);
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_FONT, ANDROID_PACKAGE);
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_SHAPE, ANDROID_PACKAGE);
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_ICON_ANDROID, ANDROID_PACKAGE);
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_ICON_SYSUI, SYSUI_PACKAGE);
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_ICON_SETTINGS, SETTINGS_PACKAGE);
+ mCategoryToTargetPackage.put(OVERLAY_CATEGORY_ICON_LAUNCHER, mLauncherPackage);
+ }
+
+ /**
+ * Apply the set of overlay packages to the set of {@code UserHandle}s provided. Overlays that
+ * affect sysui will also be applied to the system user.
+ */
+ void applyCurrentUserOverlays(
+ Map<String, String> categoryToPackage, Set<UserHandle> userHandles) {
+ final Map<Boolean, List<String>> categorySplit = THEME_CATEGORIES.stream().collect(
+ Collectors.partitioningBy((category) -> categoryToPackage.containsKey(category)));
+ final List<String> overlayCategoriesToEnable = categorySplit.get(true);
+ final List<String> overlayCategoriesToDisable = categorySplit.get(false);
+
+ // Disable all overlays that have not been specified in the user setting.
+ final List<OverlayInfo> overlays = new ArrayList<>();
+ overlayCategoriesToDisable.stream()
+ .map(category -> mCategoryToTargetPackage.get(category))
+ .collect(Collectors.toSet())
+ .forEach(targetPackage -> overlays.addAll(mOverlayManager
+ .getOverlayInfosForTarget(targetPackage, UserHandle.SYSTEM)));
+ overlays.stream()
+ .filter(o ->
+ mTargetPackageToCategories.get(o.targetPackageName).contains(o.category))
+ .filter(o -> overlayCategoriesToDisable.contains(o.category))
+ .filter(o -> o.isEnabled())
+ .forEach(o -> setEnabled(o.packageName, o.category, userHandles, false));
+
+
+ // Enable all overlays specified in the user setting.
+ overlayCategoriesToEnable.forEach((category) ->
+ setEnabled(categoryToPackage.get(category), category, userHandles, true));
+ }
+
+ private void setEnabled(
+ String packageName, String category, Set<UserHandle> handles, boolean enabled) {
+ for (UserHandle userHandle : handles) {
+ setEnabled(packageName, userHandle, enabled);
+ }
+ if (!handles.contains(UserHandle.SYSTEM) && SYSTEM_USER_CATEGORIES.contains(category)) {
+ setEnabled(packageName, UserHandle.SYSTEM, enabled);
+ }
+ }
+
+ private void setEnabled(String pkg, UserHandle userHandle, boolean enabled) {
+ if (DEBUG) Log.d(TAG, String.format("setEnabled: %s %s %b", pkg, userHandle, enabled));
+ if (enabled) {
+ mOverlayManager.setEnabledExclusiveInCategory(pkg, userHandle);
+ } else {
+ mOverlayManager.setEnabled(pkg, false, userHandle);
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/Events.java b/packages/SystemUI/src/com/android/systemui/volume/Events.java
index 2a84c5d4d44d..9bbfd224079c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/Events.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/Events.java
@@ -94,7 +94,6 @@ public class Events {
public static final int DISMISS_STREAM_GONE = 7;
public static final int DISMISS_REASON_OUTPUT_CHOOSER = 8;
public static final int DISMISS_REASON_USB_OVERHEAD_ALARM_CHANGED = 9;
- public static final int DISMISS_REASON_ODI_CAPTIONS_CLICKED = 10;
public static final String[] DISMISS_REASONS = {
"unknown",
"touch_outside",
@@ -105,8 +104,7 @@ public class Events {
"done_clicked",
"a11y_stream_changed",
"output_chooser",
- "usb_temperature_below_threshold",
- "odi_captions_clicked"
+ "usb_temperature_below_threshold"
};
public static final int SHOW_REASON_UNKNOWN = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 2094b36d8294..509537089bf8 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -30,7 +30,6 @@ import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
-import static com.android.systemui.volume.Events.DISMISS_REASON_ODI_CAPTIONS_CLICKED;
import static com.android.systemui.volume.Events.DISMISS_REASON_SETTINGS_CLICKED;
import android.animation.ObjectAnimator;
@@ -519,7 +518,6 @@ public class VolumeDialogImpl implements VolumeDialog,
mODICaptionsIcon.setOnConfirmedTapListener(() -> {
onCaptionIconClicked();
Events.writeEvent(mContext, Events.EVENT_ODI_CAPTIONS_CLICK);
- dismissH(DISMISS_REASON_ODI_CAPTIONS_CLICKED);
}, mHandler);
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java
index f2ad958c57ab..17fbe09e07b3 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java
@@ -18,12 +18,14 @@ package com.android.keyguard.clock;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.database.ContentObserver;
+import android.net.Uri;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
@@ -52,6 +54,8 @@ public final class ClockManagerTest extends SysuiTestCase {
private static final String BUBBLE_CLOCK = BubbleClockController.class.getName();
private static final Class<?> BUBBLE_CLOCK_CLASS = BubbleClockController.class;
+ private static final int USER_ID = 0;
+ private static final Uri SETTINGS_URI = null;
private ClockManager mClockManager;
private ContentObserver mContentObserver;
@@ -106,10 +110,10 @@ public final class ClockManagerTest extends SysuiTestCase {
@Test
public void getCurrentClock_default() {
// GIVEN that settings doesn't contain any values
- when(mMockSettingsWrapper.getLockScreenCustomClockFace()).thenReturn(null);
- when(mMockSettingsWrapper.getDockedClockFace()).thenReturn(null);
+ when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(null);
+ when(mMockSettingsWrapper.getDockedClockFace(anyInt())).thenReturn(null);
// WHEN settings change event is fired
- mContentObserver.onChange(false);
+ mContentObserver.onChange(false, SETTINGS_URI, USER_ID);
// THEN the result is null, indicated the default clock face should be used.
assertThat(mClockManager.getCurrentClock()).isNull();
}
@@ -117,9 +121,9 @@ public final class ClockManagerTest extends SysuiTestCase {
@Test
public void getCurrentClock_customClock() {
// GIVEN that settings is set to the bubble clock face
- when(mMockSettingsWrapper.getLockScreenCustomClockFace()).thenReturn(BUBBLE_CLOCK);
+ when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK);
// WHEN settings change event is fired
- mContentObserver.onChange(false);
+ mContentObserver.onChange(false, SETTINGS_URI, USER_ID);
// THEN the plugin is the bubble clock face.
assertThat(mClockManager.getCurrentClock()).isInstanceOf(BUBBLE_CLOCK_CLASS);
}
@@ -127,9 +131,9 @@ public final class ClockManagerTest extends SysuiTestCase {
@Test
public void onClockChanged_customClock() {
// GIVEN that settings is set to the bubble clock face
- when(mMockSettingsWrapper.getLockScreenCustomClockFace()).thenReturn(BUBBLE_CLOCK);
+ when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK);
// WHEN settings change event is fired
- mContentObserver.onChange(false);
+ mContentObserver.onChange(false, SETTINGS_URI, USER_ID);
// THEN the plugin is the bubble clock face.
ArgumentCaptor<ClockPlugin> captor = ArgumentCaptor.forClass(ClockPlugin.class);
verify(mMockListener1).onClockChanged(captor.capture());
@@ -139,9 +143,9 @@ public final class ClockManagerTest extends SysuiTestCase {
@Test
public void onClockChanged_uniqueInstances() {
// GIVEN that settings is set to the bubble clock face
- when(mMockSettingsWrapper.getLockScreenCustomClockFace()).thenReturn(BUBBLE_CLOCK);
+ when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK);
// WHEN settings change event is fired
- mContentObserver.onChange(false);
+ mContentObserver.onChange(false, SETTINGS_URI, USER_ID);
// THEN the listeners receive separate instances of the Bubble clock plugin.
ArgumentCaptor<ClockPlugin> captor1 = ArgumentCaptor.forClass(ClockPlugin.class);
ArgumentCaptor<ClockPlugin> captor2 = ArgumentCaptor.forClass(ClockPlugin.class);
@@ -156,9 +160,9 @@ public final class ClockManagerTest extends SysuiTestCase {
public void getCurrentClock_badSettingsValue() {
// GIVEN that settings contains a value that doesn't correspond to a
// custom clock face.
- when(mMockSettingsWrapper.getLockScreenCustomClockFace()).thenReturn("bad value");
+ when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn("bad value");
// WHEN settings change event is fired
- mContentObserver.onChange(false);
+ mContentObserver.onChange(false, SETTINGS_URI, USER_ID);
// THEN the result is null.
assertThat(mClockManager.getCurrentClock()).isNull();
}
@@ -174,7 +178,7 @@ public final class ClockManagerTest extends SysuiTestCase {
@Test
public void getCurrentClock_dockedCustomClock() {
// GIVEN settings is set to the bubble clock face
- when(mMockSettingsWrapper.getDockedClockFace()).thenReturn(BUBBLE_CLOCK);
+ when(mMockSettingsWrapper.getDockedClockFace(anyInt())).thenReturn(BUBBLE_CLOCK);
// WHEN dock event fires
mFakeDockManager.setDockEvent(DockManager.STATE_DOCKED);
// THEN the plugin is the bubble clock face.
@@ -184,7 +188,7 @@ public final class ClockManagerTest extends SysuiTestCase {
@Test
public void getCurrentClock_badDockedSettingsValue() {
// GIVEN settings contains a value that doesn't correspond to an available clock face.
- when(mMockSettingsWrapper.getDockedClockFace()).thenReturn("bad value");
+ when(mMockSettingsWrapper.getDockedClockFace(anyInt())).thenReturn("bad value");
// WHEN dock event fires
mFakeDockManager.setDockEvent(DockManager.STATE_DOCKED);
// THEN the result is null.
@@ -195,8 +199,8 @@ public final class ClockManagerTest extends SysuiTestCase {
public void getCurrentClock_badDockedSettingsFallback() {
// GIVEN settings contains a value that doesn't correspond to an available clock face, but
// locked screen settings is set to bubble clock.
- when(mMockSettingsWrapper.getDockedClockFace()).thenReturn("bad value");
- when(mMockSettingsWrapper.getLockScreenCustomClockFace()).thenReturn(BUBBLE_CLOCK);
+ when(mMockSettingsWrapper.getDockedClockFace(anyInt())).thenReturn("bad value");
+ when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK);
// WHEN dock event is fired
mFakeDockManager.setDockEvent(DockManager.STATE_DOCKED);
// THEN the plugin is the bubble clock face.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java
index e3c081ea2a67..c837c9ccea95 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarContextTest.java
@@ -179,8 +179,10 @@ public class NavigationBarContextTest extends SysuiTestCase {
final int unusedColor = 0;
final Drawable d = mock(Drawable.class);
final ContextualButton button = spy(mBtn0);
- final KeyButtonDrawable kbd1 = spy(new KeyButtonDrawable(d, unusedColor, unusedColor));
- final KeyButtonDrawable kbd2 = spy(new KeyButtonDrawable(d, unusedColor, unusedColor));
+ final KeyButtonDrawable kbd1 = spy(new KeyButtonDrawable(d, unusedColor, unusedColor,
+ false /* horizontalFlip */));
+ final KeyButtonDrawable kbd2 = spy(new KeyButtonDrawable(d, unusedColor, unusedColor,
+ false /* horizontalFlip */));
kbd1.setDarkIntensity(TEST_DARK_INTENSITY);
kbd2.setDarkIntensity(0f);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index ac6544e129b4..0b53c486356f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -300,7 +300,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest {
// We can only test whether unregister gets called if it thinks its in a listening
// state.
mNetworkController.mListening = true;
- mNetworkController.setCurrentSubscriptions(subscriptions);
+ mNetworkController.setCurrentSubscriptionsLocked(subscriptions);
for (int i = 0; i < testSubscriptions.length; i++) {
if (i == indexToSkipController) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayManagerTest.java
new file mode 100644
index 000000000000..da039a403087
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayManagerTest.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.systemui.theme;
+
+import static com.android.systemui.theme.ThemeOverlayManager.ANDROID_PACKAGE;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_COLOR;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_FONT;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_ICON_ANDROID;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_ICON_LAUNCHER;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_ICON_SETTINGS;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_ICON_SYSUI;
+import static com.android.systemui.theme.ThemeOverlayManager.OVERLAY_CATEGORY_SHAPE;
+import static com.android.systemui.theme.ThemeOverlayManager.SETTINGS_PACKAGE;
+import static com.android.systemui.theme.ThemeOverlayManager.SYSTEM_USER_CATEGORIES;
+import static com.android.systemui.theme.ThemeOverlayManager.SYSUI_PACKAGE;
+import static com.android.systemui.theme.ThemeOverlayManager.THEME_CATEGORIES;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.om.OverlayInfo;
+import android.content.om.OverlayManager;
+import android.os.UserHandle;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+
+import com.google.android.collect.Maps;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class ThemeOverlayManagerTest extends SysuiTestCase {
+ private static final String TEST_DISABLED_PREFIX = "com.example.";
+ private static final String TEST_ENABLED_PREFIX = "com.example.enabled.";
+
+ private static final Map<String, String> ALL_CATEGORIES_MAP = Maps.newArrayMap();
+
+ static {
+ for (String category : THEME_CATEGORIES) {
+ ALL_CATEGORIES_MAP.put(category, TEST_DISABLED_PREFIX + category);
+ }
+ }
+
+ private static final String LAUNCHER_PACKAGE = "com.android.launcher3";
+ private static final UserHandle TEST_USER = UserHandle.of(5);
+ private static final Set<UserHandle> TEST_USER_HANDLES = Sets.newHashSet(TEST_USER);
+
+ @Mock
+ OverlayManager mOverlayManager;
+
+ private ThemeOverlayManager mManager;
+
+ @Before
+ public void setup() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mManager = new ThemeOverlayManager(mOverlayManager, LAUNCHER_PACKAGE);
+ when(mOverlayManager.getOverlayInfosForTarget(ANDROID_PACKAGE, UserHandle.SYSTEM))
+ .thenReturn(Lists.newArrayList(
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_COLOR,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_COLOR, false),
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_FONT,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_FONT, false),
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_SHAPE,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_SHAPE, false),
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_ICON_ANDROID,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_ICON_ANDROID, false),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_COLOR,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_COLOR, true),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_FONT,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_FONT, true),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_SHAPE,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_SHAPE, true),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_ICON_ANDROID,
+ ANDROID_PACKAGE, OVERLAY_CATEGORY_ICON_ANDROID, true)));
+ when(mOverlayManager.getOverlayInfosForTarget(SYSUI_PACKAGE, UserHandle.SYSTEM))
+ .thenReturn(Lists.newArrayList(
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_ICON_SYSUI,
+ SYSUI_PACKAGE, OVERLAY_CATEGORY_ICON_SYSUI, false),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_ICON_SYSUI,
+ SYSUI_PACKAGE, OVERLAY_CATEGORY_ICON_SYSUI, true)));
+ when(mOverlayManager.getOverlayInfosForTarget(SETTINGS_PACKAGE, UserHandle.SYSTEM))
+ .thenReturn(Lists.newArrayList(
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_ICON_SETTINGS,
+ SETTINGS_PACKAGE, OVERLAY_CATEGORY_ICON_SETTINGS, false),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_ICON_SETTINGS,
+ SETTINGS_PACKAGE, OVERLAY_CATEGORY_ICON_SETTINGS, true)));
+ when(mOverlayManager.getOverlayInfosForTarget(LAUNCHER_PACKAGE, UserHandle.SYSTEM))
+ .thenReturn(Lists.newArrayList(
+ createOverlayInfo(TEST_DISABLED_PREFIX + OVERLAY_CATEGORY_ICON_LAUNCHER,
+ LAUNCHER_PACKAGE, OVERLAY_CATEGORY_ICON_LAUNCHER, false),
+ createOverlayInfo(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_ICON_LAUNCHER,
+ LAUNCHER_PACKAGE, OVERLAY_CATEGORY_ICON_LAUNCHER, true)));
+ }
+
+ @Test
+ public void allCategoriesSpecified_allEnabledExclusively() {
+ mManager.applyCurrentUserOverlays(ALL_CATEGORIES_MAP, TEST_USER_HANDLES);
+
+ for (String overlayPackage : ALL_CATEGORIES_MAP.values()) {
+ verify(mOverlayManager).setEnabledExclusiveInCategory(overlayPackage, TEST_USER);
+ }
+ }
+
+ @Test
+ public void allCategoriesSpecified_sysuiCategoriesAlsoAppliedToSysuiUser() {
+ mManager.applyCurrentUserOverlays(ALL_CATEGORIES_MAP, TEST_USER_HANDLES);
+
+ for (Map.Entry<String, String> entry : ALL_CATEGORIES_MAP.entrySet()) {
+ if (SYSTEM_USER_CATEGORIES.contains(entry.getKey())) {
+ verify(mOverlayManager).setEnabledExclusiveInCategory(
+ entry.getValue(), UserHandle.SYSTEM);
+ } else {
+ verify(mOverlayManager, never()).setEnabledExclusiveInCategory(
+ entry.getValue(), UserHandle.SYSTEM);
+ }
+ }
+ }
+
+ @Test
+ public void allCategoriesSpecified_enabledForAllUserHandles() {
+ Set<UserHandle> userHandles = Sets.newHashSet(TEST_USER_HANDLES);
+ UserHandle newUserHandle = UserHandle.of(10);
+ userHandles.add(newUserHandle);
+ mManager.applyCurrentUserOverlays(ALL_CATEGORIES_MAP, userHandles);
+
+ for (String overlayPackage : ALL_CATEGORIES_MAP.values()) {
+ verify(mOverlayManager).setEnabledExclusiveInCategory(overlayPackage, TEST_USER);
+ verify(mOverlayManager).setEnabledExclusiveInCategory(overlayPackage, newUserHandle);
+ }
+ }
+
+ @Test
+ public void allCategoriesSpecified_overlayManagerNotQueried() {
+ mManager.applyCurrentUserOverlays(ALL_CATEGORIES_MAP, TEST_USER_HANDLES);
+
+ verify(mOverlayManager, never())
+ .getOverlayInfosForTarget(anyString(), any(UserHandle.class));
+ }
+
+ @Test
+ public void someCategoriesSpecified_specifiedEnabled_unspecifiedDisabled() {
+ Map<String, String> categoryToPackage = new HashMap<>(ALL_CATEGORIES_MAP);
+ categoryToPackage.remove(OVERLAY_CATEGORY_ICON_SETTINGS);
+ categoryToPackage.remove(OVERLAY_CATEGORY_ICON_ANDROID);
+
+ mManager.applyCurrentUserOverlays(categoryToPackage, TEST_USER_HANDLES);
+
+ for (String overlayPackage : categoryToPackage.values()) {
+ verify(mOverlayManager).setEnabledExclusiveInCategory(overlayPackage, TEST_USER);
+ }
+ verify(mOverlayManager).setEnabled(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_ICON_SETTINGS,
+ false, TEST_USER);
+ verify(mOverlayManager).setEnabled(TEST_ENABLED_PREFIX + OVERLAY_CATEGORY_ICON_ANDROID,
+ false, TEST_USER);
+ }
+
+ @Test
+ public void zeroCategoriesSpecified_allDisabled() {
+ mManager.applyCurrentUserOverlays(Maps.newArrayMap(), TEST_USER_HANDLES);
+
+ for (String category : THEME_CATEGORIES) {
+ verify(mOverlayManager).setEnabled(TEST_ENABLED_PREFIX + category, false, TEST_USER);
+ }
+ }
+
+ @Test
+ public void nonThemeCategorySpecified_ignored() {
+ Map<String, String> categoryToPackage = new HashMap<>(ALL_CATEGORIES_MAP);
+ categoryToPackage.put("blah.category", "com.example.blah.category");
+
+ mManager.applyCurrentUserOverlays(categoryToPackage, TEST_USER_HANDLES);
+
+ verify(mOverlayManager, never()).setEnabled("com.example.blah.category", false, TEST_USER);
+ verify(mOverlayManager, never()).setEnabledExclusiveInCategory("com.example.blah.category",
+ TEST_USER);
+ }
+
+ @Test
+ public void overlayManagerOnlyQueriedForUnspecifiedPackages() {
+ Map<String, String> categoryToPackage = new HashMap<>(ALL_CATEGORIES_MAP);
+ categoryToPackage.remove(OVERLAY_CATEGORY_ICON_SETTINGS);
+
+ mManager.applyCurrentUserOverlays(categoryToPackage, TEST_USER_HANDLES);
+
+ verify(mOverlayManager).getOverlayInfosForTarget(SETTINGS_PACKAGE, UserHandle.SYSTEM);
+ verify(mOverlayManager, never()).getOverlayInfosForTarget(ANDROID_PACKAGE,
+ UserHandle.SYSTEM);
+ verify(mOverlayManager, never()).getOverlayInfosForTarget(SYSUI_PACKAGE, UserHandle.SYSTEM);
+ verify(mOverlayManager, never()).getOverlayInfosForTarget(LAUNCHER_PACKAGE,
+ UserHandle.SYSTEM);
+ }
+
+ private static OverlayInfo createOverlayInfo(String packageName, String targetPackageName,
+ String category, boolean enabled) {
+ return new OverlayInfo(packageName, targetPackageName, null, category, "",
+ enabled ? OverlayInfo.STATE_ENABLED : OverlayInfo.STATE_DISABLED, 0, 0, false);
+ }
+}
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
index 380ff346c6f2..4d844a1c4e0f 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@*android:color/accent_device_default"
+ android:tint="@*android:color/accent_device_default_light"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
index 452a032c49e9..19731249bfc7 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_perm_group_sms.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml
index d15cfa3b1e3a..d15cfa3b1e3a 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_perm_group_sms.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
index 87d82e58cd67..87d82e58cd67 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml
new file mode 100644
index 000000000000..4e5497a76991
--- /dev/null
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10c5.52,0,10-4.48,10-10S17.52,2,12,2z M12,17v-1.5h7.74 c-0.24,0.53-0.54,1.03-0.88,1.5H12z M12,14v-1.5h8.47c-0.03,0.51-0.1,1.01-0.22,1.5H12z M12,11V9.5h8.12 c0.15,0.48,0.25,0.99,0.31,1.5H12z M12,8V6.5h6.47c0.39,0.46,0.74,0.96,1.03,1.5H12z M16.81,5H12V3.5C13.79,3.5,15.44,4.06,16.81,5 z M3.5,12c0-4.17,3.03-7.65,7-8.36v16.72C6.53,19.65,3.5,16.17,3.5,12z M12,18.5h5.47c-1.48,1.25-3.39,2-5.47,2V18.5z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
index 8719f155f94a..df79827ce624 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@*android:color/accent_device_default"
+ android:tint="@*android:color/accent_device_default_light"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
index 09643e606350..58800c8d29be 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_perm_group_sms.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml
index eef9e62f15b0..eef9e62f15b0 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_perm_group_sms.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
index b4baf231d1b6..b4baf231d1b6 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml
new file mode 100644
index 000000000000..6b5903c569c0
--- /dev/null
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10s10-4.48,10-10S17.52,2,12,2z M11,19.93C7.06,19.44,4,16.08,4,12 c0-4.08,3.05-7.44,7-7.93V19.93z M13,4.07C14.03,4.2,15,4.52,15.87,5H13V4.07z M13,7h5.24c0.25,0.31,0.48,0.65,0.68,1H13V7z M13,19.93V19h2.87C15,19.48,14.03,19.8,13,19.93z M18.24,17H13v-1h5.92C18.72,16.35,18.49,16.69,18.24,17z M19.74,14H13v-1h6.93 C19.89,13.34,19.82,13.67,19.74,14z M19.93,11H13v-1h6.74C19.82,10.33,19.89,10.66,19.93,11z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
index d0f9d9b567f3..feed70c49138 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@*android:color/accent_device_default"
+ android:tint="@*android:color/accent_device_default_light"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
index 3d270b3fce42..5e1a5f20c6d6 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_perm_group_sms.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml
index b5509d12a059..b5509d12a059 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_perm_group_sms.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
index 5f704f0ed828..5f704f0ed828 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_24dp.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml
new file mode 100644
index 000000000000..308c2ab34563
--- /dev/null
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,2C6.48,2,2,6.48,2,12s4.48,10,10,10c5.52,0,10-4.48,10-10S17.52,2,12,2z M12,12.5h8.47c-0.03,0.51-0.1,1.01-0.22,1.5 H12V12.5z M12,11V9.5h8.12c0.15,0.48,0.25,0.99,0.31,1.5H12z M12,8V6.5h6.47c0.39,0.46,0.74,0.96,1.03,1.5H12z M16.81,5H12V3.5 C13.79,3.5,15.44,4.06,16.81,5z M3.5,12c0-4.17,3.03-7.65,7-8.36v16.72C6.53,19.65,3.5,16.17,3.5,12z M12,18.5h5.47 c-1.48,1.25-3.39,2-5.47,2V18.5z M18.86,17H12v-1.5h7.74C19.5,16.03,19.2,16.53,18.86,17z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml
index 2e2ea085f396..2e662684438f 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml
@@ -21,5 +21,8 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M20.49,11.26h-1.03c-0.15-1.51-0.74-2.88-1.65-3.99l0.73-0.73c0.29-0.29,0.29-0.77,0-1.06s-0.77-0.29-1.06,0L16.75,6.2 c-1.11-0.91-2.49-1.51-4-1.66V3.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v1.04c-1.5,0.15-2.88,0.75-3.99,1.65L6.53,5.46 c-0.29-0.29-0.77-0.29-1.06,0s-0.29,0.77,0,1.06L6.2,7.25c-0.91,1.11-1.51,2.49-1.66,3.99H3.51c-0.41,0-0.75,0.34-0.75,0.75 s0.34,0.75,0.75,0.75h1.03c0.15,1.51,0.74,2.88,1.65,3.99l-0.73,0.73c-0.29,0.29-0.29,0.77,0,1.06c0.15,0.15,0.34,0.22,0.53,0.22 s0.38-0.07,0.53-0.22l0.73-0.73c1.11,0.91,2.48,1.51,3.98,1.66v1.02c0,0.41,0.34,0.75,0.75,0.75s0.75-0.34,0.75-0.75v-1.02 c1.48-0.14,2.86-0.71,4.01-1.65l0.73,0.73c0.15,0.15,0.34,0.22,0.53,0.22c0.19,0,0.38-0.07,0.53-0.22c0.29-0.29,0.29-0.77,0-1.06 l-0.72-0.72c0.94-1.14,1.51-2.52,1.66-4h1.03c0.41,0,0.75-0.34,0.75-0.75S20.9,11.26,20.49,11.26z M12,18c-3.31,0-6-2.69-6-6 s2.69-6,6-6s6,2.69,6,6S15.31,18,12,18z" />
+ android:pathData="M21.25,11.25h-2.8A6.46,6.46,0,0,0,17.09,8l2-2A0.75 0.75 ,0,0,0,18,4.93l-2,2a6.46,6.46,0,0,0-3.28-1.36V2.75a0.75 0.75 ,0,0,0-1.5,0v2.8A6.46,6.46,0,0,0,8,6.91l-2-2A0.75 0.75 ,0,0,0,4.93,6l2,2a6.46,6.46,0,0,0-1.36,3.28H2.75a0.75 0.75 ,0,0,0,0,1.5h2.8A6.46,6.46,0,0,0,6.91,16l-2,2A0.75 0.75 ,0,0,0,6,19.07l2-2a6.46,6.46,0,0,0,3.28,1.36v2.8a0.75 0.75 ,0,0,0,1.5,0v-2.8A6.46,6.46,0,0,0,16,17.09l2,2A0.75 0.75 ,0,0,0,19.07,18l-2-2a6.46,6.46,0,0,0,1.36-3.28h2.8a0.75 0.75 ,0,0,0,0-1.5ZM12,17a5,5,0,1,1,5-5A5,5,0,0,1,12,17Z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,15.5a3.5,3.5,0,0,0,0-7Z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
index 2e4665e59f1e..697d1c29eac7 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -20,9 +20,9 @@
android:viewportWidth="24"
android:width="24dp" >
<path
- android:fillColor="?android:attr/colorControlActivated"
- android:pathData="M22.46,11.25h-3.02c-0.15-1.51-0.75-2.88-1.66-4l2.17-2.17c0.29-0.29,0.29-0.77,0-1.06s-0.77-0.29-1.06,0l-2.18,2.18 c-1.11-0.91-2.49-1.51-3.99-1.66V1.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v3.04c-1.5,0.15-2.88,0.75-3.99,1.65 L5.06,4.01C4.77,3.71,4.29,3.71,4,4.01S3.71,4.77,4,5.07l2.18,2.18c-0.91,1.11-1.51,2.48-1.66,3.98H1.48 c-0.41,0-0.75,0.34-0.75,0.75s0.34,0.75,0.75,0.75h3.04c0.15,1.51,0.74,2.88,1.65,3.99L3.99,18.9c-0.29,0.29-0.29,0.77,0,1.06 c0.15,0.15,0.34,0.22,0.53,0.22s0.38-0.07,0.53-0.22l2.17-2.17c1.11,0.91,2.49,1.52,3.99,1.67v3.02c0,0.41,0.34,0.75,0.75,0.75 s0.75-0.34,0.75-0.75v-3.02c1.48-0.14,2.86-0.71,4.01-1.65l2.16,2.16c0.15,0.15,0.34,0.22,0.53,0.22s0.38-0.07,0.53-0.22 c0.29-0.29,0.29-0.77,0-1.06l-2.16-2.16c0.94-1.15,1.52-2.53,1.66-4.01h3.02c0.41,0,0.75-0.34,0.75-0.75S22.88,11.25,22.46,11.25z M12,18c-3.31,0-6-2.69-6-6s2.69-6,6-6s6,2.69,6,6S15.31,18,12,18z" />
- <path
android:fillColor="?android:attr/colorPrimary"
- android:pathData="M 12 6 C 15.313708499 6 18 8.68629150102 18 12 C 18 15.313708499 15.313708499 18 12 18 C 8.68629150102 18 6 15.313708499 6 12 C 6 8.68629150102 8.68629150102 6 12 6 Z" />
+ android:pathData="M 12 0 L 12 0 Q 24 0 24 12 L 24 12 Q 24 24 12 24 L 12 24 Q 0 24 0 12 L 0 12 Q 0 0 12 0 Z" />
+ <path
+ android:fillColor="?android:attr/colorControlActivated"
+ android:pathData="M21.25,11.25h-2.8A6.46,6.46,0,0,0,17.09,8l2-2A0.75 0.75 ,0,0,0,18,4.93l-2,2a6.46,6.46,0,0,0-3.28-1.36V2.75a0.75 0.75 ,0,0,0-1.5,0v2.8A6.46,6.46,0,0,0,8,6.91l-2-2A0.75 0.75 ,0,0,0,4.93,6l2,2a6.46,6.46,0,0,0-1.36,3.28H2.75a0.75 0.75 ,0,0,0,0,1.5h2.8A6.46,6.46,0,0,0,6.91,16l-2,2A0.75 0.75 ,0,0,0,6,19.07l2-2a6.46,6.46,0,0,0,3.28,1.36v2.8a0.75 0.75 ,0,0,0,1.5,0v-2.8A6.46,6.46,0,0,0,16,17.09l2,2A0.75 0.75 ,0,0,0,19.07,18l-2-2a6.46,6.46,0,0,0,1.36-3.28h2.8a0.75 0.75 ,0,0,0,0-1.5ZM12,17a5,5,0,1,1,5-5A5,5,0,0,1,12,17Z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml b/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml
index 704ff2ee2aa3..86fd47bfc63f 100644
--- a/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml
+++ b/packages/overlays/NavigationBarModeGesturalOverlay/res/values/config.xml
@@ -33,4 +33,8 @@
<!-- Controls the size of the back gesture inset. -->
<dimen name="config_backGestureInset">20dp</dimen>
+ <!-- Controls whether the navbar needs a scrim with
+ {@link Window#setEnsureNavigationBarContrastWhenTransparent}. -->
+ <bool name="config_navBarNeedsScrim">false</bool>
+
</resources>
diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto
index c256fb270fd9..fdbc2ac97098 100644
--- a/proto/src/wifi.proto
+++ b/proto/src/wifi.proto
@@ -536,6 +536,15 @@ message WifiLog {
// WifiLock statistics
optional WifiLockStats wifi_lock_stats = 143;
+
+ // Stats on number of times Wi-Fi is turned on/off though the WifiManager#setWifiEnabled API
+ optional WifiToggleStats wifi_toggle_stats = 144;
+
+ // Number of times WifiManager#addOrUpdateNetwork is called.
+ optional int32 num_add_or_update_network_calls = 145;
+
+ // Number of times WifiManager#enableNetwork is called.
+ optional int32 num_enable_network_calls = 146;
}
// Information that gets logged for every WiFi connection.
@@ -2510,3 +2519,18 @@ message WifiLockStats {
// This means the lock takes effect and the device takes the actions required for this mode
repeated HistogramBucketInt32 low_latency_active_session_duration_sec_histogram = 6;
}
+
+// Stats on number of times Wi-Fi is turned on/off though the WifiManager#setWifiEnabled API
+message WifiToggleStats {
+ // Number of time Wi-Fi is turned on by privileged apps
+ optional int32 num_toggle_on_privileged = 1;
+
+ // Number of time Wi-Fi is turned off by privileged apps
+ optional int32 num_toggle_off_privileged = 2;
+
+ // Number of time Wi-Fi is turned on by normal apps
+ optional int32 num_toggle_on_normal = 3;
+
+ // Number of time Wi-Fi is turned off by normal apps
+ optional int32 num_toggle_off_normal = 4;
+} \ No newline at end of file
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index 0402b8fb9285..afb8a15bd24d 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -704,6 +704,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mClient.asBinder().linkToDeath(mClientVulture, 0);
} catch (RemoteException e) {
Slog.w(TAG, "could not set binder death listener on autofill client: " + e);
+ mClientVulture = null;
}
}
@@ -714,6 +715,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
if (!unlinked) {
Slog.w(TAG, "unlinking vulture from death failed for " + mActivityToken);
}
+ mClientVulture = null;
}
}
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index a3e7d3685100..54a3ecb22687 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -166,6 +166,9 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
@Override
public void onUnlockUser(int userHandle) {
Set<Association> associations = readAllAssociations(userHandle);
+ if (associations == null || associations.isEmpty()) {
+ return;
+ }
Set<String> companionAppPackages = new HashSet<>();
for (Association association : associations) {
companionAppPackages.add(association.companionAppPackage);
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index 640525411239..57de67e1a38c 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -133,6 +133,7 @@ import android.os.ServiceSpecificException;
import android.os.ShellCallback;
import android.os.ShellCommand;
import android.os.SystemClock;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
@@ -1628,8 +1629,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
*/
private boolean disallowedBecauseSystemCaller() {
// TODO: start throwing a SecurityException when GnssLocationProvider stops calling
- // requestRouteToHost.
- if (isSystem(Binder.getCallingUid())) {
+ // requestRouteToHost. In Q, GnssLocationProvider is changed to not call requestRouteToHost
+ // for devices launched with Q and above. However, existing devices upgrading to Q and
+ // above must continued to be supported for few more releases.
+ if (isSystem(Binder.getCallingUid()) && SystemProperties.getInt(
+ "ro.product.first_api_level", 0) > Build.VERSION_CODES.P) {
log("This method exists only for app backwards compatibility"
+ " and must not be called by system services.");
return true;
@@ -1767,11 +1771,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
// caller type. Need to re-factor NetdEventListenerService to allow multiple
// NetworkMonitor registrants.
if (nai != null && nai.satisfies(mDefaultRequest)) {
- try {
- nai.networkMonitor().notifyDnsResponse(returnCode);
- } catch (RemoteException e) {
- e.rethrowFromSystemServer();
- }
+ Binder.withCleanCallingIdentity(() ->
+ nai.networkMonitor().notifyDnsResponse(returnCode));
}
}
diff --git a/services/core/java/com/android/server/IpSecService.java b/services/core/java/com/android/server/IpSecService.java
index 126bf6556538..2055b64483d9 100644
--- a/services/core/java/com/android/server/IpSecService.java
+++ b/services/core/java/com/android/server/IpSecService.java
@@ -96,9 +96,10 @@ public class IpSecService extends IIpSecService.Stub {
new int[] {OsConstants.AF_INET, OsConstants.AF_INET6};
private static final int NETD_FETCH_TIMEOUT_MS = 5000; // ms
- private static final int MAX_PORT_BIND_ATTEMPTS = 10;
private static final InetAddress INADDR_ANY;
+ @VisibleForTesting static final int MAX_PORT_BIND_ATTEMPTS = 10;
+
static {
try {
INADDR_ANY = InetAddress.getByAddress(new byte[] {0, 0, 0, 0});
@@ -207,6 +208,7 @@ public class IpSecService extends IIpSecService.Stub {
mBinder.linkToDeath(this, 0);
} catch (RemoteException e) {
binderDied();
+ e.rethrowFromSystemServer();
}
}
}
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index 0786b1819b71..da9cffa73585 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -3836,9 +3836,9 @@ class StorageManagerService extends IStorageManager.Stub
}
// Determine if caller is holding runtime permission
- final boolean hasRead = StorageManager.checkPermissionAndAppOp(mContext, false, 0,
+ final boolean hasRead = StorageManager.checkPermissionAndCheckOp(mContext, false, 0,
uid, packageName, READ_EXTERNAL_STORAGE, OP_READ_EXTERNAL_STORAGE);
- final boolean hasWrite = StorageManager.checkPermissionAndAppOp(mContext, false, 0,
+ final boolean hasWrite = StorageManager.checkPermissionAndCheckOp(mContext, false, 0,
uid, packageName, WRITE_EXTERNAL_STORAGE, OP_WRITE_EXTERNAL_STORAGE);
// STOPSHIP: remove this temporary hack once we have dynamic runtime
// permissions fully enabled again
diff --git a/services/core/java/com/android/server/SystemServerInitThreadPool.java b/services/core/java/com/android/server/SystemServerInitThreadPool.java
index 5cc9bfd52b13..6bb3200f7cc1 100644
--- a/services/core/java/com/android/server/SystemServerInitThreadPool.java
+++ b/services/core/java/com/android/server/SystemServerInitThreadPool.java
@@ -22,9 +22,10 @@ import android.util.Slog;
import com.android.internal.util.ConcurrentUtils;
import com.android.internal.util.Preconditions;
+import com.android.server.am.ActivityManagerService;
+import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
@@ -47,6 +48,8 @@ public class SystemServerInitThreadPool {
private ExecutorService mService = ConcurrentUtils.newFixedThreadPool(4,
"system-server-init-thread", Process.THREAD_PRIORITY_FOREGROUND);
+ private List<String> mPendingTasks = new ArrayList<>();
+
public static synchronized SystemServerInitThreadPool get() {
if (sInstance == null) {
sInstance = new SystemServerInitThreadPool();
@@ -57,19 +60,26 @@ public class SystemServerInitThreadPool {
}
public Future<?> submit(Runnable runnable, String description) {
- if (IS_DEBUGGABLE) {
- return mService.submit(() -> {
- Slog.d(TAG, "Started executing " + description);
- try {
- runnable.run();
- } catch (RuntimeException e) {
- Slog.e(TAG, "Failure in " + description + ": " + e, e);
- throw e;
- }
- Slog.d(TAG, "Finished executing " + description);
- });
+ synchronized (mPendingTasks) {
+ mPendingTasks.add(description);
}
- return mService.submit(runnable);
+ return mService.submit(() -> {
+ if (IS_DEBUGGABLE) {
+ Slog.d(TAG, "Started executing " + description);
+ }
+ try {
+ runnable.run();
+ } catch (RuntimeException e) {
+ Slog.e(TAG, "Failure in " + description + ": " + e, e);
+ throw e;
+ }
+ synchronized (mPendingTasks) {
+ mPendingTasks.remove(description);
+ }
+ if (IS_DEBUGGABLE) {
+ Slog.d(TAG, "Finished executing " + description);
+ }
+ });
}
static synchronized void shutdown() {
@@ -81,16 +91,36 @@ public class SystemServerInitThreadPool {
TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
+ dumpStackTraces();
throw new IllegalStateException(TAG + " init interrupted");
}
+ if (!terminated) {
+ // dump stack must be called before shutdownNow() to collect stacktrace of threads
+ // in the thread pool.
+ dumpStackTraces();
+ }
List<Runnable> unstartedRunnables = sInstance.mService.shutdownNow();
if (!terminated) {
+ final List<String> copy = new ArrayList<>();
+ synchronized (sInstance.mPendingTasks) {
+ copy.addAll(sInstance.mPendingTasks);
+ }
throw new IllegalStateException("Cannot shutdown. Unstarted tasks "
- + unstartedRunnables);
+ + unstartedRunnables + " Unfinished tasks " + copy);
}
sInstance.mService = null; // Make mService eligible for GC
+ sInstance.mPendingTasks = null;
Slog.d(TAG, "Shutdown successful");
}
}
+ /**
+ * A helper function to call ActivityManagerService.dumpStackTraces().
+ */
+ private static void dumpStackTraces() {
+ final ArrayList<Integer> pids = new ArrayList<>();
+ pids.add(Process.myPid());
+ ActivityManagerService.dumpStackTraces(
+ pids, null, null, null);
+ }
}
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index c647e2ed824f..ac584e9571fc 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -1304,12 +1304,12 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
return;
}
if (VDBG) {
- log("notifyUserMobileDataStateChangedForSubscriberPhoneID: subId=" + phoneId
- + " state=" + state);
+ log("notifyUserMobileDataStateChangedForSubscriberPhoneID: PhoneId=" + phoneId
+ + " subId=" + subId + " state=" + state);
}
synchronized (mRecords) {
if (validatePhoneId(phoneId)) {
- mMessageWaiting[phoneId] = state;
+ mUserMobileDataState[phoneId] = state;
for (Record r : mRecords) {
if (r.matchPhoneStateListenerEvent(
PhoneStateListener.LISTEN_USER_MOBILE_DATA_STATE) &&
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 5d47c9dfdddd..44d435f2b539 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -1262,15 +1262,16 @@ public final class OomAdjuster {
// processes). These should not bring the current process
// into the top state, since they are not on top. Instead
// give them the best bound state after that.
+ final int bestState = cr.hasFlag(Context.BIND_INCLUDE_CAPABILITIES)
+ ? PROCESS_STATE_FOREGROUND_SERVICE_LOCATION
+ : PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
if ((cr.flags & Context.BIND_FOREGROUND_SERVICE) != 0) {
- clientProcState =
- PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
+ clientProcState = bestState;
} else if (mService.mWakefulness
== PowerManagerInternal.WAKEFULNESS_AWAKE
&& (cr.flags & Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE)
!= 0) {
- clientProcState =
- PROCESS_STATE_BOUND_FOREGROUND_SERVICE;
+ clientProcState = bestState;
} else {
clientProcState =
PROCESS_STATE_IMPORTANT_FOREGROUND;
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index d073bc60c766..4c3bb8c07728 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -1840,11 +1840,14 @@ public class AppOpsService extends IAppOpsService.Stub {
}
private boolean isPackageSuspendedForUser(String pkg, int uid) {
+ final long identity = Binder.clearCallingIdentity();
try {
return AppGlobals.getPackageManager().isPackageSuspendedForUser(
pkg, UserHandle.getUserId(uid));
} catch (RemoteException re) {
throw new SecurityException("Could not talk to package manager service");
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
diff --git a/services/core/java/com/android/server/attention/AttentionManagerService.java b/services/core/java/com/android/server/attention/AttentionManagerService.java
index bc78d1ad751f..3dbea0d1978e 100644
--- a/services/core/java/com/android/server/attention/AttentionManagerService.java
+++ b/services/core/java/com/android/server/attention/AttentionManagerService.java
@@ -22,7 +22,6 @@ import static android.service.attention.AttentionService.ATTENTION_FAILURE_CANCE
import static android.service.attention.AttentionService.ATTENTION_FAILURE_UNKNOWN;
import android.Manifest;
-import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.annotation.UserIdInt;
@@ -51,6 +50,7 @@ import android.provider.DeviceConfig;
import android.provider.Settings;
import android.service.attention.AttentionService;
import android.service.attention.AttentionService.AttentionFailureCodes;
+import android.service.attention.AttentionService.AttentionSuccessCodes;
import android.service.attention.IAttentionCallback;
import android.service.attention.IAttentionService;
import android.text.TextUtils;
@@ -75,6 +75,7 @@ import java.io.PrintWriter;
*/
public class AttentionManagerService extends SystemService {
private static final String LOG_TAG = "AttentionManagerService";
+ private static final boolean DEBUG = false;
/**
* DeviceConfig flag name, allows a CTS to inject a fake implementation.
@@ -156,7 +157,11 @@ public class AttentionManagerService extends SystemService {
/**
* Checks whether user attention is at the screen and calls in the provided callback.
*
- * @return {@code true} if the framework was able to send the provided callback to the service
+ * Calling this multiple times quickly in a row will result in either a) returning a cached
+ * value, if present, or b) returning {@code false} because only one active request at a time is
+ * allowed.
+ *
+ * @return {@code true} if the framework was able to dispatch the request
*/
private boolean checkAttention(long timeout, AttentionCallbackInternal callbackInternal) {
Preconditions.checkNotNull(callbackInternal);
@@ -182,54 +187,30 @@ public class AttentionManagerService extends SystemService {
return false;
}
- if (userState.mService == null) {
- // make sure every callback is called back
- if (userState.mPendingAttentionCheck != null) {
- userState.mPendingAttentionCheck.cancel(
- ATTENTION_FAILURE_CANCELLED);
+ // throttle frequent requests
+ final AttentionCheckCache cache = userState.mAttentionCheckCache;
+ if (cache != null && now < cache.mLastComputed + STALE_AFTER_MILLIS) {
+ callbackInternal.onSuccess(cache.mResult, cache.mTimestamp);
+ return true;
+ }
+
+ // prevent spamming with multiple requests, only one at a time is allowed
+ if (userState.mCurrentAttentionCheck != null) {
+ if (!userState.mCurrentAttentionCheck.mIsDispatched
+ || !userState.mCurrentAttentionCheck.mIsFulfilled) {
+ return false;
}
- // fire the check when the service is started
- userState.mPendingAttentionCheck = new PendingAttentionCheck(
- callbackInternal, () -> checkAttention(timeout, callbackInternal));
- } else {
- try {
- // throttle frequent requests
- final AttentionCheckCache cache = userState.mAttentionCheckCache;
- if (cache != null && now < cache.mLastComputed + STALE_AFTER_MILLIS) {
- callbackInternal.onSuccess(cache.mResult, cache.mTimestamp);
- return true;
- }
+ }
+ userState.mCurrentAttentionCheck = createAttentionCheck(callbackInternal, userState);
+
+ if (userState.mService != null) {
+ try {
// schedule request cancellation if not returned by that point yet
cancelAfterTimeoutLocked(timeout);
-
- userState.mCurrentAttentionCheck = new AttentionCheck(callbackInternal,
- new IAttentionCallback.Stub() {
- @Override
- public void onSuccess(int result, long timestamp) {
- callbackInternal.onSuccess(result, timestamp);
- synchronized (mLock) {
- userState.mAttentionCheckCache = new AttentionCheckCache(
- SystemClock.uptimeMillis(), result,
- timestamp);
- userState.mCurrentAttentionCheckIsFulfilled = true;
- }
- StatsLog.write(
- StatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
- result);
- }
-
- @Override
- public void onFailure(int error) {
- callbackInternal.onFailure(error);
- userState.mCurrentAttentionCheckIsFulfilled = true;
- StatsLog.write(
- StatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
- error);
- }
- });
userState.mService.checkAttention(
userState.mCurrentAttentionCheck.mIAttentionCallback);
+ userState.mCurrentAttentionCheck.mIsDispatched = true;
} catch (RemoteException e) {
Slog.e(LOG_TAG, "Cannot call into the AttentionService");
return false;
@@ -239,6 +220,44 @@ public class AttentionManagerService extends SystemService {
}
}
+ private AttentionCheck createAttentionCheck(AttentionCallbackInternal callbackInternal,
+ UserState userState) {
+ final IAttentionCallback iAttentionCallback = new IAttentionCallback.Stub() {
+ @Override
+ public void onSuccess(@AttentionSuccessCodes int result, long timestamp) {
+ // the callback might have been cancelled already
+ if (!userState.mCurrentAttentionCheck.mIsFulfilled) {
+ callbackInternal.onSuccess(result, timestamp);
+ userState.mCurrentAttentionCheck.mIsFulfilled = true;
+ }
+
+ synchronized (mLock) {
+ userState.mAttentionCheckCache = new AttentionCheckCache(
+ SystemClock.uptimeMillis(), result,
+ timestamp);
+ }
+ StatsLog.write(
+ StatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
+ result);
+ }
+
+ @Override
+ public void onFailure(@AttentionFailureCodes int error) {
+ // the callback might have been cancelled already
+ if (!userState.mCurrentAttentionCheck.mIsFulfilled) {
+ callbackInternal.onFailure(error);
+ userState.mCurrentAttentionCheck.mIsFulfilled = true;
+ }
+
+ StatsLog.write(
+ StatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
+ error);
+ }
+ };
+
+ return new AttentionCheck(callbackInternal, iAttentionCallback);
+ }
+
/** Cancels the specified attention check. */
private void cancelAttentionCheck(AttentionCallbackInternal callbackInternal) {
synchronized (mLock) {
@@ -246,25 +265,13 @@ public class AttentionManagerService extends SystemService {
if (userState == null) {
return;
}
- if (userState.mService == null) {
- if (userState.mPendingAttentionCheck != null
- && userState.mPendingAttentionCheck.mCallbackInternal.equals(
- callbackInternal)) {
- userState.mPendingAttentionCheck.cancel(ATTENTION_FAILURE_UNKNOWN);
- userState.mPendingAttentionCheck = null;
- }
- return;
- }
- if (userState.mCurrentAttentionCheck.mCallbackInternal.equals(callbackInternal)) {
- try {
- userState.mService.cancelAttentionCheck(
- userState.mCurrentAttentionCheck.mIAttentionCallback);
- } catch (RemoteException e) {
- Slog.e(LOG_TAG, "Cannot call into the AttentionService");
- }
- } else {
+
+ if (!userState.mCurrentAttentionCheck.mCallbackInternal.equals(callbackInternal)) {
Slog.e(LOG_TAG, "Cannot cancel a non-current request");
+ return;
}
+
+ cancel(userState);
}
}
@@ -272,6 +279,9 @@ public class AttentionManagerService extends SystemService {
private void disableSelf() {
final long identity = Binder.clearCallingIdentity();
try {
+ if (DEBUG) {
+ Slog.d(LOG_TAG, "Disabling self.");
+ }
Settings.System.putInt(mContext.getContentResolver(), ADAPTIVE_SLEEP, 0);
} finally {
Binder.restoreCallingIdentity(identity);
@@ -428,34 +438,21 @@ public class AttentionManagerService extends SystemService {
}
}
- private static final class PendingAttentionCheck {
- private final AttentionCallbackInternal mCallbackInternal;
- private final Runnable mRunnable;
-
- PendingAttentionCheck(AttentionCallbackInternal callbackInternal,
- Runnable runnable) {
- mCallbackInternal = callbackInternal;
- mRunnable = runnable;
- }
-
- void cancel(@AttentionFailureCodes int failureCode) {
- mCallbackInternal.onFailure(failureCode);
- }
-
- void run() {
- mRunnable.run();
- }
- }
-
private static final class AttentionCheck {
private final AttentionCallbackInternal mCallbackInternal;
private final IAttentionCallback mIAttentionCallback;
+ private boolean mIsDispatched;
+ private boolean mIsFulfilled;
AttentionCheck(AttentionCallbackInternal callbackInternal,
IAttentionCallback iAttentionCallback) {
mCallbackInternal = callbackInternal;
mIAttentionCallback = iAttentionCallback;
}
+
+ void cancelInternal() {
+ mCallbackInternal.onFailure(ATTENTION_FAILURE_CANCELLED);
+ }
}
private static final class UserState {
@@ -469,11 +466,6 @@ public class AttentionManagerService extends SystemService {
@GuardedBy("mLock")
AttentionCheck mCurrentAttentionCheck;
@GuardedBy("mLock")
- boolean mCurrentAttentionCheckIsFulfilled;
-
- @GuardedBy("mLock")
- PendingAttentionCheck mPendingAttentionCheck;
- @GuardedBy("mLock")
AttentionCheckCache mAttentionCheckCache;
@UserIdInt
@@ -491,9 +483,17 @@ public class AttentionManagerService extends SystemService {
@GuardedBy("mLock")
private void handlePendingCallbackLocked() {
- if (mService != null && mPendingAttentionCheck != null) {
- mPendingAttentionCheck.run();
- mPendingAttentionCheck = null;
+ if (!mCurrentAttentionCheck.mIsDispatched) {
+ if (mService != null) {
+ try {
+ mService.checkAttention(mCurrentAttentionCheck.mIAttentionCallback);
+ mCurrentAttentionCheck.mIsDispatched = true;
+ } catch (RemoteException e) {
+ Slog.e(LOG_TAG, "Cannot call into the AttentionService");
+ }
+ } else {
+ mCurrentAttentionCheck.mCallbackInternal.onFailure(ATTENTION_FAILURE_UNKNOWN);
+ }
}
}
@@ -526,7 +526,6 @@ public class AttentionManagerService extends SystemService {
pw.printPair("userId", mUserId);
synchronized (mLock) {
pw.printPair("binding", mBinding);
- pw.printPair("isAttentionCheckPending", mPendingAttentionCheck != null);
}
}
@@ -586,14 +585,7 @@ public class AttentionManagerService extends SystemService {
// Callee is no longer interested in the attention check result - cancel.
case ATTENTION_CHECK_TIMEOUT: {
synchronized (mLock) {
- final UserState userState = peekCurrentUserStateLocked();
- if (userState != null) {
- // If not called back already.
- if (!userState.mCurrentAttentionCheckIsFulfilled) {
- cancel(userState, AttentionService.ATTENTION_FAILURE_TIMED_OUT);
- }
-
- }
+ cancel(peekCurrentUserStateLocked());
}
}
break;
@@ -604,19 +596,30 @@ public class AttentionManagerService extends SystemService {
}
}
- private void cancel(@NonNull UserState userState, @AttentionFailureCodes int failureCode) {
- if (userState.mService != null) {
- try {
- userState.mService.cancelAttentionCheck(
- userState.mCurrentAttentionCheck.mIAttentionCallback);
- } catch (RemoteException e) {
- Slog.e(LOG_TAG, "Unable to cancel attention check");
- }
+ private void cancel(UserState userState) {
+ if (userState == null || userState.mCurrentAttentionCheck == null) {
+ return;
+ }
- if (userState.mPendingAttentionCheck != null) {
- userState.mPendingAttentionCheck.cancel(failureCode);
- userState.mPendingAttentionCheck = null;
+ if (userState.mCurrentAttentionCheck.mIsFulfilled) {
+ if (DEBUG) {
+ Slog.d(LOG_TAG, "Trying to cancel the check that has been already fulfilled.");
}
+ return;
+ }
+ userState.mCurrentAttentionCheck.mIsFulfilled = true;
+
+ if (userState.mService == null) {
+ userState.mCurrentAttentionCheck.cancelInternal();
+ return;
+ }
+
+ try {
+ userState.mService.cancelAttentionCheck(
+ userState.mCurrentAttentionCheck.mIAttentionCallback);
+ } catch (RemoteException e) {
+ Slog.e(LOG_TAG, "Unable to cancel attention check");
+ userState.mCurrentAttentionCheck.cancelInternal();
}
}
@@ -626,7 +629,12 @@ public class AttentionManagerService extends SystemService {
if (userState == null) {
return;
}
- cancel(userState, ATTENTION_FAILURE_UNKNOWN);
+
+ cancel(userState);
+
+ if (userState.mService == null) {
+ return;
+ }
mContext.unbindService(userState.mConnection);
userState.mConnection.cleanupService();
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 32781a90348b..d58888a7c67b 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -855,8 +855,7 @@ public class AudioService extends IAudioService.Stub
public void onSystemReady() {
mSystemReady = true;
- sendMsg(mAudioHandler, MSG_LOAD_SOUND_EFFECTS, SENDMSG_QUEUE,
- 0, 0, null, 0);
+ scheduleLoadSoundEffects();
mDeviceBroker.onSystemReady();
@@ -1961,7 +1960,7 @@ public class AudioService extends IAudioService.Stub
return;
}
for (final int groupedStream : avg.getLegacyStreamTypes()) {
- setStreamVolume(stream, index, flags, callingPackage, callingPackage,
+ setStreamVolume(groupedStream, index, flags, callingPackage, callingPackage,
Binder.getCallingUid());
}
}
@@ -3225,6 +3224,14 @@ public class AudioService extends IAudioService.Stub
}
/**
+ * Schedule loading samples into the soundpool.
+ * This method can be overridden to schedule loading at a later time.
+ */
+ protected void scheduleLoadSoundEffects() {
+ sendMsg(mAudioHandler, MSG_LOAD_SOUND_EFFECTS, SENDMSG_QUEUE, 0, 0, null, 0);
+ }
+
+ /**
* Unloads samples from the sound pool.
* This method can be called to free some memory when
* sound effects are disabled.
@@ -3361,8 +3368,14 @@ public class AudioService extends IAudioService.Stub
.append(Binder.getCallingPid()).toString();
final boolean stateChanged = mDeviceBroker.setSpeakerphoneOn(on, eventSource);
if (stateChanged) {
- mContext.sendBroadcast(new Intent(AudioManager.ACTION_SPEAKERPHONE_STATE_CHANGED)
- .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY));
+ final long ident = Binder.clearCallingIdentity();
+ try {
+ mContext.sendBroadcastAsUser(
+ new Intent(AudioManager.ACTION_SPEAKERPHONE_STATE_CHANGED)
+ .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), UserHandle.ALL);
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
}
diff --git a/services/core/java/com/android/server/biometrics/AuthenticationClient.java b/services/core/java/com/android/server/biometrics/AuthenticationClient.java
index 7d4ac592a9df..f7278d2601c3 100644
--- a/services/core/java/com/android/server/biometrics/AuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/AuthenticationClient.java
@@ -129,13 +129,16 @@ public abstract class AuthenticationClient extends ClientMonitor {
boolean result = false;
try {
+ if (DEBUG) Slog.v(getLogTag(), "onAuthenticated(" + authenticated + ")"
+ + ", ID:" + identifier.getBiometricId()
+ + ", Owner: " + getOwnerString()
+ + ", isBP: " + isBiometricPrompt()
+ + ", listener: " + listener
+ + ", requireConfirmation: " + mRequireConfirmation);
+
if (authenticated) {
mAlreadyDone = true;
- if (DEBUG) Slog.v(getLogTag(), "onAuthenticated(" + getOwnerString()
- + ", ID:" + identifier.getBiometricId()
- + ", isBP: " + isBiometricPrompt()
- + ", listener: " + listener
- + ", requireConfirmation: " + mRequireConfirmation);
+
if (listener != null) {
vibrateSuccess();
}
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index 843ecac14b62..153133a6c669 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -41,6 +41,7 @@ import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricPrompt;
import android.hardware.biometrics.BiometricSourceType;
import android.hardware.biometrics.BiometricsProtoEnums;
+import android.hardware.biometrics.IBiometricConfirmDeviceCredentialCallback;
import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
import android.hardware.biometrics.IBiometricService;
import android.hardware.biometrics.IBiometricServiceReceiver;
@@ -85,6 +86,7 @@ import java.util.Random;
public class BiometricService extends SystemService {
private static final String TAG = "BiometricService";
+ private static final boolean DEBUG = true;
private static final int MSG_ON_TASK_STACK_CHANGED = 1;
private static final int MSG_ON_AUTHENTICATION_SUCCEEDED = 2;
@@ -96,6 +98,9 @@ public class BiometricService extends SystemService {
private static final int MSG_ON_READY_FOR_AUTHENTICATION = 8;
private static final int MSG_AUTHENTICATE = 9;
private static final int MSG_CANCEL_AUTHENTICATION = 10;
+ private static final int MSG_ON_CONFIRM_DEVICE_CREDENTIAL_SUCCESS = 11;
+ private static final int MSG_ON_CONFIRM_DEVICE_CREDENTIAL_ERROR = 12;
+ private static final int MSG_REGISTER_CANCELLATION_CALLBACK = 13;
private static final int[] FEATURE_ID = {
TYPE_FINGERPRINT,
@@ -128,8 +133,12 @@ public class BiometricService extends SystemService {
* Authentication is successful, but we're waiting for the user to press "confirm" button.
*/
private static final int STATE_AUTH_PENDING_CONFIRM = 5;
+ /**
+ * Biometric authentication was canceled, but the device is now showing ConfirmDeviceCredential
+ */
+ private static final int STATE_BIOMETRIC_AUTH_CANCELED_SHOWING_CDC = 6;
- private final class AuthSession {
+ private final class AuthSession implements IBinder.DeathRecipient {
// Map of Authenticator/Cookie pairs. We expect to receive the cookies back from
// <Biometric>Services before we can start authenticating. Pairs that have been returned
// are moved to mModalitiesMatched.
@@ -164,10 +173,14 @@ public class BiometricService extends SystemService {
// Timestamp when hardware authentication occurred
private long mAuthenticatedTimeMs;
+ // TODO(b/123378871): Remove when moved.
+ private IBiometricConfirmDeviceCredentialCallback mConfirmDeviceCredentialCallback;
+
AuthSession(HashMap<Integer, Integer> modalities, IBinder token, long sessionId,
int userId, IBiometricServiceReceiver receiver, String opPackageName,
Bundle bundle, int callingUid, int callingPid, int callingUserId,
- int modality, boolean requireConfirmation) {
+ int modality, boolean requireConfirmation,
+ IBiometricConfirmDeviceCredentialCallback callback) {
mModalitiesWaiting = modalities;
mToken = token;
mSessionId = sessionId;
@@ -180,12 +193,25 @@ public class BiometricService extends SystemService {
mCallingUserId = callingUserId;
mModality = modality;
mRequireConfirmation = requireConfirmation;
+ mConfirmDeviceCredentialCallback = callback;
+
+ if (isFromConfirmDeviceCredential()) {
+ try {
+ token.linkToDeath(this, 0 /* flags */);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Unable to link to death", e);
+ }
+ }
}
boolean isCrypto() {
return mSessionId != 0;
}
+ boolean isFromConfirmDeviceCredential() {
+ return mBundle.getBoolean(BiometricPrompt.KEY_FROM_CONFIRM_DEVICE_CREDENTIAL, false);
+ }
+
boolean containsCookie(int cookie) {
if (mModalitiesWaiting != null && mModalitiesWaiting.containsValue(cookie)) {
return true;
@@ -195,6 +221,25 @@ public class BiometricService extends SystemService {
}
return false;
}
+
+ // TODO(b/123378871): Remove when moved.
+ @Override
+ public void binderDied() {
+ mHandler.post(() -> {
+ Slog.e(TAG, "Binder died, killing ConfirmDeviceCredential");
+ if (mConfirmDeviceCredentialCallback == null) {
+ Slog.e(TAG, "Callback is null");
+ return;
+ }
+
+ try {
+ mConfirmDeviceCredentialCallback.cancel();
+ mConfirmDeviceCredentialCallback = null;
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Unable to send cancel", e);
+ }
+ });
+ }
}
private final class BiometricTaskStackListener extends TaskStackListener {
@@ -234,6 +279,14 @@ public class BiometricService extends SystemService {
private AuthSession mCurrentAuthSession;
private AuthSession mPendingAuthSession;
+ // TODO(b/123378871): Remove when moved.
+ // When BiometricPrompt#setAllowDeviceCredentials is set to true, we need to store the
+ // client (app) receiver. BiometricService internally launches CDCA which invokes
+ // BiometricService to start authentication (normal path). When auth is success/rejected,
+ // CDCA will use an aidl method to poke BiometricService - the result will then be forwarded
+ // to this receiver.
+ private IBiometricServiceReceiver mConfirmDeviceCredentialReceiver;
+
private final Handler mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
@@ -311,7 +364,8 @@ public class BiometricService extends SystemService {
(Bundle) args.arg5 /* bundle */,
args.argi2 /* callingUid */,
args.argi3 /* callingPid */,
- args.argi4 /* callingUserId */);
+ args.argi4 /* callingUserId */,
+ (IBiometricConfirmDeviceCredentialCallback) args.arg6 /* callback */);
args.recycle();
break;
}
@@ -325,7 +379,28 @@ public class BiometricService extends SystemService {
break;
}
+ case MSG_ON_CONFIRM_DEVICE_CREDENTIAL_SUCCESS: {
+ handleOnConfirmDeviceCredentialSuccess();
+ break;
+ }
+
+ case MSG_ON_CONFIRM_DEVICE_CREDENTIAL_ERROR: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ handleOnConfirmDeviceCredentialError(
+ args.argi1 /* error */,
+ (String) args.arg1 /* errorMsg */);
+ args.recycle();
+ break;
+ }
+
+ case MSG_REGISTER_CANCELLATION_CALLBACK: {
+ handleRegisterCancellationCallback(
+ (IBiometricConfirmDeviceCredentialCallback) msg.obj /* callback */);
+ break;
+ }
+
default:
+ Slog.e(TAG, "Unknown message: " + msg);
break;
}
}
@@ -533,14 +608,6 @@ public class BiometricService extends SystemService {
* cancelAuthentication() can go to the right place.
*/
private final class BiometricServiceWrapper extends IBiometricService.Stub {
- // TODO(b/123378871): Remove when moved.
- // When BiometricPrompt#setAllowDeviceCredentials is set to true, we need to store the
- // client (app) receiver. BiometricService internally launches CDCA which invokes
- // BiometricService to start authentication (normal path). When auth is success/rejected,
- // CDCA will use an aidl method to poke BiometricService - the result will then be forwarded
- // to this receiver.
- private IBiometricServiceReceiver mConfirmDeviceCredentialReceiver;
-
@Override // Binder call
public void onReadyForAuthentication(int cookie, boolean requireConfirmation, int userId) {
checkInternalPermission();
@@ -554,12 +621,18 @@ public class BiometricService extends SystemService {
@Override // Binder call
public void authenticate(IBinder token, long sessionId, int userId,
- IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle)
+ IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle,
+ IBiometricConfirmDeviceCredentialCallback callback)
throws RemoteException {
final int callingUid = Binder.getCallingUid();
final int callingPid = Binder.getCallingPid();
final int callingUserId = UserHandle.getCallingUserId();
+ // TODO(b/123378871): Remove when moved.
+ if (callback != null) {
+ checkInternalPermission();
+ }
+
// In the BiometricServiceBase, check do the AppOps and foreground check.
if (userId == callingUserId) {
// Check the USE_BIOMETRIC permission here.
@@ -576,6 +649,12 @@ public class BiometricService extends SystemService {
return;
}
+ final boolean isFromConfirmDeviceCredential =
+ bundle.getBoolean(BiometricPrompt.KEY_FROM_CONFIRM_DEVICE_CREDENTIAL, false);
+ if (isFromConfirmDeviceCredential) {
+ checkInternalPermission();
+ }
+
// Check the usage of this in system server. Need to remove this check if it becomes
// a public API.
final boolean useDefaultTitle =
@@ -632,6 +711,7 @@ public class BiometricService extends SystemService {
args.argi2 = callingUid;
args.argi3 = callingPid;
args.argi4 = callingUserId;
+ args.arg6 = callback;
mHandler.obtainMessage(MSG_AUTHENTICATE, args).sendToTarget();
}
@@ -639,35 +719,30 @@ public class BiometricService extends SystemService {
@Override // Binder call
public void onConfirmDeviceCredentialSuccess() {
checkInternalPermission();
- mHandler.post(() -> {
- if (mConfirmDeviceCredentialReceiver == null) {
- Slog.w(TAG, "onCDCASuccess null!");
- return;
- }
- try {
- mConfirmDeviceCredentialReceiver.onAuthenticationSucceeded();
- } catch (RemoteException e) {
- Slog.e(TAG, "RemoteException", e);
- }
- mConfirmDeviceCredentialReceiver = null;
- });
+
+ mHandler.sendEmptyMessage(MSG_ON_CONFIRM_DEVICE_CREDENTIAL_SUCCESS);
}
@Override // Binder call
public void onConfirmDeviceCredentialError(int error, String message) {
checkInternalPermission();
- mHandler.post(() -> {
- if (mConfirmDeviceCredentialReceiver == null) {
- Slog.w(TAG, "onCDCAError null! Error: " + error + " " + message);
- return;
- }
- try {
- mConfirmDeviceCredentialReceiver.onError(error, message);
- } catch (RemoteException e) {
- Slog.e(TAG, "RemoteException", e);
- }
- mConfirmDeviceCredentialReceiver = null;
- });
+
+ SomeArgs args = SomeArgs.obtain();
+ args.argi1 = error;
+ args.arg1 = message;
+ mHandler.obtainMessage(MSG_ON_CONFIRM_DEVICE_CREDENTIAL_ERROR, args).sendToTarget();
+ }
+
+ @Override // Binder call
+ public void registerCancellationCallback(
+ IBiometricConfirmDeviceCredentialCallback callback) {
+ // TODO(b/123378871): Remove when moved.
+ // This callback replaces the one stored in the current session. If the session is null
+ // we can ignore this, since it means ConfirmDeviceCredential was launched by something
+ // else (not BiometricPrompt)
+ checkInternalPermission();
+
+ mHandler.obtainMessage(MSG_REGISTER_CANCELLATION_CALLBACK, callback).sendToTarget();
}
@Override // Binder call
@@ -1104,6 +1179,52 @@ public class BiometricService extends SystemService {
}
}
+ private void handleOnConfirmDeviceCredentialSuccess() {
+ if (mConfirmDeviceCredentialReceiver == null) {
+ Slog.w(TAG, "onCDCASuccess null!");
+ return;
+ }
+ try {
+ mActivityTaskManager.unregisterTaskStackListener(mTaskStackListener);
+ mConfirmDeviceCredentialReceiver.onAuthenticationSucceeded();
+ if (mCurrentAuthSession != null) {
+ mCurrentAuthSession.mState = STATE_AUTH_IDLE;
+ mCurrentAuthSession = null;
+ }
+ } catch (RemoteException e) {
+ Slog.e(TAG, "RemoteException", e);
+ }
+ mConfirmDeviceCredentialReceiver = null;
+ }
+
+ private void handleOnConfirmDeviceCredentialError(int error, String message) {
+ if (mConfirmDeviceCredentialReceiver == null) {
+ Slog.w(TAG, "onCDCAError null! Error: " + error + " " + message);
+ return;
+ }
+ try {
+ mActivityTaskManager.unregisterTaskStackListener(mTaskStackListener);
+ mConfirmDeviceCredentialReceiver.onError(error, message);
+ if (mCurrentAuthSession != null) {
+ mCurrentAuthSession.mState = STATE_AUTH_IDLE;
+ mCurrentAuthSession = null;
+ }
+ } catch (RemoteException e) {
+ Slog.e(TAG, "RemoteException", e);
+ }
+ mConfirmDeviceCredentialReceiver = null;
+ }
+
+ private void handleRegisterCancellationCallback(
+ IBiometricConfirmDeviceCredentialCallback callback) {
+ if (mCurrentAuthSession == null) {
+ Slog.d(TAG, "Current auth session null");
+ return;
+ }
+ Slog.d(TAG, "Updating cancel callback");
+ mCurrentAuthSession.mConfirmDeviceCredentialCallback = callback;
+ }
+
private void handleOnError(int cookie, int error, String message) {
Slog.d(TAG, "Error: " + error + " cookie: " + cookie);
// Errors can either be from the current auth session or the pending auth session.
@@ -1114,7 +1235,18 @@ public class BiometricService extends SystemService {
// of their intended receivers.
try {
if (mCurrentAuthSession != null && mCurrentAuthSession.containsCookie(cookie)) {
- if (mCurrentAuthSession.mState == STATE_AUTH_STARTED) {
+
+ if (mCurrentAuthSession.isFromConfirmDeviceCredential()) {
+ // If we were invoked by ConfirmDeviceCredential, do not delete the current
+ // auth session since we still need to respond to cancel signal while
+ if (DEBUG) Slog.d(TAG, "From CDC, transition to CANCELED_SHOWING_CDC state");
+
+ // Send the error to ConfirmDeviceCredential so that it goes to Pin/Pattern/Pass
+ // screen
+ mCurrentAuthSession.mClientReceiver.onError(error, message);
+ mCurrentAuthSession.mState = STATE_BIOMETRIC_AUTH_CANCELED_SHOWING_CDC;
+ mStatusBarService.hideBiometricDialog();
+ } else if (mCurrentAuthSession.mState == STATE_AUTH_STARTED) {
mStatusBarService.onBiometricError(message);
if (error == BiometricConstants.BIOMETRIC_ERROR_CANCELED) {
mActivityTaskManager.unregisterTaskStackListener(
@@ -1214,9 +1346,16 @@ public class BiometricService extends SystemService {
KeyStore.getInstance().addAuthToken(mCurrentAuthSession.mTokenEscrow);
mCurrentAuthSession.mClientReceiver.onAuthenticationSucceeded();
}
- mActivityTaskManager.unregisterTaskStackListener(mTaskStackListener);
- mCurrentAuthSession.mState = STATE_AUTH_IDLE;
- mCurrentAuthSession = null;
+
+ // Do not clean up yet if we are from ConfirmDeviceCredential. We should be in the
+ // STATE_BIOMETRIC_AUTH_CANCELED_SHOWING_CDC. The session should only be removed when
+ // ConfirmDeviceCredential is confirmed or canceled.
+ // TODO(b/123378871): Remove when moved
+ if (!mCurrentAuthSession.isFromConfirmDeviceCredential()) {
+ mActivityTaskManager.unregisterTaskStackListener(mTaskStackListener);
+ mCurrentAuthSession.mState = STATE_AUTH_IDLE;
+ mCurrentAuthSession = null;
+ }
} catch (RemoteException e) {
Slog.e(TAG, "Remote exception", e);
}
@@ -1235,7 +1374,8 @@ public class BiometricService extends SystemService {
mCurrentAuthSession.mCallingUid,
mCurrentAuthSession.mCallingPid,
mCurrentAuthSession.mCallingUserId,
- mCurrentAuthSession.mModality);
+ mCurrentAuthSession.mModality,
+ mCurrentAuthSession.mConfirmDeviceCredentialCallback);
}
private void handleOnReadyForAuthentication(int cookie, boolean requireConfirmation,
@@ -1290,7 +1430,8 @@ public class BiometricService extends SystemService {
private void handleAuthenticate(IBinder token, long sessionId, int userId,
IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle,
- int callingUid, int callingPid, int callingUserId) {
+ int callingUid, int callingPid, int callingUserId,
+ IBiometricConfirmDeviceCredentialCallback callback) {
mHandler.post(() -> {
final Pair<Integer, Integer> result = checkAndGetBiometricModality(userId);
@@ -1328,7 +1469,7 @@ public class BiometricService extends SystemService {
// Start preparing for authentication. Authentication starts when
// all modalities requested have invoked onReadyForAuthentication.
authenticateInternal(token, sessionId, userId, receiver, opPackageName, bundle,
- callingUid, callingPid, callingUserId, modality);
+ callingUid, callingPid, callingUserId, modality, callback);
});
}
@@ -1343,7 +1484,8 @@ public class BiometricService extends SystemService {
*/
private void authenticateInternal(IBinder token, long sessionId, int userId,
IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle,
- int callingUid, int callingPid, int callingUserId, int modality) {
+ int callingUid, int callingPid, int callingUserId, int modality,
+ IBiometricConfirmDeviceCredentialCallback callback) {
try {
boolean requireConfirmation = bundle.getBoolean(
BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true /* default */);
@@ -1363,7 +1505,7 @@ public class BiometricService extends SystemService {
authenticators.put(modality, cookie);
mPendingAuthSession = new AuthSession(authenticators, token, sessionId, userId,
receiver, opPackageName, bundle, callingUid, callingPid, callingUserId,
- modality, requireConfirmation);
+ modality, requireConfirmation, callback);
mPendingAuthSession.mState = STATE_AUTH_CALLED;
// No polymorphism :(
if ((modality & TYPE_FINGERPRINT) != 0) {
@@ -1390,10 +1532,23 @@ public class BiometricService extends SystemService {
return;
}
- // We need to check the current authenticators state. If we're pending confirm
- // or idle, we need to dismiss the dialog and send an ERROR_CANCELED to the client,
- // since we won't be getting an onError from the driver.
- if (mCurrentAuthSession != null && mCurrentAuthSession.mState != STATE_AUTH_STARTED) {
+ if (mCurrentAuthSession != null
+ && mCurrentAuthSession.mState == STATE_BIOMETRIC_AUTH_CANCELED_SHOWING_CDC) {
+ if (DEBUG) Slog.d(TAG, "Cancel received while ConfirmDeviceCredential showing");
+ try {
+ mCurrentAuthSession.mConfirmDeviceCredentialCallback.cancel();
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Unable to cancel ConfirmDeviceCredential", e);
+ }
+
+ // TODO(b/123378871): Remove when moved. Piggy back on this for now to clean up.
+ handleOnConfirmDeviceCredentialError(BiometricConstants.BIOMETRIC_ERROR_CANCELED,
+ getContext().getString(R.string.biometric_error_canceled));
+ } else if (mCurrentAuthSession != null
+ && mCurrentAuthSession.mState != STATE_AUTH_STARTED) {
+ // We need to check the current authenticators state. If we're pending confirm
+ // or idle, we need to dismiss the dialog and send an ERROR_CANCELED to the client,
+ // since we won't be getting an onError from the driver.
try {
// Send error to client
mCurrentAuthSession.mClientReceiver.onError(
@@ -1409,11 +1564,22 @@ public class BiometricService extends SystemService {
Slog.e(TAG, "Remote exception", e);
}
} else {
- cancelInternal(token, opPackageName, true /* fromClient */);
+ boolean fromCDC = false;
+ if (mCurrentAuthSession != null) {
+ fromCDC = mCurrentAuthSession.mBundle.getBoolean(
+ BiometricPrompt.KEY_FROM_CONFIRM_DEVICE_CREDENTIAL, false);
+ }
+
+ if (fromCDC) {
+ if (DEBUG) Slog.d(TAG, "Cancelling from CDC");
+ cancelInternal(token, opPackageName, false /* fromClient */);
+ } else {
+ cancelInternal(token, opPackageName, true /* fromClient */);
+ }
+
}
}
-
void cancelInternal(IBinder token, String opPackageName, boolean fromClient) {
final int callingUid = Binder.getCallingUid();
final int callingPid = Binder.getCallingPid();
diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java
index 527539d8ce0d..7733d6779e48 100644
--- a/services/core/java/com/android/server/camera/CameraServiceProxy.java
+++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java
@@ -50,7 +50,7 @@ import java.util.List;
import java.util.Set;
/**
- * CameraServiceProxy is the system_server analog to the camera service running in mediaserver.
+ * CameraServiceProxy is the system_server analog to the camera service running in cameraserver.
*
* @hide
*/
@@ -74,6 +74,7 @@ public class CameraServiceProxy extends SystemService
private static final int MSG_SWITCH_USER = 1;
private static final int RETRY_DELAY_TIME = 20; //ms
+ private static final int RETRY_TIMES = 30;
// Maximum entries to keep in usage history before dumping out
private static final int MAX_USAGE_HISTORY = 100;
@@ -171,7 +172,7 @@ public class CameraServiceProxy extends SystemService
" camera service UID!");
return;
}
- notifySwitchWithRetries(30);
+ notifySwitchWithRetries(RETRY_TIMES);
}
@Override
@@ -242,7 +243,8 @@ public class CameraServiceProxy extends SystemService
public void onStartUser(int userHandle) {
synchronized(mLock) {
if (mEnabledCameraUsers == null) {
- // Initialize mediaserver, or update mediaserver if we are recovering from a crash.
+ // Initialize cameraserver, or update cameraserver if we are recovering
+ // from a crash.
switchUserLocked(userHandle);
}
}
@@ -324,9 +326,9 @@ public class CameraServiceProxy extends SystemService
Set<Integer> currentUserHandles = getEnabledUserHandles(userHandle);
mLastUser = userHandle;
if (mEnabledCameraUsers == null || !mEnabledCameraUsers.equals(currentUserHandles)) {
- // Some user handles have been added or removed, update mediaserver.
+ // Some user handles have been added or removed, update cameraserver.
mEnabledCameraUsers = currentUserHandles;
- notifyMediaserverLocked(ICameraService.EVENT_USER_SWITCHED, currentUserHandles);
+ notifySwitchWithRetriesLocked(RETRY_TIMES);
}
}
@@ -343,12 +345,16 @@ public class CameraServiceProxy extends SystemService
private void notifySwitchWithRetries(int retries) {
synchronized(mLock) {
- if (mEnabledCameraUsers == null) {
- return;
- }
- if (notifyMediaserverLocked(ICameraService.EVENT_USER_SWITCHED, mEnabledCameraUsers)) {
- retries = 0;
- }
+ notifySwitchWithRetriesLocked(retries);
+ }
+ }
+
+ private void notifySwitchWithRetriesLocked(int retries) {
+ if (mEnabledCameraUsers == null) {
+ return;
+ }
+ if (notifyCameraserverLocked(ICameraService.EVENT_USER_SWITCHED, mEnabledCameraUsers)) {
+ retries = 0;
}
if (retries <= 0) {
return;
@@ -358,13 +364,13 @@ public class CameraServiceProxy extends SystemService
RETRY_DELAY_TIME);
}
- private boolean notifyMediaserverLocked(int eventType, Set<Integer> updatedUserHandles) {
- // Forward the user switch event to the native camera service running in the mediaserver
+ private boolean notifyCameraserverLocked(int eventType, Set<Integer> updatedUserHandles) {
+ // Forward the user switch event to the native camera service running in the cameraserver
// process.
if (mCameraServiceRaw == null) {
IBinder cameraServiceBinder = getBinderService(CAMERA_SERVICE_BINDER_NAME);
if (cameraServiceBinder == null) {
- Slog.w(TAG, "Could not notify mediaserver, camera service not available.");
+ Slog.w(TAG, "Could not notify cameraserver, camera service not available.");
return false; // Camera service not active, cannot evict user clients.
}
try {
@@ -380,7 +386,7 @@ public class CameraServiceProxy extends SystemService
try {
mCameraServiceRaw.notifySystemEvent(eventType, toArray(updatedUserHandles));
} catch (RemoteException e) {
- Slog.w(TAG, "Could not notify mediaserver, remote exception: " + e);
+ Slog.w(TAG, "Could not notify cameraserver, remote exception: " + e);
// Not much we can do if camera service is dead.
return false;
}
diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
index da1360d59539..b6946023e870 100644
--- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java
+++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java
@@ -469,7 +469,10 @@ public class PermissionMonitor {
*/
@VisibleForTesting
void sendPackagePermissionsToNetd(SparseIntArray netdPermissionsAppIds) {
-
+ if (mNetd == null) {
+ Log.e(TAG, "Failed to get the netd service");
+ return;
+ }
ArrayList<Integer> allPermissionAppIds = new ArrayList<>();
ArrayList<Integer> internetPermissionAppIds = new ArrayList<>();
ArrayList<Integer> updateStatsPermissionAppIds = new ArrayList<>();
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 3010324488b8..3abd0ba29871 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -1269,21 +1269,14 @@ public final class DisplayManagerService extends SystemService {
return null;
}
- private boolean screenshotInternal(int displayId, Surface outSurface) {
+ private SurfaceControl.ScreenshotGraphicBuffer screenshotInternal(int displayId) {
final IBinder token = getDisplayToken(displayId);
if (token == null) {
- return false;
+ return null;
}
- final SurfaceControl.ScreenshotGraphicBuffer gb =
- SurfaceControl.screenshotToBufferWithSecureLayersUnsafe(
+ return SurfaceControl.screenshotToBufferWithSecureLayersUnsafe(
token, new Rect(), 0 /* width */, 0 /* height */,
false /* useIdentityTransform */, 0 /* rotation */);
- try {
- outSurface.attachAndQueueBuffer(gb.getGraphicBuffer());
- } catch (RuntimeException e) {
- Slog.w(TAG, "Failed to take screenshot - " + e.getMessage());
- }
- return true;
}
@VisibleForTesting
@@ -2354,8 +2347,8 @@ public final class DisplayManagerService extends SystemService {
}
@Override
- public boolean screenshot(int displayId, Surface outSurface) {
- return screenshotInternal(displayId, outSurface);
+ public SurfaceControl.ScreenshotGraphicBuffer screenshot(int displayId) {
+ return screenshotInternal(displayId);
}
@Override
diff --git a/services/core/java/com/android/server/display/color/ColorDisplayService.java b/services/core/java/com/android/server/display/color/ColorDisplayService.java
index 9590f8143713..a7d0a5c706b6 100644
--- a/services/core/java/com/android/server/display/color/ColorDisplayService.java
+++ b/services/core/java/com/android/server/display/color/ColorDisplayService.java
@@ -461,7 +461,9 @@ public final class ColorDisplayService extends SystemService {
.setMatrix(mNightDisplayTintController.getColorTemperatureSetting());
}
- updateDisplayWhiteBalanceStatus();
+ if (mDisplayWhiteBalanceTintController.isAvailable(getContext())) {
+ updateDisplayWhiteBalanceStatus();
+ }
final DisplayTransformManager dtm = getLocalService(DisplayTransformManager.class);
dtm.setColorMode(mode, mNightDisplayTintController.getMatrix());
@@ -624,7 +626,11 @@ public final class ColorDisplayService extends SystemService {
return false;
}
return Secure.getIntForUser(getContext().getContentResolver(),
- Secure.DISPLAY_WHITE_BALANCE_ENABLED, 0, mCurrentUser) == 1;
+ Secure.DISPLAY_WHITE_BALANCE_ENABLED,
+ getContext().getResources()
+ .getBoolean(R.bool.config_displayWhiteBalanceEnabledDefault) ? 1
+ : 0,
+ mCurrentUser) == 1;
}
private boolean isDeviceColorManagedInternal() {
diff --git a/services/core/java/com/android/server/display/color/DisplayTransformManager.java b/services/core/java/com/android/server/display/color/DisplayTransformManager.java
index 026837f07356..d6aa2ba02f1f 100644
--- a/services/core/java/com/android/server/display/color/DisplayTransformManager.java
+++ b/services/core/java/com/android/server/display/color/DisplayTransformManager.java
@@ -28,6 +28,7 @@ import android.util.Slog;
import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import java.util.Arrays;
@@ -73,15 +74,27 @@ public class DisplayTransformManager {
private static final int SURFACE_FLINGER_TRANSACTION_DISPLAY_COLOR = 1023;
private static final int SURFACE_FLINGER_TRANSACTION_QUERY_COLOR_MANAGED = 1030;
- private static final String PERSISTENT_PROPERTY_SATURATION = "persist.sys.sf.color_saturation";
- private static final String PERSISTENT_PROPERTY_DISPLAY_COLOR = "persist.sys.sf.native_mode";
+ @VisibleForTesting
+ static final String PERSISTENT_PROPERTY_SATURATION = "persist.sys.sf.color_saturation";
+ @VisibleForTesting
+ static final String PERSISTENT_PROPERTY_DISPLAY_COLOR = "persist.sys.sf.native_mode";
private static final float COLOR_SATURATION_NATURAL = 1.0f;
private static final float COLOR_SATURATION_BOOSTED = 1.1f;
+ /**
+ * Display color modes defined by DisplayColorSetting in
+ * frameworks/native/services/surfaceflinger/SurfaceFlinger.h.
+ */
private static final int DISPLAY_COLOR_MANAGED = 0;
private static final int DISPLAY_COLOR_UNMANAGED = 1;
private static final int DISPLAY_COLOR_ENHANCED = 2;
+ /**
+ * Display color mode range reserved for vendor customizations by the RenderIntent definition in
+ * hardware/interfaces/graphics/common/1.1/types.hal.
+ */
+ private static final int VENDOR_MODE_RANGE_MIN = 256; // 0x100
+ private static final int VENDOR_MODE_RANGE_MAX = 511; // 0x1ff
/**
* Map of level -> color transformation matrix.
@@ -257,7 +270,11 @@ public class DisplayTransformManager {
} else if (colorMode == ColorDisplayManager.COLOR_MODE_AUTOMATIC) {
applySaturation(COLOR_SATURATION_NATURAL);
setDisplayColor(DISPLAY_COLOR_ENHANCED);
+ } else if (colorMode >= VENDOR_MODE_RANGE_MIN && colorMode <= VENDOR_MODE_RANGE_MAX) {
+ applySaturation(COLOR_SATURATION_NATURAL);
+ setDisplayColor(colorMode);
}
+
setColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY, nightDisplayMatrix);
updateConfiguration();
diff --git a/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java b/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java
index e7181e23f15d..c32ae97da14f 100644
--- a/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java
+++ b/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java
@@ -271,7 +271,7 @@ public class DisplayWhiteBalanceController implements
final long time = System.currentTimeMillis();
float ambientColorTemperature = mColorTemperatureFilter.getEstimate(time);
- if (mAmbientToDisplayColorTemperatureSpline != null) {
+ if (mAmbientToDisplayColorTemperatureSpline != null && ambientColorTemperature != -1.0f) {
ambientColorTemperature =
mAmbientToDisplayColorTemperatureSpline.interpolate(ambientColorTemperature);
}
diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java
index 647727f795da..0f73f379900b 100644
--- a/services/core/java/com/android/server/gpu/GpuService.java
+++ b/services/core/java/com/android/server/gpu/GpuService.java
@@ -36,6 +36,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.provider.DeviceConfig;
import android.provider.Settings;
import android.util.Base64;
import android.util.Slog;
@@ -69,9 +70,11 @@ public class GpuService extends SystemService {
private final String mDriverPackageName;
private final PackageManager mPackageManager;
private final Object mLock = new Object();
+ private final Object mDeviceConfigLock = new Object();
private ContentResolver mContentResolver;
private long mGameDriverVersionCode;
private SettingsObserver mSettingsObserver;
+ private DeviceConfigListener mDeviceConfigListener;
@GuardedBy("mLock")
private Blacklists mBlacklists;
@@ -101,10 +104,11 @@ public class GpuService extends SystemService {
public void onBootPhase(int phase) {
if (phase == PHASE_BOOT_COMPLETED) {
mContentResolver = mContext.getContentResolver();
- mSettingsObserver = new SettingsObserver();
if (mDriverPackageName == null || mDriverPackageName.isEmpty()) {
return;
}
+ mSettingsObserver = new SettingsObserver();
+ mDeviceConfigListener = new DeviceConfigListener();
fetchGameDriverPackageProperties();
processBlacklists();
setBlacklist();
@@ -134,6 +138,24 @@ public class GpuService extends SystemService {
}
}
+ private final class DeviceConfigListener implements DeviceConfig.OnPropertyChangedListener {
+
+ DeviceConfigListener() {
+ super();
+ DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_GAME_DRIVER,
+ mContext.getMainExecutor(), this);
+ }
+ @Override
+ public void onPropertyChanged(String namespace, String name, String value) {
+ synchronized (mDeviceConfigLock) {
+ if (Settings.Global.GAME_DRIVER_BLACKLISTS.equals(name)) {
+ parseBlacklists(value != null ? value : "");
+ setBlacklist();
+ }
+ }
+ }
+ }
+
private final class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
@@ -229,13 +251,17 @@ public class GpuService extends SystemService {
}
private void processBlacklists() {
- // TODO(b/121350991) Switch to DeviceConfig with property listener.
- String base64String =
- Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS);
- if (base64String == null || base64String.isEmpty()) {
- return;
+ String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER,
+ Settings.Global.GAME_DRIVER_BLACKLISTS);
+ if (base64String == null) {
+ base64String =
+ Settings.Global.getString(mContentResolver,
+ Settings.Global.GAME_DRIVER_BLACKLISTS);
}
+ parseBlacklists(base64String != null ? base64String : "");
+ }
+ private void parseBlacklists(String base64String) {
synchronized (mLock) {
// Reset all blacklists
mBlacklists = null;
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 647e95284534..d360a6362464 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -231,6 +231,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
Context.BIND_AUTO_CREATE
| Context.BIND_TREAT_LIKE_ACTIVITY
| Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_INCLUDE_CAPABILITIES
| Context.BIND_SHOWING_UI
| Context.BIND_SCHEDULE_LIKE_TOP_APP;
@@ -4100,13 +4101,15 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
// ----------------------------------------------------------------------
- boolean setInputMethodEnabledLocked(String id, boolean enabled) {
- // Make sure this is a valid input method.
- InputMethodInfo imm = mMethodMap.get(id);
- if (imm == null) {
- throw new IllegalArgumentException("Unknown id: " + mCurMethodId);
- }
-
+ /**
+ * Enable or disable the given IME by updating {@link Settings.Secure#ENABLED_INPUT_METHODS}.
+ *
+ * @param id ID of the IME is to be manipulated. It is OK to pass IME ID that is currently not
+ * recognized by the system.
+ * @param enabled {@code true} if {@code id} needs to be enabled.
+ * @return {@code true} if the IME was previously enabled. {@code false} otherwise.
+ */
+ private boolean setInputMethodEnabledLocked(String id, boolean enabled) {
List<Pair<String, ArrayList<String>>> enabledInputMethodsList = mSettings
.getEnabledInputMethodsAndSubtypeListLocked();
@@ -4696,6 +4699,14 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
if (!userHasDebugPriv(mSettings.getCurrentUserId(), shellCommand)) {
return ShellCommandResult.SUCCESS;
}
+ // Make sure this is a valid input method.
+ if (enabled && !mMethodMap.containsKey(id)) {
+ final PrintWriter error = shellCommand.getErrPrintWriter();
+ error.print("Unknown input method ");
+ error.print(id);
+ error.println(" cannot be enabled");
+ return ShellCommandResult.SUCCESS;
+ }
previouslyEnabled = setInputMethodEnabledLocked(id, enabled);
}
final PrintWriter pr = shellCommand.getOutPrintWriter();
diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java
index 64c23affcf8c..4ef37a2e484d 100644
--- a/services/core/java/com/android/server/job/JobStore.java
+++ b/services/core/java/com/android/server/job/JobStore.java
@@ -543,6 +543,9 @@ public final class JobStore {
if (jobStatus.hasBatteryNotLowConstraint()) {
out.attribute(null, "battery-not-low", Boolean.toString(true));
}
+ if (jobStatus.hasStorageNotLowConstraint()) {
+ out.attribute(null, "storage-not-low", Boolean.toString(true));
+ }
out.endTag(null, XML_TAG_PARAMS_CONSTRAINTS);
}
@@ -903,6 +906,15 @@ public final class JobStore {
jobBuilder.setExtras(extras);
parser.nextTag(); // Consume </extras>
+ final JobInfo builtJob;
+ try {
+ builtJob = jobBuilder.build();
+ } catch (Exception e) {
+ Slog.w(TAG, "Unable to build job from XML, ignoring: "
+ + jobBuilder.summarize());
+ return null;
+ }
+
// Migrate sync jobs forward from earlier, incomplete representation
if ("android".equals(sourcePackageName)
&& extras != null
@@ -986,6 +998,14 @@ public final class JobStore {
if (val != null) {
jobBuilder.setRequiresCharging(true);
}
+ val = parser.getAttributeValue(null, "battery-not-low");
+ if (val != null) {
+ jobBuilder.setRequiresBatteryNotLow(true);
+ }
+ val = parser.getAttributeValue(null, "storage-not-low");
+ if (val != null) {
+ jobBuilder.setRequiresStorageNotLow(true);
+ }
}
/**
diff --git a/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java
index ab75b21e41ca..2948aafbb931 100644
--- a/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java
+++ b/services/core/java/com/android/server/location/GnssNetworkConnectivityHandler.java
@@ -199,29 +199,27 @@ class GnssNetworkConnectivityHandler {
}
/**
- * called from native code to update AGPS status
+ * Called from native code to update AGPS connection status, or to request or release a SUPL
+ * connection.
+ *
+ * <p>Note: {@code suplIpAddr} parameter is not present from IAGnssCallback.hal@2.0 onwards
+ * and is set to {@code null}.
*/
void onReportAGpsStatus(int agpsType, int agpsStatus, byte[] suplIpAddr) {
+ if (DEBUG) Log.d(TAG, "AGPS_DATA_CONNECTION: " + agpsDataConnStatusAsString(agpsStatus));
switch (agpsStatus) {
case GPS_REQUEST_AGPS_DATA_CONN:
- if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN");
runOnHandler(() -> handleRequestSuplConnection(agpsType, suplIpAddr));
break;
case GPS_RELEASE_AGPS_DATA_CONN:
- if (DEBUG) Log.d(TAG, "GPS_RELEASE_AGPS_DATA_CONN");
runOnHandler(() -> handleReleaseSuplConnection(GPS_RELEASE_AGPS_DATA_CONN));
break;
case GPS_AGPS_DATA_CONNECTED:
- if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONNECTED");
- break;
case GPS_AGPS_DATA_CONN_DONE:
- if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONN_DONE");
- break;
case GPS_AGPS_DATA_CONN_FAILED:
- if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONN_FAILED");
break;
default:
- if (DEBUG) Log.d(TAG, "Received Unknown AGPS status: " + agpsStatus);
+ Log.w(TAG, "Received unknown AGPS status: " + agpsStatus);
}
}
@@ -459,11 +457,17 @@ class GnssNetworkConnectivityHandler {
}
mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING;
- NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder();
- requestBuilder.addCapability(getNetworkCapability(mAGpsType));
- NetworkRequest request = requestBuilder.build();
+ // The NetworkRequest.Builder class is not used to construct the network request because
+ // the ConnectivityService requires the network request to be constructed in this way
+ // to extend support for requestRouteToHostAddress() method for pre-gnss@2.0 devices.
+ NetworkCapabilities networkCapabilities = new NetworkCapabilities();
+ networkCapabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
+ networkCapabilities.addCapability(getNetworkCapability(mAGpsType));
+ NetworkRequest networkRequest = new NetworkRequest(networkCapabilities,
+ getLegacyDataConnectionType(agpsType), ConnectivityManager.REQUEST_ID_UNSET,
+ NetworkRequest.Type.REQUEST);
mConnMgr.requestNetwork(
- request,
+ networkRequest,
mSuplConnectivityCallback,
mHandler,
SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS);
@@ -483,6 +487,19 @@ class GnssNetworkConnectivityHandler {
}
}
+ private int getLegacyDataConnectionType(int agpsType) {
+ switch (agpsType) {
+ case AGPS_TYPE_C2K:
+ case AGPS_TYPE_SUPL:
+ return ConnectivityManager.TYPE_MOBILE_SUPL;
+ case AGPS_TYPE_EIMS:
+ return ConnectivityManager.TYPE_MOBILE_EMERGENCY;
+ case AGPS_TYPE_IMS:
+ return ConnectivityManager.TYPE_MOBILE_IMS;
+ default:
+ throw new IllegalArgumentException("agpsType: " + agpsType);
+ }
+ }
private void handleReleaseSuplConnection(int agpsDataConnStatus) {
if (DEBUG) {
String message = String.format(
@@ -546,7 +563,7 @@ class GnssNetworkConnectivityHandler {
case AGPS_DATA_CONNECTION_OPENING:
return "OPENING";
default:
- return "<Unknown>";
+ return "<Unknown>(" + mAGpsDataConnectionState + ")";
}
}
@@ -566,7 +583,7 @@ class GnssNetworkConnectivityHandler {
case GPS_REQUEST_AGPS_DATA_CONN:
return "REQUEST";
default:
- return "<Unknown>";
+ return "<Unknown>(" + agpsDataConnStatus + ")";
}
}
@@ -581,7 +598,7 @@ class GnssNetworkConnectivityHandler {
case AGPS_TYPE_IMS:
return "IMS";
default:
- return "<Unknown>";
+ return "<Unknown>(" + agpsType + ")";
}
}
@@ -658,4 +675,4 @@ class GnssNetworkConnectivityHandler {
private native void native_update_network_state(boolean connected, int type, boolean roaming,
boolean available, String apn, long networkHandle, short capabilities);
-} \ No newline at end of file
+}
diff --git a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
index 0cabf1d35206..de36deafa4d7 100644
--- a/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaSessionServiceImpl.java
@@ -1489,8 +1489,10 @@ public class MediaSessionServiceImpl extends MediaSessionService.ServiceImpl {
final long token = Binder.clearCallingIdentity();
if (DEBUG_KEY_EVENT) {
- Log.d(TAG, "dispatchVolumeKeyEvent, pkg=" + packageName + ", pid=" + pid + ", uid="
- + uid + ", asSystem=" + asSystemService + ", event=" + keyEvent);
+ Log.d(TAG, "dispatchVolumeKeyEvent, pkg=" + packageName
+ + ", opPkg=" + opPackageName + ", pid=" + pid + ", uid=" + uid
+ + ", asSystem=" + asSystemService + ", event=" + keyEvent
+ + ", stream=" + stream + ", musicOnly=" + musicOnly);
}
try {
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 15599111f6e5..f34ace55a72e 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -25,6 +25,7 @@ import static android.content.Intent.ACTION_USER_REMOVED;
import static android.content.Intent.EXTRA_UID;
import static android.net.ConnectivityManager.ACTION_TETHER_STATE_CHANGED;
import static android.net.ConnectivityManager.isNetworkTypeMobile;
+import static android.net.NetworkStack.checkNetworkStackPermission;
import static android.net.NetworkStats.DEFAULT_NETWORK_ALL;
import static android.net.NetworkStats.IFACE_ALL;
import static android.net.NetworkStats.INTERFACES_ALL;
@@ -866,7 +867,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
VpnInfo[] vpnArray,
NetworkState[] networkStates,
String activeIface) {
- mContext.enforceCallingOrSelfPermission(READ_NETWORK_USAGE_HISTORY, TAG);
+ checkNetworkStackPermission(mContext);
assertBandwidthControlEnabled();
final long token = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java
index 0488d3a822ad..4a6eb276bd02 100644
--- a/services/core/java/com/android/server/notification/ManagedServices.java
+++ b/services/core/java/com/android/server/notification/ManagedServices.java
@@ -79,7 +79,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import java.util.function.Predicate;
/**
* Manages the lifecycle of application-provided services bound by system server.
@@ -1163,6 +1162,7 @@ abstract public class ManagedServices {
@Override
public void onNullBinding(ComponentName name) {
Slog.v(TAG, "onNullBinding() called with: name = [" + name + "]");
+ mServicesBound.remove(servicesBindingTag);
}
};
if (!mContext.bindServiceAsUser(intent,
@@ -1180,6 +1180,11 @@ abstract public class ManagedServices {
}
}
+ boolean isBound(ComponentName cn, int userId) {
+ final Pair<ComponentName, Integer> servicesBindingTag = Pair.create(cn, userId);
+ return mServicesBound.contains(servicesBindingTag);
+ }
+
/**
* Remove a service for the given user by ComponentName
*/
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index f2e56b589bd5..be6c017a2d11 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -29,6 +29,7 @@ import static android.app.NotificationManager.ACTION_NOTIFICATION_CHANNEL_GROUP_
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_MIN;
import static android.app.NotificationManager.IMPORTANCE_NONE;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_PRIORITY;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECTS_UNSET;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE;
@@ -2855,7 +2856,7 @@ public class NotificationManagerService extends SystemService {
}
@Override
- public List<String> getAllowedAssistantCapabilities(String pkg) {
+ public List<String> getAllowedAssistantAdjustments(String pkg) {
checkCallerIsSystemOrSameApp(pkg);
if (!isCallerSystemOrPhone()
@@ -2863,20 +2864,20 @@ public class NotificationManagerService extends SystemService {
throw new SecurityException("Not currently an assistant");
}
- return mAssistants.getAllowedAssistantCapabilities();
+ return mAssistants.getAllowedAssistantAdjustments();
}
@Override
- public void allowAssistantCapability(String adjustmentType) {
- checkCallerIsSystemOrShell();
+ public void allowAssistantAdjustment(String adjustmentType) {
+ checkCallerIsSystemOrSystemUiOrShell();
mAssistants.allowAdjustmentType(adjustmentType);
handleSavePolicyFile();
}
@Override
- public void disallowAssistantCapability(String adjustmentType) {
- checkCallerIsSystemOrShell();
+ public void disallowAssistantAdjustment(String adjustmentType) {
+ checkCallerIsSystemOrSystemUiOrShell();
mAssistants.disallowAdjustmentType(adjustmentType);
handleSavePolicyFile();
@@ -3419,8 +3420,7 @@ public class NotificationManagerService extends SystemService {
}
@Override
- public String addAutomaticZenRule(AutomaticZenRule automaticZenRule)
- throws RemoteException {
+ public String addAutomaticZenRule(AutomaticZenRule automaticZenRule) {
Preconditions.checkNotNull(automaticZenRule, "automaticZenRule is null");
Preconditions.checkNotNull(automaticZenRule.getName(), "Name is null");
if (automaticZenRule.getOwner() == null
@@ -3429,6 +3429,11 @@ public class NotificationManagerService extends SystemService {
"Rule must have a conditionproviderservice and/or configuration activity");
}
Preconditions.checkNotNull(automaticZenRule.getConditionId(), "ConditionId is null");
+ if (automaticZenRule.getZenPolicy() != null
+ && automaticZenRule.getInterruptionFilter() != INTERRUPTION_FILTER_PRIORITY) {
+ throw new IllegalArgumentException("ZenPolicy is only applicable to "
+ + "INTERRUPTION_FILTER_PRIORITY filters");
+ }
enforcePolicyAccess(Binder.getCallingUid(), "addAutomaticZenRule");
return mZenModeHelper.addAutomaticZenRule(automaticZenRule,
@@ -3806,7 +3811,7 @@ public class NotificationManagerService extends SystemService {
@Override
public ComponentName getAllowedNotificationAssistantForUser(int userId) {
- checkCallerIsSystem();
+ checkCallerIsSystemOrSystemUiOrShell();
List<ComponentName> allowedComponents = mAssistants.getAllowedComponents(userId);
if (allowedComponents.size() > 1) {
throw new IllegalStateException(
@@ -3889,7 +3894,7 @@ public class NotificationManagerService extends SystemService {
@Override
public void setNotificationAssistantAccessGrantedForUser(ComponentName assistant,
int userId, boolean granted) {
- checkCallerIsSystemOrShell();
+ checkCallerIsSystemOrSystemUiOrShell();
mAssistants.setUserSet(userId, true);
final long identity = Binder.clearCallingIdentity();
try {
@@ -3924,10 +3929,6 @@ public class NotificationManagerService extends SystemService {
}
}
if (!foundEnqueued) {
- // adjustment arrived too late to apply to enqueued; apply to posted
- // However, since the notification is now posted and may have alerted,
- // ignore any importance related adjustments
- adjustment.getSignals().remove(Adjustment.KEY_IMPORTANCE);
applyAdjustmentFromAssistant(token, adjustment);
}
}
@@ -4118,7 +4119,7 @@ public class NotificationManagerService extends SystemService {
}
return;
}
- if (mAllowedManagedServicePackages.test(assistant.getPackageName(), userId,
+ if (!granted || mAllowedManagedServicePackages.test(assistant.getPackageName(), userId,
mAssistants.getRequiredPermission())) {
mConditionProviders.setPackageOrComponentEnabled(assistant.flattenToString(),
userId, false, granted);
@@ -6990,6 +6991,16 @@ public class NotificationManagerService extends SystemService {
throw new SecurityException("Disallowed call for uid " + Binder.getCallingUid());
}
+ private void checkCallerIsSystemOrSystemUiOrShell() {
+ if (Binder.getCallingUid() == Process.SHELL_UID) {
+ return;
+ }
+ if (isCallerSystemOrPhone()) {
+ return;
+ }
+ getContext().enforceCallingPermission(android.Manifest.permission.STATUS_BAR_SERVICE, null);
+ }
+
private void checkCallerIsSystemOrSameApp(String pkg) {
if (isCallerSystemOrPhone()) {
return;
@@ -7297,7 +7308,7 @@ public class NotificationManagerService extends SystemService {
@GuardedBy("mLock")
private ArrayMap<Integer, Boolean> mUserSetMap = new ArrayMap<>();
- private List<String> mAllowedAdjustments = new ArrayList<>();
+ private Set<String> mAllowedAdjustments = new ArraySet<>();
public NotificationAssistants(Context context, Object lock, UserProfiles up,
IPackageManager pm) {
@@ -7385,15 +7396,21 @@ public class NotificationManagerService extends SystemService {
synchronized (mLock) {
mAllowedAdjustments.add(type);
}
+ for (final ManagedServiceInfo info : NotificationAssistants.this.getServices()) {
+ mHandler.post(() -> notifyCapabilitiesChanged(info));
+ }
}
protected void disallowAdjustmentType(String type) {
synchronized (mLock) {
mAllowedAdjustments.remove(type);
}
+ for (final ManagedServiceInfo info : NotificationAssistants.this.getServices()) {
+ mHandler.post(() -> notifyCapabilitiesChanged(info));
+ }
}
- protected List<String> getAllowedAssistantCapabilities() {
+ protected List<String> getAllowedAssistantAdjustments() {
synchronized (mLock) {
List<String> types = new ArrayList<>();
types.addAll(mAllowedAdjustments);
@@ -7450,6 +7467,15 @@ public class NotificationManagerService extends SystemService {
setUserSet(userId, userSet);
}
+ private void notifyCapabilitiesChanged(final ManagedServiceInfo info) {
+ final INotificationListener assistant = (INotificationListener) info.service;
+ try {
+ assistant.onAllowedAdjustmentsChanged();
+ } catch (RemoteException ex) {
+ Slog.e(TAG, "unable to notify assistant (capabilities): " + assistant, ex);
+ }
+ }
+
private void notifySeen(final ManagedServiceInfo info,
final ArrayList<String> keys) {
final INotificationListener assistant = (INotificationListener) info.service;
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index f34b2cb5cf29..642fa7fc3ba6 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -38,7 +38,6 @@ import android.service.notification.RankingHelperProto;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
-import android.util.Pair;
import android.util.Slog;
import android.util.SparseBooleanArray;
import android.util.proto.ProtoOutputStream;
@@ -180,7 +179,7 @@ public class PreferencesHelper implements RankingConfig {
}
}
- PackagePreferences r = getOrCreatePackagePreferences(name, uid,
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(name, uid,
XmlUtils.readIntAttribute(
parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE),
XmlUtils.readIntAttribute(parser, ATT_PRIORITY,
@@ -264,9 +263,9 @@ public class PreferencesHelper implements RankingConfig {
}
try {
- deleteDefaultChannelIfNeeded(r);
+ deleteDefaultChannelIfNeededLocked(r);
} catch (PackageManager.NameNotFoundException e) {
- Slog.e(TAG, "deleteDefaultChannelIfNeeded - Exception: " + e);
+ Slog.e(TAG, "deleteDefaultChannelIfNeededLocked - Exception: " + e);
}
}
}
@@ -276,50 +275,46 @@ public class PreferencesHelper implements RankingConfig {
throw new IllegalStateException("Failed to reach END_DOCUMENT");
}
- private PackagePreferences getPackagePreferences(String pkg, int uid) {
+ private PackagePreferences getPackagePreferencesLocked(String pkg, int uid) {
final String key = packagePreferencesKey(pkg, uid);
- synchronized (mPackagePreferences) {
- return mPackagePreferences.get(key);
- }
+ return mPackagePreferences.get(key);
}
- private PackagePreferences getOrCreatePackagePreferences(String pkg, int uid) {
- return getOrCreatePackagePreferences(pkg, uid,
+ private PackagePreferences getOrCreatePackagePreferencesLocked(String pkg, int uid) {
+ return getOrCreatePackagePreferencesLocked(pkg, uid,
DEFAULT_IMPORTANCE, DEFAULT_PRIORITY, DEFAULT_VISIBILITY, DEFAULT_SHOW_BADGE,
DEFAULT_ALLOW_BUBBLE);
}
- private PackagePreferences getOrCreatePackagePreferences(String pkg, int uid, int importance,
- int priority, int visibility, boolean showBadge, boolean allowBubble) {
+ private PackagePreferences getOrCreatePackagePreferencesLocked(String pkg, int uid,
+ int importance, int priority, int visibility, boolean showBadge, boolean allowBubble) {
final String key = packagePreferencesKey(pkg, uid);
- synchronized (mPackagePreferences) {
- PackagePreferences
- r = (uid == UNKNOWN_UID) ? mRestoredWithoutUids.get(pkg)
- : mPackagePreferences.get(key);
- if (r == null) {
- r = new PackagePreferences();
- r.pkg = pkg;
- r.uid = uid;
- r.importance = importance;
- r.priority = priority;
- r.visibility = visibility;
- r.showBadge = showBadge;
- r.allowBubble = allowBubble;
-
- try {
- createDefaultChannelIfNeeded(r);
- } catch (PackageManager.NameNotFoundException e) {
- Slog.e(TAG, "createDefaultChannelIfNeeded - Exception: " + e);
- }
+ PackagePreferences
+ r = (uid == UNKNOWN_UID) ? mRestoredWithoutUids.get(pkg)
+ : mPackagePreferences.get(key);
+ if (r == null) {
+ r = new PackagePreferences();
+ r.pkg = pkg;
+ r.uid = uid;
+ r.importance = importance;
+ r.priority = priority;
+ r.visibility = visibility;
+ r.showBadge = showBadge;
+ r.allowBubble = allowBubble;
+
+ try {
+ createDefaultChannelIfNeededLocked(r);
+ } catch (PackageManager.NameNotFoundException e) {
+ Slog.e(TAG, "createDefaultChannelIfNeededLocked - Exception: " + e);
+ }
- if (r.uid == UNKNOWN_UID) {
- mRestoredWithoutUids.put(pkg, r);
- } else {
- mPackagePreferences.put(key, r);
- }
+ if (r.uid == UNKNOWN_UID) {
+ mRestoredWithoutUids.put(pkg, r);
+ } else {
+ mPackagePreferences.put(key, r);
}
- return r;
}
+ return r;
}
private boolean shouldHaveDefaultChannel(PackagePreferences r) throws
@@ -336,7 +331,7 @@ public class PreferencesHelper implements RankingConfig {
return true;
}
- private void deleteDefaultChannelIfNeeded(PackagePreferences r) throws
+ private void deleteDefaultChannelIfNeededLocked(PackagePreferences r) throws
PackageManager.NameNotFoundException {
if (!r.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) {
// Not present
@@ -352,7 +347,7 @@ public class PreferencesHelper implements RankingConfig {
r.channels.remove(NotificationChannel.DEFAULT_CHANNEL_ID);
}
- private void createDefaultChannelIfNeeded(PackagePreferences r) throws
+ private void createDefaultChannelIfNeededLocked(PackagePreferences r) throws
PackageManager.NameNotFoundException {
if (r.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) {
r.channels.get(NotificationChannel.DEFAULT_CHANNEL_ID).setName(mContext.getString(
@@ -479,9 +474,11 @@ public class PreferencesHelper implements RankingConfig {
* @param allowed whether bubbles are allowed.
*/
public void setBubblesAllowed(String pkg, int uid, boolean allowed) {
- PackagePreferences p = getOrCreatePackagePreferences(pkg, uid);
- p.allowBubble = allowed;
- p.lockedAppFields = p.lockedAppFields | LockableAppFields.USER_LOCKED_BUBBLE;
+ synchronized (mPackagePreferences) {
+ PackagePreferences p = getOrCreatePackagePreferencesLocked(pkg, uid);
+ p.allowBubble = allowed;
+ p.lockedAppFields = p.lockedAppFields | LockableAppFields.USER_LOCKED_BUBBLE;
+ }
}
/**
@@ -493,11 +490,15 @@ public class PreferencesHelper implements RankingConfig {
*/
@Override
public boolean areBubblesAllowed(String pkg, int uid) {
- return getOrCreatePackagePreferences(pkg, uid).allowBubble;
+ synchronized (mPackagePreferences) {
+ return getOrCreatePackagePreferencesLocked(pkg, uid).allowBubble;
+ }
}
public int getAppLockedFields(String pkg, int uid) {
- return getOrCreatePackagePreferences(pkg, uid).lockedAppFields;
+ synchronized (mPackagePreferences) {
+ return getOrCreatePackagePreferencesLocked(pkg, uid).lockedAppFields;
+ }
}
/**
@@ -505,7 +506,9 @@ public class PreferencesHelper implements RankingConfig {
*/
@Override
public int getImportance(String packageName, int uid) {
- return getOrCreatePackagePreferences(packageName, uid).importance;
+ synchronized (mPackagePreferences) {
+ return getOrCreatePackagePreferencesLocked(packageName, uid).importance;
+ }
}
/**
@@ -514,18 +517,24 @@ public class PreferencesHelper implements RankingConfig {
* locking field, see {@link NotificationChannel#USER_LOCKED_IMPORTANCE}.
*/
public boolean getIsAppImportanceLocked(String packageName, int uid) {
- int userLockedFields = getOrCreatePackagePreferences(packageName, uid).lockedAppFields;
- return (userLockedFields & LockableAppFields.USER_LOCKED_IMPORTANCE) != 0;
+ synchronized (mPackagePreferences) {
+ int userLockedFields = getOrCreatePackagePreferencesLocked(packageName, uid).lockedAppFields;
+ return (userLockedFields & LockableAppFields.USER_LOCKED_IMPORTANCE) != 0;
+ }
}
@Override
public boolean canShowBadge(String packageName, int uid) {
- return getOrCreatePackagePreferences(packageName, uid).showBadge;
+ synchronized (mPackagePreferences) {
+ return getOrCreatePackagePreferencesLocked(packageName, uid).showBadge;
+ }
}
@Override
public void setShowBadge(String packageName, int uid, boolean showBadge) {
- getOrCreatePackagePreferences(packageName, uid).showBadge = showBadge;
+ synchronized (mPackagePreferences) {
+ getOrCreatePackagePreferencesLocked(packageName, uid).showBadge = showBadge;
+ }
updateConfig();
}
@@ -534,20 +543,26 @@ public class PreferencesHelper implements RankingConfig {
if (groupId == null) {
return false;
}
- PackagePreferences r = getOrCreatePackagePreferences(packageName, uid);
- NotificationChannelGroup group = r.groups.get(groupId);
- if (group == null) {
- return false;
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(packageName, uid);
+ NotificationChannelGroup group = r.groups.get(groupId);
+ if (group == null) {
+ return false;
+ }
+ return group.isBlocked();
}
- return group.isBlocked();
}
int getPackagePriority(String pkg, int uid) {
- return getOrCreatePackagePreferences(pkg, uid).priority;
+ synchronized (mPackagePreferences) {
+ return getOrCreatePackagePreferencesLocked(pkg, uid).priority;
+ }
}
int getPackageVisibility(String pkg, int uid) {
- return getOrCreatePackagePreferences(pkg, uid).visibility;
+ synchronized (mPackagePreferences) {
+ return getOrCreatePackagePreferencesLocked(pkg, uid).visibility;
+ }
}
@Override
@@ -557,32 +572,34 @@ public class PreferencesHelper implements RankingConfig {
Preconditions.checkNotNull(group);
Preconditions.checkNotNull(group.getId());
Preconditions.checkNotNull(!TextUtils.isEmpty(group.getName()));
- PackagePreferences r = getOrCreatePackagePreferences(pkg, uid);
- if (r == null) {
- throw new IllegalArgumentException("Invalid package");
- }
- final NotificationChannelGroup oldGroup = r.groups.get(group.getId());
- if (!group.equals(oldGroup)) {
- // will log for new entries as well as name/description changes
- MetricsLogger.action(getChannelGroupLog(group.getId(), pkg));
- }
- if (oldGroup != null) {
- group.setChannels(oldGroup.getChannels());
-
- // apps can't update the blocked status or app overlay permission
- if (fromTargetApp) {
- group.setBlocked(oldGroup.isBlocked());
- group.unlockFields(group.getUserLockedFields());
- group.lockFields(oldGroup.getUserLockedFields());
- } else {
- // but the system can
- if (group.isBlocked() != oldGroup.isBlocked()) {
- group.lockFields(NotificationChannelGroup.USER_LOCKED_BLOCKED_STATE);
- updateChannelsBypassingDnd(mContext.getUserId());
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ throw new IllegalArgumentException("Invalid package");
+ }
+ final NotificationChannelGroup oldGroup = r.groups.get(group.getId());
+ if (!group.equals(oldGroup)) {
+ // will log for new entries as well as name/description changes
+ MetricsLogger.action(getChannelGroupLog(group.getId(), pkg));
+ }
+ if (oldGroup != null) {
+ group.setChannels(oldGroup.getChannels());
+
+ // apps can't update the blocked status or app overlay permission
+ if (fromTargetApp) {
+ group.setBlocked(oldGroup.isBlocked());
+ group.unlockFields(group.getUserLockedFields());
+ group.lockFields(oldGroup.getUserLockedFields());
+ } else {
+ // but the system can
+ if (group.isBlocked() != oldGroup.isBlocked()) {
+ group.lockFields(NotificationChannelGroup.USER_LOCKED_BLOCKED_STATE);
+ updateChannelsBypassingDnd(mContext.getUserId());
+ }
}
}
+ r.groups.put(group.getId(), group);
}
- r.groups.put(group.getId(), group);
}
@Override
@@ -592,94 +609,96 @@ public class PreferencesHelper implements RankingConfig {
Preconditions.checkNotNull(channel);
Preconditions.checkNotNull(channel.getId());
Preconditions.checkArgument(!TextUtils.isEmpty(channel.getName()));
- PackagePreferences r = getOrCreatePackagePreferences(pkg, uid);
- if (r == null) {
- throw new IllegalArgumentException("Invalid package");
- }
- if (channel.getGroup() != null && !r.groups.containsKey(channel.getGroup())) {
- throw new IllegalArgumentException("NotificationChannelGroup doesn't exist");
- }
- if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(channel.getId())) {
- throw new IllegalArgumentException("Reserved id");
- }
- NotificationChannel existing = r.channels.get(channel.getId());
- // Keep most of the existing settings
- if (existing != null && fromTargetApp) {
- if (existing.isDeleted()) {
- existing.setDeleted(false);
-
- // log a resurrected channel as if it's new again
- MetricsLogger.action(getChannelLog(channel, pkg).setType(
- com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN));
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ throw new IllegalArgumentException("Invalid package");
}
-
- existing.setName(channel.getName().toString());
- existing.setDescription(channel.getDescription());
- existing.setBlockableSystem(channel.isBlockableSystem());
- if (existing.getGroup() == null) {
- existing.setGroup(channel.getGroup());
+ if (channel.getGroup() != null && !r.groups.containsKey(channel.getGroup())) {
+ throw new IllegalArgumentException("NotificationChannelGroup doesn't exist");
}
-
- // Apps are allowed to downgrade channel importance if the user has not changed any
- // fields on this channel yet.
- final int previousExistingImportance = existing.getImportance();
- if (existing.getUserLockedFields() == 0 &&
- channel.getImportance() < existing.getImportance()) {
- existing.setImportance(channel.getImportance());
+ if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(channel.getId())) {
+ throw new IllegalArgumentException("Reserved id");
}
+ NotificationChannel existing = r.channels.get(channel.getId());
+ // Keep most of the existing settings
+ if (existing != null && fromTargetApp) {
+ if (existing.isDeleted()) {
+ existing.setDeleted(false);
+
+ // log a resurrected channel as if it's new again
+ MetricsLogger.action(getChannelLog(channel, pkg).setType(
+ com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN));
+ }
+
+ existing.setName(channel.getName().toString());
+ existing.setDescription(channel.getDescription());
+ existing.setBlockableSystem(channel.isBlockableSystem());
+ if (existing.getGroup() == null) {
+ existing.setGroup(channel.getGroup());
+ }
+
+ // Apps are allowed to downgrade channel importance if the user has not changed any
+ // fields on this channel yet.
+ final int previousExistingImportance = existing.getImportance();
+ if (existing.getUserLockedFields() == 0 &&
+ channel.getImportance() < existing.getImportance()) {
+ existing.setImportance(channel.getImportance());
+ }
- // system apps and dnd access apps can bypass dnd if the user hasn't changed any
- // fields on the channel yet
- if (existing.getUserLockedFields() == 0 && hasDndAccess) {
- boolean bypassDnd = channel.canBypassDnd();
- existing.setBypassDnd(bypassDnd);
+ // system apps and dnd access apps can bypass dnd if the user hasn't changed any
+ // fields on the channel yet
+ if (existing.getUserLockedFields() == 0 && hasDndAccess) {
+ boolean bypassDnd = channel.canBypassDnd();
+ existing.setBypassDnd(bypassDnd);
- if (bypassDnd != mAreChannelsBypassingDnd
- || previousExistingImportance != existing.getImportance()) {
- updateChannelsBypassingDnd(mContext.getUserId());
+ if (bypassDnd != mAreChannelsBypassingDnd
+ || previousExistingImportance != existing.getImportance()) {
+ updateChannelsBypassingDnd(mContext.getUserId());
+ }
}
- }
- updateConfig();
- return;
- }
- if (channel.getImportance() < IMPORTANCE_NONE
- || channel.getImportance() > NotificationManager.IMPORTANCE_MAX) {
- throw new IllegalArgumentException("Invalid importance level");
- }
+ updateConfig();
+ return;
+ }
+ if (channel.getImportance() < IMPORTANCE_NONE
+ || channel.getImportance() > NotificationManager.IMPORTANCE_MAX) {
+ throw new IllegalArgumentException("Invalid importance level");
+ }
- // Reset fields that apps aren't allowed to set.
- if (fromTargetApp && !hasDndAccess) {
- channel.setBypassDnd(r.priority == Notification.PRIORITY_MAX);
- }
- if (fromTargetApp) {
- channel.setLockscreenVisibility(r.visibility);
- }
- clearLockedFields(channel);
- channel.setImportanceLockedByOEM(r.oemLockedImportance);
- if (!channel.isImportanceLockedByOEM()) {
- if (r.futureOemLockedChannels.remove(channel.getId())) {
- channel.setImportanceLockedByOEM(true);
+ // Reset fields that apps aren't allowed to set.
+ if (fromTargetApp && !hasDndAccess) {
+ channel.setBypassDnd(r.priority == Notification.PRIORITY_MAX);
+ }
+ if (fromTargetApp) {
+ channel.setLockscreenVisibility(r.visibility);
+ }
+ clearLockedFieldsLocked(channel);
+ channel.setImportanceLockedByOEM(r.oemLockedImportance);
+ if (!channel.isImportanceLockedByOEM()) {
+ if (r.futureOemLockedChannels.remove(channel.getId())) {
+ channel.setImportanceLockedByOEM(true);
+ }
+ }
+ channel.setImportanceLockedByCriticalDeviceFunction(r.defaultAppLockedImportance);
+ if (channel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) {
+ channel.setLockscreenVisibility(
+ NotificationListenerService.Ranking.VISIBILITY_NO_OVERRIDE);
+ }
+ if (!r.showBadge) {
+ channel.setShowBadge(false);
}
- }
- channel.setImportanceLockedByCriticalDeviceFunction(r.defaultAppLockedImportance);
- if (channel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) {
- channel.setLockscreenVisibility(
- NotificationListenerService.Ranking.VISIBILITY_NO_OVERRIDE);
- }
- if (!r.showBadge) {
- channel.setShowBadge(false);
- }
- r.channels.put(channel.getId(), channel);
- if (channel.canBypassDnd() != mAreChannelsBypassingDnd) {
- updateChannelsBypassingDnd(mContext.getUserId());
+ r.channels.put(channel.getId(), channel);
+ if (channel.canBypassDnd() != mAreChannelsBypassingDnd) {
+ updateChannelsBypassingDnd(mContext.getUserId());
+ }
+ MetricsLogger.action(getChannelLog(channel, pkg).setType(
+ com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN));
}
- MetricsLogger.action(getChannelLog(channel, pkg).setType(
- com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_OPEN));
}
- void clearLockedFields(NotificationChannel channel) {
+ void clearLockedFieldsLocked(NotificationChannel channel) {
channel.unlockFields(channel.getUserLockedFields());
}
@@ -688,55 +707,58 @@ public class PreferencesHelper implements RankingConfig {
boolean fromUser) {
Preconditions.checkNotNull(updatedChannel);
Preconditions.checkNotNull(updatedChannel.getId());
- PackagePreferences r = getOrCreatePackagePreferences(pkg, uid);
- if (r == null) {
- throw new IllegalArgumentException("Invalid package");
- }
- NotificationChannel channel = r.channels.get(updatedChannel.getId());
- if (channel == null || channel.isDeleted()) {
- throw new IllegalArgumentException("Channel does not exist");
- }
- if (updatedChannel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) {
- updatedChannel.setLockscreenVisibility(
- NotificationListenerService.Ranking.VISIBILITY_NO_OVERRIDE);
- }
- if (fromUser) {
- updatedChannel.lockFields(channel.getUserLockedFields());
- lockFieldsForUpdate(channel, updatedChannel);
- } else {
- updatedChannel.unlockFields(updatedChannel.getUserLockedFields());
- }
- // no importance updates are allowed if OEM blocked it
- updatedChannel.setImportanceLockedByOEM(channel.isImportanceLockedByOEM());
- if (updatedChannel.isImportanceLockedByOEM()) {
- updatedChannel.setImportance(channel.getImportance());
- }
- updatedChannel.setImportanceLockedByCriticalDeviceFunction(r.defaultAppLockedImportance);
- if (updatedChannel.isImportanceLockedByCriticalDeviceFunction()) {
- updatedChannel.setImportance(channel.getImportance());
- }
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ throw new IllegalArgumentException("Invalid package");
+ }
+ NotificationChannel channel = r.channels.get(updatedChannel.getId());
+ if (channel == null || channel.isDeleted()) {
+ throw new IllegalArgumentException("Channel does not exist");
+ }
+ if (updatedChannel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) {
+ updatedChannel.setLockscreenVisibility(
+ NotificationListenerService.Ranking.VISIBILITY_NO_OVERRIDE);
+ }
+ if (fromUser) {
+ updatedChannel.lockFields(channel.getUserLockedFields());
+ lockFieldsForUpdateLocked(channel, updatedChannel);
+ } else {
+ updatedChannel.unlockFields(updatedChannel.getUserLockedFields());
+ }
+ // no importance updates are allowed if OEM blocked it
+ updatedChannel.setImportanceLockedByOEM(channel.isImportanceLockedByOEM());
+ if (updatedChannel.isImportanceLockedByOEM()) {
+ updatedChannel.setImportance(channel.getImportance());
+ }
+ updatedChannel.setImportanceLockedByCriticalDeviceFunction(
+ r.defaultAppLockedImportance);
+ if (updatedChannel.isImportanceLockedByCriticalDeviceFunction()) {
+ updatedChannel.setImportance(channel.getImportance());
+ }
- r.channels.put(updatedChannel.getId(), updatedChannel);
+ r.channels.put(updatedChannel.getId(), updatedChannel);
- if (onlyHasDefaultChannel(pkg, uid)) {
- // copy settings to app level so they are inherited by new channels
- // when the app migrates
- r.importance = updatedChannel.getImportance();
- r.priority = updatedChannel.canBypassDnd()
- ? Notification.PRIORITY_MAX : Notification.PRIORITY_DEFAULT;
- r.visibility = updatedChannel.getLockscreenVisibility();
- r.showBadge = updatedChannel.canShowBadge();
- }
+ if (onlyHasDefaultChannel(pkg, uid)) {
+ // copy settings to app level so they are inherited by new channels
+ // when the app migrates
+ r.importance = updatedChannel.getImportance();
+ r.priority = updatedChannel.canBypassDnd()
+ ? Notification.PRIORITY_MAX : Notification.PRIORITY_DEFAULT;
+ r.visibility = updatedChannel.getLockscreenVisibility();
+ r.showBadge = updatedChannel.canShowBadge();
+ }
- if (!channel.equals(updatedChannel)) {
- // only log if there are real changes
- MetricsLogger.action(getChannelLog(updatedChannel, pkg)
- .setSubtype(fromUser ? 1 : 0));
- }
+ if (!channel.equals(updatedChannel)) {
+ // only log if there are real changes
+ MetricsLogger.action(getChannelLog(updatedChannel, pkg)
+ .setSubtype(fromUser ? 1 : 0));
+ }
- if (updatedChannel.canBypassDnd() != mAreChannelsBypassingDnd
- || channel.getImportance() != updatedChannel.getImportance()) {
- updateChannelsBypassingDnd(mContext.getUserId());
+ if (updatedChannel.canBypassDnd() != mAreChannelsBypassingDnd
+ || channel.getImportance() != updatedChannel.getImportance()) {
+ updateChannelsBypassingDnd(mContext.getUserId());
+ }
}
updateConfig();
}
@@ -745,35 +767,39 @@ public class PreferencesHelper implements RankingConfig {
public NotificationChannel getNotificationChannel(String pkg, int uid, String channelId,
boolean includeDeleted) {
Preconditions.checkNotNull(pkg);
- PackagePreferences r = getOrCreatePackagePreferences(pkg, uid);
- if (r == null) {
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return null;
+ }
+ if (channelId == null) {
+ channelId = NotificationChannel.DEFAULT_CHANNEL_ID;
+ }
+ final NotificationChannel nc = r.channels.get(channelId);
+ if (nc != null && (includeDeleted || !nc.isDeleted())) {
+ return nc;
+ }
return null;
}
- if (channelId == null) {
- channelId = NotificationChannel.DEFAULT_CHANNEL_ID;
- }
- final NotificationChannel nc = r.channels.get(channelId);
- if (nc != null && (includeDeleted || !nc.isDeleted())) {
- return nc;
- }
- return null;
}
@Override
public void deleteNotificationChannel(String pkg, int uid, String channelId) {
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return;
- }
- NotificationChannel channel = r.channels.get(channelId);
- if (channel != null) {
- channel.setDeleted(true);
- LogMaker lm = getChannelLog(channel, pkg);
- lm.setType(com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_CLOSE);
- MetricsLogger.action(lm);
-
- if (mAreChannelsBypassingDnd && channel.canBypassDnd()) {
- updateChannelsBypassingDnd(mContext.getUserId());
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return;
+ }
+ NotificationChannel channel = r.channels.get(channelId);
+ if (channel != null) {
+ channel.setDeleted(true);
+ LogMaker lm = getChannelLog(channel, pkg);
+ lm.setType(com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_CLOSE);
+ MetricsLogger.action(lm);
+
+ if (mAreChannelsBypassingDnd && channel.canBypassDnd()) {
+ updateChannelsBypassingDnd(mContext.getUserId());
+ }
}
}
}
@@ -783,25 +809,29 @@ public class PreferencesHelper implements RankingConfig {
public void permanentlyDeleteNotificationChannel(String pkg, int uid, String channelId) {
Preconditions.checkNotNull(pkg);
Preconditions.checkNotNull(channelId);
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return;
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return;
+ }
+ r.channels.remove(channelId);
}
- r.channels.remove(channelId);
}
@Override
public void permanentlyDeleteNotificationChannels(String pkg, int uid) {
Preconditions.checkNotNull(pkg);
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return;
- }
- int N = r.channels.size() - 1;
- for (int i = N; i >= 0; i--) {
- String key = r.channels.keyAt(i);
- if (!NotificationChannel.DEFAULT_CHANNEL_ID.equals(key)) {
- r.channels.remove(key);
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return;
+ }
+ int N = r.channels.size() - 1;
+ for (int i = N; i >= 0; i--) {
+ String key = r.channels.keyAt(i);
+ if (!NotificationChannel.DEFAULT_CHANNEL_ID.equals(key)) {
+ r.channels.remove(key);
+ }
}
}
}
@@ -875,32 +905,36 @@ public class PreferencesHelper implements RankingConfig {
public NotificationChannelGroup getNotificationChannelGroupWithChannels(String pkg,
int uid, String groupId, boolean includeDeleted) {
Preconditions.checkNotNull(pkg);
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null || groupId == null || !r.groups.containsKey(groupId)) {
- return null;
- }
- NotificationChannelGroup group = r.groups.get(groupId).clone();
- group.setChannels(new ArrayList<>());
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (includeDeleted || !nc.isDeleted()) {
- if (groupId.equals(nc.getGroup())) {
- group.addChannel(nc);
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null || groupId == null || !r.groups.containsKey(groupId)) {
+ return null;
+ }
+ NotificationChannelGroup group = r.groups.get(groupId).clone();
+ group.setChannels(new ArrayList<>());
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (includeDeleted || !nc.isDeleted()) {
+ if (groupId.equals(nc.getGroup())) {
+ group.addChannel(nc);
+ }
}
}
+ return group;
}
- return group;
}
public NotificationChannelGroup getNotificationChannelGroup(String groupId, String pkg,
int uid) {
Preconditions.checkNotNull(pkg);
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return null;
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return null;
+ }
+ return r.groups.get(groupId);
}
- return r.groups.get(groupId);
}
@Override
@@ -908,60 +942,64 @@ public class PreferencesHelper implements RankingConfig {
int uid, boolean includeDeleted, boolean includeNonGrouped, boolean includeEmpty) {
Preconditions.checkNotNull(pkg);
Map<String, NotificationChannelGroup> groups = new ArrayMap<>();
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return ParceledListSlice.emptyList();
- }
- NotificationChannelGroup nonGrouped = new NotificationChannelGroup(null, null);
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (includeDeleted || !nc.isDeleted()) {
- if (nc.getGroup() != null) {
- if (r.groups.get(nc.getGroup()) != null) {
- NotificationChannelGroup ncg = groups.get(nc.getGroup());
- if (ncg == null) {
- ncg = r.groups.get(nc.getGroup()).clone();
- ncg.setChannels(new ArrayList<>());
- groups.put(nc.getGroup(), ncg);
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return ParceledListSlice.emptyList();
+ }
+ NotificationChannelGroup nonGrouped = new NotificationChannelGroup(null, null);
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (includeDeleted || !nc.isDeleted()) {
+ if (nc.getGroup() != null) {
+ if (r.groups.get(nc.getGroup()) != null) {
+ NotificationChannelGroup ncg = groups.get(nc.getGroup());
+ if (ncg == null) {
+ ncg = r.groups.get(nc.getGroup()).clone();
+ ncg.setChannels(new ArrayList<>());
+ groups.put(nc.getGroup(), ncg);
+ }
+ ncg.addChannel(nc);
}
- ncg.addChannel(nc);
+ } else {
+ nonGrouped.addChannel(nc);
}
- } else {
- nonGrouped.addChannel(nc);
}
}
- }
- if (includeNonGrouped && nonGrouped.getChannels().size() > 0) {
- groups.put(null, nonGrouped);
- }
- if (includeEmpty) {
- for (NotificationChannelGroup group : r.groups.values()) {
- if (!groups.containsKey(group.getId())) {
- groups.put(group.getId(), group);
+ if (includeNonGrouped && nonGrouped.getChannels().size() > 0) {
+ groups.put(null, nonGrouped);
+ }
+ if (includeEmpty) {
+ for (NotificationChannelGroup group : r.groups.values()) {
+ if (!groups.containsKey(group.getId())) {
+ groups.put(group.getId(), group);
+ }
}
}
+ return new ParceledListSlice<>(new ArrayList<>(groups.values()));
}
- return new ParceledListSlice<>(new ArrayList<>(groups.values()));
}
public List<NotificationChannel> deleteNotificationChannelGroup(String pkg, int uid,
String groupId) {
List<NotificationChannel> deletedChannels = new ArrayList<>();
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null || TextUtils.isEmpty(groupId)) {
- return deletedChannels;
- }
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null || TextUtils.isEmpty(groupId)) {
+ return deletedChannels;
+ }
- r.groups.remove(groupId);
+ r.groups.remove(groupId);
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (groupId.equals(nc.getGroup())) {
- nc.setDeleted(true);
- deletedChannels.add(nc);
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (groupId.equals(nc.getGroup())) {
+ nc.setDeleted(true);
+ deletedChannels.add(nc);
+ }
}
}
return deletedChannels;
@@ -970,11 +1008,15 @@ public class PreferencesHelper implements RankingConfig {
@Override
public Collection<NotificationChannelGroup> getNotificationChannelGroups(String pkg,
int uid) {
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return new ArrayList<>();
+ List<NotificationChannelGroup> groups = new ArrayList<>();
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return groups;
+ }
+ groups.addAll(r.groups.values());
}
- return r.groups.values();
+ return groups;
}
@Override
@@ -982,18 +1024,20 @@ public class PreferencesHelper implements RankingConfig {
boolean includeDeleted) {
Preconditions.checkNotNull(pkg);
List<NotificationChannel> channels = new ArrayList<>();
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return ParceledListSlice.emptyList();
- }
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (includeDeleted || !nc.isDeleted()) {
- channels.add(nc);
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return ParceledListSlice.emptyList();
}
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (includeDeleted || !nc.isDeleted()) {
+ channels.add(nc);
+ }
+ }
+ return new ParceledListSlice<>(channels);
}
- return new ParceledListSlice<>(channels);
}
/**
@@ -1008,7 +1052,7 @@ public class PreferencesHelper implements RankingConfig {
// notifications from this package aren't blocked
if (r != null && r.importance != IMPORTANCE_NONE) {
for (NotificationChannel channel : r.channels.values()) {
- if (channelIsLive(r, channel) && channel.canBypassDnd()) {
+ if (channelIsLiveLocked(r, channel) && channel.canBypassDnd()) {
channels.add(channel);
}
}
@@ -1024,46 +1068,52 @@ public class PreferencesHelper implements RankingConfig {
* upgrades.
*/
public boolean onlyHasDefaultChannel(String pkg, int uid) {
- PackagePreferences r = getOrCreatePackagePreferences(pkg, uid);
- if (r.channels.size() == 1
- && r.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) {
- return true;
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid);
+ if (r.channels.size() == 1
+ && r.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) {
+ return true;
+ }
+ return false;
}
- return false;
}
public int getDeletedChannelCount(String pkg, int uid) {
Preconditions.checkNotNull(pkg);
int deletedCount = 0;
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return deletedCount;
- }
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (nc.isDeleted()) {
- deletedCount++;
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return deletedCount;
}
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (nc.isDeleted()) {
+ deletedCount++;
+ }
+ }
+ return deletedCount;
}
- return deletedCount;
}
public int getBlockedChannelCount(String pkg, int uid) {
Preconditions.checkNotNull(pkg);
int blockedCount = 0;
- PackagePreferences r = getPackagePreferences(pkg, uid);
- if (r == null) {
- return blockedCount;
- }
- int N = r.channels.size();
- for (int i = 0; i < N; i++) {
- final NotificationChannel nc = r.channels.valueAt(i);
- if (!nc.isDeleted() && IMPORTANCE_NONE == nc.getImportance()) {
- blockedCount++;
+ synchronized (mPackagePreferences) {
+ PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+ if (r == null) {
+ return blockedCount;
+ }
+ int N = r.channels.size();
+ for (int i = 0; i < N; i++) {
+ final NotificationChannel nc = r.channels.valueAt(i);
+ if (!nc.isDeleted() && IMPORTANCE_NONE == nc.getImportance()) {
+ blockedCount++;
+ }
}
+ return blockedCount;
}
- return blockedCount;
}
public int getBlockedAppCount(int userId) {
@@ -1098,7 +1148,7 @@ public class PreferencesHelper implements RankingConfig {
}
for (NotificationChannel channel : r.channels.values()) {
- if (channelIsLive(r, channel) && channel.canBypassDnd()) {
+ if (channelIsLiveLocked(r, channel) && channel.canBypassDnd()) {
count++;
break;
}
@@ -1136,7 +1186,7 @@ public class PreferencesHelper implements RankingConfig {
}
for (NotificationChannel channel : r.channels.values()) {
- if (channelIsLive(r, channel) && channel.canBypassDnd()) {
+ if (channelIsLiveLocked(r, channel) && channel.canBypassDnd()) {
if (!mAreChannelsBypassingDnd) {
mAreChannelsBypassingDnd = true;
updateZenPolicy(true);
@@ -1153,7 +1203,7 @@ public class PreferencesHelper implements RankingConfig {
}
}
- private boolean channelIsLive(PackagePreferences pkgPref, NotificationChannel channel) {
+ private boolean channelIsLiveLocked(PackagePreferences pkgPref, NotificationChannel channel) {
// Channel is in a group that's blocked
if (isGroupBlocked(pkgPref.pkg, pkgPref.uid, channel.getGroup())) {
return false;
@@ -1185,7 +1235,9 @@ public class PreferencesHelper implements RankingConfig {
*/
@Override
public void setImportance(String pkgName, int uid, int importance) {
- getOrCreatePackagePreferences(pkgName, uid).importance = importance;
+ synchronized (mPackagePreferences) {
+ getOrCreatePackagePreferencesLocked(pkgName, uid).importance = importance;
+ }
updateConfig();
}
@@ -1204,12 +1256,15 @@ public class PreferencesHelper implements RankingConfig {
* considered for sentiment adjustments (and thus never show a blocking helper).
*/
public void setAppImportanceLocked(String packageName, int uid) {
- PackagePreferences prefs = getOrCreatePackagePreferences(packageName, uid);
- if ((prefs.lockedAppFields & LockableAppFields.USER_LOCKED_IMPORTANCE) != 0) {
- return;
- }
+ synchronized (mPackagePreferences) {
+ PackagePreferences prefs = getOrCreatePackagePreferencesLocked(packageName, uid);
+ if ((prefs.lockedAppFields & LockableAppFields.USER_LOCKED_IMPORTANCE) != 0) {
+ return;
+ }
- prefs.lockedAppFields = prefs.lockedAppFields | LockableAppFields.USER_LOCKED_IMPORTANCE;
+ prefs.lockedAppFields =
+ prefs.lockedAppFields | LockableAppFields.USER_LOCKED_IMPORTANCE;
+ }
updateConfig();
}
@@ -1217,15 +1272,17 @@ public class PreferencesHelper implements RankingConfig {
* Returns the delegate for a given package, if it's allowed by the package and the user.
*/
public @Nullable String getNotificationDelegate(String sourcePkg, int sourceUid) {
- PackagePreferences prefs = getPackagePreferences(sourcePkg, sourceUid);
+ synchronized (mPackagePreferences) {
+ PackagePreferences prefs = getPackagePreferencesLocked(sourcePkg, sourceUid);
- if (prefs == null || prefs.delegate == null) {
- return null;
- }
- if (!prefs.delegate.mUserAllowed || !prefs.delegate.mEnabled) {
- return null;
+ if (prefs == null || prefs.delegate == null) {
+ return null;
+ }
+ if (!prefs.delegate.mUserAllowed || !prefs.delegate.mEnabled) {
+ return null;
+ }
+ return prefs.delegate.mPkg;
}
- return prefs.delegate.mPkg;
}
/**
@@ -1233,11 +1290,13 @@ public class PreferencesHelper implements RankingConfig {
*/
public void setNotificationDelegate(String sourcePkg, int sourceUid,
String delegatePkg, int delegateUid) {
- PackagePreferences prefs = getOrCreatePackagePreferences(sourcePkg, sourceUid);
+ synchronized (mPackagePreferences) {
+ PackagePreferences prefs = getOrCreatePackagePreferencesLocked(sourcePkg, sourceUid);
- boolean userAllowed = prefs.delegate == null || prefs.delegate.mUserAllowed;
- Delegate delegate = new Delegate(delegatePkg, delegateUid, true, userAllowed);
- prefs.delegate = delegate;
+ boolean userAllowed = prefs.delegate == null || prefs.delegate.mUserAllowed;
+ Delegate delegate = new Delegate(delegatePkg, delegateUid, true, userAllowed);
+ prefs.delegate = delegate;
+ }
updateConfig();
}
@@ -1245,9 +1304,15 @@ public class PreferencesHelper implements RankingConfig {
* Used by an app to turn off its notification delegate.
*/
public void revokeNotificationDelegate(String sourcePkg, int sourceUid) {
- PackagePreferences prefs = getPackagePreferences(sourcePkg, sourceUid);
- if (prefs != null && prefs.delegate != null) {
- prefs.delegate.mEnabled = false;
+ boolean changed = false;
+ synchronized (mPackagePreferences) {
+ PackagePreferences prefs = getPackagePreferencesLocked(sourcePkg, sourceUid);
+ if (prefs != null && prefs.delegate != null) {
+ prefs.delegate.mEnabled = false;
+ changed = true;
+ }
+ }
+ if (changed) {
updateConfig();
}
}
@@ -1256,9 +1321,15 @@ public class PreferencesHelper implements RankingConfig {
* Toggles whether an app can have a notification delegate on behalf of a user.
*/
public void toggleNotificationDelegate(String sourcePkg, int sourceUid, boolean userAllowed) {
- PackagePreferences prefs = getPackagePreferences(sourcePkg, sourceUid);
- if (prefs != null && prefs.delegate != null) {
- prefs.delegate.mUserAllowed = userAllowed;
+ boolean changed = false;
+ synchronized (mPackagePreferences) {
+ PackagePreferences prefs = getPackagePreferencesLocked(sourcePkg, sourceUid);
+ if (prefs != null && prefs.delegate != null) {
+ prefs.delegate.mUserAllowed = userAllowed;
+ changed = true;
+ }
+ }
+ if (changed) {
updateConfig();
}
}
@@ -1269,13 +1340,16 @@ public class PreferencesHelper implements RankingConfig {
*/
public boolean isDelegateAllowed(String sourcePkg, int sourceUid,
String potentialDelegatePkg, int potentialDelegateUid) {
- PackagePreferences prefs = getPackagePreferences(sourcePkg, sourceUid);
+ synchronized (mPackagePreferences) {
+ PackagePreferences prefs = getPackagePreferencesLocked(sourcePkg, sourceUid);
- return prefs != null && prefs.isValidDelegate(potentialDelegatePkg, potentialDelegateUid);
+ return prefs != null && prefs.isValidDelegate(potentialDelegatePkg,
+ potentialDelegateUid);
+ }
}
@VisibleForTesting
- void lockFieldsForUpdate(NotificationChannel original, NotificationChannel update) {
+ void lockFieldsForUpdateLocked(NotificationChannel original, NotificationChannel update) {
if (original.canBypassDnd() != update.canBypassDnd()) {
update.lockFields(NotificationChannel.USER_LOCKED_PRIORITY);
}
@@ -1309,30 +1383,30 @@ public class PreferencesHelper implements RankingConfig {
pw.print(prefix);
pw.println("per-package config:");
- pw.println("PackagePreferencess:");
+ pw.println("PackagePreferences:");
synchronized (mPackagePreferences) {
- dumpPackagePreferencess(pw, prefix, filter, mPackagePreferences);
+ dumpPackagePreferencesLocked(pw, prefix, filter, mPackagePreferences);
}
pw.println("Restored without uid:");
- dumpPackagePreferencess(pw, prefix, filter, mRestoredWithoutUids);
+ dumpPackagePreferencesLocked(pw, prefix, filter, mRestoredWithoutUids);
}
public void dump(ProtoOutputStream proto,
@NonNull NotificationManagerService.DumpFilter filter) {
synchronized (mPackagePreferences) {
- dumpPackagePreferencess(proto, RankingHelperProto.RECORDS, filter,
+ dumpPackagePreferencesLocked(proto, RankingHelperProto.RECORDS, filter,
mPackagePreferences);
}
- dumpPackagePreferencess(proto, RankingHelperProto.RECORDS_RESTORED_WITHOUT_UID, filter,
+ dumpPackagePreferencesLocked(proto, RankingHelperProto.RECORDS_RESTORED_WITHOUT_UID, filter,
mRestoredWithoutUids);
}
- private static void dumpPackagePreferencess(PrintWriter pw, String prefix,
+ private static void dumpPackagePreferencesLocked(PrintWriter pw, String prefix,
@NonNull NotificationManagerService.DumpFilter filter,
- ArrayMap<String, PackagePreferences> PackagePreferencess) {
- final int N = PackagePreferencess.size();
+ ArrayMap<String, PackagePreferences> packagePreferences) {
+ final int N = packagePreferences.size();
for (int i = 0; i < N; i++) {
- final PackagePreferences r = PackagePreferencess.valueAt(i);
+ final PackagePreferences r = packagePreferences.valueAt(i);
if (filter.matches(r.pkg)) {
pw.print(prefix);
pw.print(" AppSettings: ");
@@ -1369,13 +1443,13 @@ public class PreferencesHelper implements RankingConfig {
}
}
- private static void dumpPackagePreferencess(ProtoOutputStream proto, long fieldId,
+ private static void dumpPackagePreferencesLocked(ProtoOutputStream proto, long fieldId,
@NonNull NotificationManagerService.DumpFilter filter,
- ArrayMap<String, PackagePreferences> PackagePreferencess) {
- final int N = PackagePreferencess.size();
+ ArrayMap<String, PackagePreferences> packagePreferences) {
+ final int N = packagePreferences.size();
long fToken;
for (int i = 0; i < N; i++) {
- final PackagePreferences r = PackagePreferencess.valueAt(i);
+ final PackagePreferences r = packagePreferences.valueAt(i);
if (filter.matches(r.pkg)) {
fToken = proto.start(fieldId);
@@ -1626,11 +1700,11 @@ public class PreferencesHelper implements RankingConfig {
// Package upgrade
try {
synchronized (mPackagePreferences) {
- PackagePreferences fullPackagePreferences = getPackagePreferences(pkg,
+ PackagePreferences fullPackagePreferences = getPackagePreferencesLocked(pkg,
mPm.getPackageUidAsUser(pkg, changeUserId));
if (fullPackagePreferences != null) {
- createDefaultChannelIfNeeded(fullPackagePreferences);
- deleteDefaultChannelIfNeeded(fullPackagePreferences);
+ createDefaultChannelIfNeededLocked(fullPackagePreferences);
+ deleteDefaultChannelIfNeededLocked(fullPackagePreferences);
}
}
} catch (PackageManager.NameNotFoundException e) {
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index 51d5acc9b555..ee07c7de9dbc 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -166,6 +166,13 @@ import java.util.concurrent.atomic.AtomicBoolean;
* . . . . . . . . . . . . . . . . . . . . . .
* </pre>
*
+ * <p>To test the OMS, execute:
+ * <code>
+ * atest FrameworksServicesTests:com.android.server.om # internal tests
+ * atest OverlayDeviceTests OverlayHostTests # public API tests
+ * </code>
+ * </p>
+ *
* <p>Finally, here is a list of keywords used in the OMS context.</p>
*
* <ul>
diff --git a/services/core/java/com/android/server/om/OverlayManagerSettings.java b/services/core/java/com/android/server/om/OverlayManagerSettings.java
index 36b5beb7bbb2..f35c70780db9 100644
--- a/services/core/java/com/android/server/om/OverlayManagerSettings.java
+++ b/services/core/java/com/android/server/om/OverlayManagerSettings.java
@@ -26,6 +26,7 @@ import android.util.ArrayMap;
import android.util.Slog;
import android.util.Xml;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.XmlUtils;
@@ -327,7 +328,8 @@ final class OverlayManagerSettings {
Serializer.persist(mItems, os);
}
- private static final class Serializer {
+ @VisibleForTesting
+ static final class Serializer {
private static final String TAG_OVERLAYS = "overlays";
private static final String TAG_ITEM = "item";
@@ -343,7 +345,8 @@ final class OverlayManagerSettings {
private static final String ATTR_USER_ID = "userId";
private static final String ATTR_VERSION = "version";
- private static final int CURRENT_VERSION = 3;
+ @VisibleForTesting
+ static final int CURRENT_VERSION = 3;
public static void restore(@NonNull final ArrayList<SettingsItem> table,
@NonNull final InputStream is) throws IOException, XmlPullParserException {
diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java
index 944aef5ab223..21b6f12b6f8b 100644
--- a/services/core/java/com/android/server/pm/ApexManager.java
+++ b/services/core/java/com/android/server/pm/ApexManager.java
@@ -324,6 +324,8 @@ class ApexManager {
ipw.println("State: ROLLBACK IN PROGRESS");
} else if (si.isRolledBack) {
ipw.println("State: ROLLED BACK");
+ } else if (si.isRollbackFailed) {
+ ipw.println("State: ROLLBACK FAILED");
}
ipw.decreaseIndent();
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d5b1ca3e72a1..6c5abe49fe13 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -757,124 +757,9 @@ public class PackageManagerService extends IPackageManager.Stub
@Override public final boolean hasFeature(String feature) {
return PackageManagerService.this.hasSystemFeature(feature, 0);
}
-
- final List<PackageParser.Package> getStaticOverlayPackages(
- Collection<PackageParser.Package> allPackages, String targetPackageName) {
- if ("android".equals(targetPackageName)) {
- // Static RROs targeting to "android", ie framework-res.apk, are already applied by
- // native AssetManager.
- return null;
- }
-
- List<PackageParser.Package> overlayPackages = null;
- for (PackageParser.Package p : allPackages) {
- if (targetPackageName.equals(p.mOverlayTarget) && p.mOverlayIsStatic) {
- if (overlayPackages == null) {
- overlayPackages = new ArrayList<>();
- }
- overlayPackages.add(p);
- }
- }
- if (overlayPackages != null) {
- Comparator<PackageParser.Package> cmp =
- Comparator.comparingInt(p -> p.mOverlayPriority);
- overlayPackages.sort(cmp);
- }
- return overlayPackages;
- }
-
- final String[] getStaticOverlayPaths(List<PackageParser.Package> overlayPackages,
- String targetPath) {
- if (overlayPackages == null || overlayPackages.isEmpty()) {
- return null;
- }
- List<String> overlayPathList = null;
- for (PackageParser.Package overlayPackage : overlayPackages) {
- if (targetPath == null) {
- if (overlayPathList == null) {
- overlayPathList = new ArrayList<>();
- }
- overlayPathList.add(overlayPackage.baseCodePath);
- continue;
- }
-
- try {
- // Creates idmaps for system to parse correctly the Android manifest of the
- // target package.
- //
- // OverlayManagerService will update each of them with a correct gid from its
- // target package app id.
- mInstaller.idmap(targetPath, overlayPackage.baseCodePath,
- UserHandle.getSharedAppGid(
- UserHandle.getUserGid(UserHandle.USER_SYSTEM)));
- if (overlayPathList == null) {
- overlayPathList = new ArrayList<>();
- }
- overlayPathList.add(overlayPackage.baseCodePath);
- } catch (InstallerException e) {
- Slog.e(TAG, "Failed to generate idmap for " + targetPath + " and " +
- overlayPackage.baseCodePath);
- }
- }
- return overlayPathList == null ? null : overlayPathList.toArray(new String[0]);
- }
-
- String[] getStaticOverlayPaths(String targetPackageName, String targetPath) {
- List<PackageParser.Package> overlayPackages;
- synchronized (mInstallLock) {
- synchronized (mPackages) {
- overlayPackages = getStaticOverlayPackages(
- mPackages.values(), targetPackageName);
- }
- // It is safe to keep overlayPackages without holding mPackages because static overlay
- // packages can't be uninstalled or disabled.
- return getStaticOverlayPaths(overlayPackages, targetPath);
- }
- }
-
- @Override public final String[] getOverlayApks(String targetPackageName) {
- return getStaticOverlayPaths(targetPackageName, null);
- }
-
- @Override public final String[] getOverlayPaths(String targetPackageName,
- String targetPath) {
- return getStaticOverlayPaths(targetPackageName, targetPath);
- }
- }
-
- class ParallelPackageParserCallback extends PackageParserCallback {
- List<PackageParser.Package> mOverlayPackages = null;
-
- void findStaticOverlayPackages() {
- synchronized (mPackages) {
- for (PackageParser.Package p : mPackages.values()) {
- if (p.mOverlayIsStatic) {
- if (mOverlayPackages == null) {
- mOverlayPackages = new ArrayList<>();
- }
- mOverlayPackages.add(p);
- }
- }
- }
- }
-
- @Override
- synchronized String[] getStaticOverlayPaths(String targetPackageName, String targetPath) {
- // We can trust mOverlayPackages without holding mPackages because package uninstall
- // can't happen while running parallel parsing.
- // And we can call mInstaller inside getStaticOverlayPaths without holding mInstallLock
- // because mInstallLock is held before running parallel parsing.
- // Moreover holding mPackages or mInstallLock on each parsing thread causes dead-lock.
- return mOverlayPackages == null ? null :
- getStaticOverlayPaths(
- getStaticOverlayPackages(mOverlayPackages, targetPackageName),
- targetPath);
- }
}
final PackageParser.Callback mPackageParserCallback = new PackageParserCallback();
- final ParallelPackageParserCallback mParallelPackageParserCallback =
- new ParallelPackageParserCallback();
// Currently known shared libraries.
final ArrayMap<String, LongSparseArray<SharedLibraryInfo>> mSharedLibraries = new ArrayMap<>();
@@ -2558,8 +2443,6 @@ public class PackageManagerService extends IPackageManager.Stub
| SCAN_AS_ODM,
0);
- mParallelPackageParserCallback.findStaticOverlayPackages();
-
// Find base frameworks (resource packages without code).
scanDirTracedLI(frameworkDir,
mDefParseFlags
@@ -3051,7 +2934,7 @@ public class PackageManagerService extends IPackageManager.Stub
+ mSdkVersion + "; regranting permissions for internal storage");
}
mPermissionManager.updateAllPermissions(
- StorageManager.UUID_PRIVATE_INTERNAL, sdkUpdated, false, mPackages.values(),
+ StorageManager.UUID_PRIVATE_INTERNAL, sdkUpdated, mPackages.values(),
mPermissionCallback);
ver.sdkVersion = mSdkVersion;
@@ -5569,7 +5452,7 @@ public class PackageManagerService extends IPackageManager.Stub
synchronized (mPackages) {
mPermissionManager.updateAllPermissions(
- StorageManager.UUID_PRIVATE_INTERNAL, false, false, mPackages.values(),
+ StorageManager.UUID_PRIVATE_INTERNAL, false, mPackages.values(),
mPermissionCallback);
for (int userId : UserManagerService.getInstance().getUserIds()) {
final int packageCount = mPackages.size();
@@ -8782,7 +8665,7 @@ public class PackageManagerService extends IPackageManager.Stub
}
try (ParallelPackageParser parallelPackageParser = new ParallelPackageParser(
mSeparateProcesses, mOnlyCore, mMetrics, mCacheDir,
- mParallelPackageParserCallback)) {
+ mPackageParserCallback)) {
// Submit files for parsing in parallel
int fileCount = 0;
for (File file : files) {
@@ -19710,8 +19593,9 @@ public class PackageManagerService extends IPackageManager.Stub
filter.dump(new LogPrinter(Log.INFO, TAG), " ");
pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
scheduleWritePackageRestrictionsLocked(userId);
- postPreferredActivityChangedBroadcast(userId);
- updateDefaultHomeLPw(userId);
+ if (!updateDefaultHomeLPw(userId)) {
+ postPreferredActivityChangedBroadcast(userId);
+ }
}
}
@@ -20490,7 +20374,10 @@ public class PackageManagerService extends IPackageManager.Stub
return null;
}
- private void updateDefaultHomeLPw(int userId) {
+ /**
+ * @return Whether the ACTION_PREFERRED_ACTIVITY_CHANGED broadcast has been scheduled.
+ */
+ private boolean updateDefaultHomeLPw(int userId) {
Intent intent = getHomeIntent();
List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null,
PackageManager.GET_META_DATA, userId);
@@ -20501,15 +20388,20 @@ public class PackageManagerService extends IPackageManager.Stub
? preferredResolveInfo.activityInfo.packageName : null;
String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId);
if (TextUtils.equals(currentPackageName, packageName)) {
- return;
+ return false;
}
String[] callingPackages = getPackagesForUid(Binder.getCallingUid());
if (callingPackages != null && ArrayUtils.contains(callingPackages,
mRequiredPermissionControllerPackage)) {
// PermissionController manages default home directly.
- return;
+ return false;
}
- mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId);
+ mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId, (successful) -> {
+ if (successful) {
+ postPreferredActivityChangedBroadcast(userId);
+ }
+ });
+ return true;
}
@Override
@@ -21213,8 +21105,8 @@ public class PackageManagerService extends IPackageManager.Stub
// try optimizing this.
synchronized (mPackages) {
mPermissionManager.updateAllPermissions(
- StorageManager.UUID_PRIVATE_INTERNAL, false, mIsPreQUpgrade,
- mPackages.values(), mPermissionCallback);
+ StorageManager.UUID_PRIVATE_INTERNAL, false, mPackages.values(),
+ mPermissionCallback);
}
// Watch for external volumes that come and go over time
@@ -22204,8 +22096,8 @@ public class PackageManagerService extends IPackageManager.Stub
logCriticalInfo(Log.INFO, "Platform changed from " + ver.sdkVersion + " to "
+ mSdkVersion + "; regranting permissions for " + volumeUuid);
}
- mPermissionManager.updateAllPermissions(volumeUuid, sdkUpdated, false,
- mPackages.values(), mPermissionCallback);
+ mPermissionManager.updateAllPermissions(volumeUuid, sdkUpdated, mPackages.values(),
+ mPermissionCallback);
// Yay, everything is now upgraded
ver.forceCurrent();
@@ -23238,7 +23130,7 @@ public class PackageManagerService extends IPackageManager.Stub
synchronized(mPackages) {
// NOTE: This adds UPDATE_PERMISSIONS_REPLACE_PKG
mPermissionManager.updateAllPermissions(
- StorageManager.UUID_PRIVATE_INTERNAL, true, false, mPackages.values(),
+ StorageManager.UUID_PRIVATE_INTERNAL, true, mPackages.values(),
mPermissionCallback);
}
}
@@ -24807,11 +24699,9 @@ public class PackageManagerService extends IPackageManager.Stub
}
if (mExternalSourcesPolicy != null) {
int isTrusted = mExternalSourcesPolicy.getPackageTrustedToInstallApps(packageName, uid);
- if (isTrusted != PackageManagerInternal.ExternalSourcesPolicy.USER_DEFAULT) {
- return isTrusted == PackageManagerInternal.ExternalSourcesPolicy.USER_TRUSTED;
- }
+ return isTrusted == PackageManagerInternal.ExternalSourcesPolicy.USER_TRUSTED;
}
- return checkUidPermission(appOpPermission, uid) == PERMISSION_GRANTED;
+ return false;
}
@Override
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java
index a0f0a3178d1b..1908b3f8b366 100644
--- a/services/core/java/com/android/server/pm/StagingManager.java
+++ b/services/core/java/com/android/server/pm/StagingManager.java
@@ -565,7 +565,8 @@ public class StagingManager {
// isRollbackInProgress is included to cover the scenario, when a device is rebooted in
// during the rollback, and apexd fails to resume the rollback after reboot.
return apexSessionInfo.isActivationFailed || apexSessionInfo.isUnknown
- || apexSessionInfo.isRolledBack || apexSessionInfo.isRollbackInProgress;
+ || apexSessionInfo.isRolledBack || apexSessionInfo.isRollbackInProgress
+ || apexSessionInfo.isRollbackFailed;
}
@GuardedBy("mStagedSessions")
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index ae4ff03a5d8c..3be51c58798e 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -19,10 +19,14 @@ package com.android.server.pm;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
+import android.app.AppGlobals;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
import android.os.Binder;
import android.os.Bundle;
import android.os.Process;
@@ -221,16 +225,66 @@ public class UserRestrictionsUtils {
);
/**
- * Throws {@link IllegalArgumentException} if the given restriction name is invalid.
+ * Returns whether the given restriction name is valid (and logs it if it isn't).
*/
public static boolean isValidRestriction(@NonNull String restriction) {
if (!USER_RESTRICTIONS.contains(restriction)) {
- Slog.e(TAG, "Unknown restriction: " + restriction);
+ // Log this, with severity depending on the source.
+ final int uid = Binder.getCallingUid();
+ String[] pkgs = null;
+ try {
+ pkgs = AppGlobals.getPackageManager().getPackagesForUid(uid);
+ } catch (RemoteException e) {
+ // Ignore
+ }
+ StringBuilder msg = new StringBuilder("Unknown restriction queried by uid ");
+ msg.append(uid);
+ if (pkgs != null && pkgs.length > 0) {
+ msg.append(" (");
+ msg.append(pkgs[0]);
+ if (pkgs.length > 1) {
+ msg.append(" et al");
+ }
+ msg.append(")");
+ }
+ msg.append(": ");
+ msg.append(restriction);
+ if (restriction != null && isSystemApp(uid, pkgs)) {
+ Slog.wtf(TAG, msg.toString());
+ } else {
+ Slog.e(TAG, msg.toString());
+ }
return false;
}
return true;
}
+ /** Returns whether the given uid (or corresponding packageList) is for a System app. */
+ private static boolean isSystemApp(int uid, String[] packageList) {
+ if (UserHandle.isCore(uid)) {
+ return true;
+ }
+ if (packageList == null) {
+ return false;
+ }
+ final IPackageManager pm = AppGlobals.getPackageManager();
+ for (int i = 0; i < packageList.length; i++) {
+ try {
+ final int flags = PackageManager.MATCH_UNINSTALLED_PACKAGES
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
+ final ApplicationInfo appInfo =
+ pm.getApplicationInfo(packageList[i], flags, UserHandle.getUserId(uid));
+ if (appInfo != null && appInfo.isSystemApp()) {
+ return true;
+ }
+ } catch (RemoteException e) {
+ // Ignore
+ }
+ }
+ return false;
+ }
+
public static void writeRestrictions(@NonNull XmlSerializer serializer,
@Nullable Bundle restrictions, @NonNull String tag) throws IOException {
if (restrictions == null) {
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 5df2f86d6ad7..35fa9406eb79 100644
--- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
@@ -302,6 +302,7 @@ public final class DefaultPermissionGrantPolicy {
}
public void grantDefaultPermissions(int userId) {
+ removeSystemFixedStorage(userId);
grantPermissionsToSysComponentsAndPrivApps(userId);
grantDefaultSystemHandlerPermissions(userId);
grantDefaultPermissionExceptions(userId);
@@ -310,6 +311,46 @@ public final class DefaultPermissionGrantPolicy {
}
}
+ // STOPSHIP: This is meant to fix the devices messed up by storage permission model 2 and
+ // should be removed once all devices were updated
+ private void removeSystemFixedStorage(int userId) {
+ List<PackageInfo> packages = mContext.getPackageManager().getInstalledPackagesAsUser(
+ DEFAULT_PACKAGE_INFO_QUERY_FLAGS, userId);
+
+ for (PackageInfo pkg : packages) {
+ if (pkg == null || pkg.requestedPermissions == null) {
+ continue;
+ }
+
+ for (String permission : pkg.requestedPermissions) {
+ if (!(Manifest.permission.READ_EXTERNAL_STORAGE.equals(permission)
+ || Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permission))) {
+ continue;
+ }
+
+ int flags = mContext.getPackageManager().getPermissionFlags(permission,
+ pkg.packageName, UserHandle.of(userId));
+ if ((flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) == 0) {
+ continue;
+ }
+
+ Log.v(TAG, "Removing system fixed " + pkg.packageName + "/" + permission);
+ mContext.getPackageManager().updatePermissionFlags(permission, pkg.packageName,
+ PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, 0, UserHandle.of(userId));
+
+ if (!doesPackageSupportRuntimePermissions(pkg)
+ || (flags & (PackageManager.FLAG_PERMISSION_USER_SET
+ | PackageManager.FLAG_PERMISSION_POLICY_FIXED)) != 0) {
+ continue;
+ }
+
+ Log.v(TAG, "Revoking " + pkg.packageName + "/" + permission);
+ mContext.getPackageManager().revokeRuntimePermission(pkg.packageName, permission,
+ UserHandle.of(userId));
+ }
+ }
+ }
+
private void grantRuntimePermissionsForSystemPackage(int userId, PackageInfo pkg) {
Set<String> permissions = new ArraySet<>();
for (String permission : pkg.requestedPermissions) {
@@ -1322,6 +1363,9 @@ public final class DefaultPermissionGrantPolicy {
private PackageInfo getPackageInfo(String pkg,
@PackageManager.PackageInfoFlags int extraFlags) {
+ if (pkg == null) {
+ return null;
+ }
try {
return mContext.getPackageManager().getPackageInfo(pkg,
DEFAULT_PACKAGE_INFO_QUERY_FLAGS | extraFlags);
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 9336c55d4a79..c75a462d5bc1 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -34,10 +34,10 @@ import static android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQU
import static android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET;
-import static android.content.pm.PackageManager.MASK_PERMISSION_FLAGS_ALL;
import static android.content.pm.PackageManager.FLAG_PERMISSION_WHITELIST_INSTALLER;
import static android.content.pm.PackageManager.FLAG_PERMISSION_WHITELIST_SYSTEM;
import static android.content.pm.PackageManager.FLAG_PERMISSION_WHITELIST_UPGRADE;
+import static android.content.pm.PackageManager.MASK_PERMISSION_FLAGS_ALL;
import static android.content.pm.PackageManager.RESTRICTED_PERMISSIONS_ENABLED;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
import static android.os.UserHandle.getAppId;
@@ -69,7 +69,6 @@ import android.content.pm.PermissionInfo;
import android.metrics.LogMaker;
import android.os.Binder;
import android.os.Build;
-import android.os.Debug;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
@@ -82,7 +81,6 @@ import android.os.storage.StorageManagerInternal;
import android.permission.PermissionControllerManager;
import android.permission.PermissionManager;
import android.permission.PermissionManagerInternal;
-import android.provider.Settings;
import android.permission.PermissionManagerInternal.OnRuntimePermissionStateChangedListener;
import android.text.TextUtils;
import android.util.ArrayMap;
@@ -2458,9 +2456,8 @@ public class PermissionManagerService {
}
if (updatePermissions) {
- // Update app permissions to take into account the new whitelist state.
- updatePermissions(pkg.packageName, pkg, getVolumeUuidForPackage(pkg),
- 0 /*flags*/, null /*allPackages*/, callback);
+ // Update permission of this app to take into account the new whitelist state.
+ restorePermissionState(pkg, false, pkg.packageName, callback);
// If this resulted in losing a permission we need to kill the app.
if (oldGrantedRestrictedPermissions != null) {
@@ -2605,62 +2602,12 @@ public class PermissionManagerService {
}
private void updateAllPermissions(String volumeUuid, boolean sdkUpdated,
- boolean updatePermissionsOnPreQUpdate, Collection<PackageParser.Package> allPackages,
- PermissionCallback callback) {
+ Collection<PackageParser.Package> allPackages, PermissionCallback callback) {
final int flags = UPDATE_PERMISSIONS_ALL |
(sdkUpdated
? UPDATE_PERMISSIONS_REPLACE_PKG | UPDATE_PERMISSIONS_REPLACE_ALL
: 0);
updatePermissions(null, null, volumeUuid, flags, allPackages, callback);
-
- if (updatePermissionsOnPreQUpdate) {
- final int[] userIds = UserManagerService.getInstance().getUserIds();
-
- for (PackageParser.Package pkg : allPackages) {
- final PackageSetting ps = (PackageSetting) pkg.mExtras;
- if (ps == null) {
- return;
- }
-
- final boolean appSupportsRuntimePermissions =
- pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M;
- final PermissionsState permsState = ps.getPermissionsState();
-
- for (String permName : new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.ACCESS_COARSE_LOCATION,
- Manifest.permission.ACCESS_BACKGROUND_LOCATION}) {
- final BasePermission bp = mSettings.getPermissionLocked(permName);
-
- for (int userId : userIds) {
- if (Settings.Secure.getIntForUser(mContext.getContentResolver(),
- Settings.Secure.LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE, 0, userId)
- != 0) {
- continue;
- }
-
- final PermissionState permState = permsState.getRuntimePermissionState(
- permName, userId);
-
- if (permState != null
- && (permState.getFlags() & BLOCKING_PERMISSION_FLAGS) == 0) {
- if (permState.isGranted()) {
- permsState.updatePermissionFlags(bp, userId,
- USER_PERMISSION_FLAGS, 0);
- }
-
- if (appSupportsRuntimePermissions) {
- permsState.revokeRuntimePermission(bp, userId);
- } else {
- // Force a review even for apps that were already installed
- permsState.updatePermissionFlags(bp, userId,
- FLAG_PERMISSION_REVIEW_REQUIRED,
- FLAG_PERMISSION_REVIEW_REQUIRED);
- }
- }
- }
- }
- }
- }
}
private void updatePermissions(String changingPkgName, PackageParser.Package changingPkg,
@@ -3150,10 +3097,9 @@ public class PermissionManagerService {
}
@Override
public void updateAllPermissions(String volumeUuid, boolean sdkUpdated,
- boolean updatePermissionsOnPreQUpdate, Collection<PackageParser.Package> allPackages,
- PermissionCallback callback) {
+ Collection<PackageParser.Package> allPackages, PermissionCallback callback) {
PermissionManagerService.this.updateAllPermissions(
- volumeUuid, sdkUpdated, updatePermissionsOnPreQUpdate, allPackages, callback);
+ volumeUuid, sdkUpdated, allPackages, callback);
}
@Override
public String[] getAppOpPermissionPackages(String permName) {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
index 34f922e11d08..9fb71f44716b 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java
@@ -93,7 +93,6 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
@Nullable PackageParser.Package pkg, boolean replaceGrant,
@NonNull Collection<PackageParser.Package> allPacakges, PermissionCallback callback);
public abstract void updateAllPermissions(@Nullable String volumeUuid, boolean sdkUpdate,
- boolean updatePermissionsOnPreQUpdate,
@NonNull Collection<PackageParser.Package> allPacakges, PermissionCallback callback);
/**
diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java
index 3011808d281c..67f30dc2e9fc 100644
--- a/services/core/java/com/android/server/policy/PermissionPolicyService.java
+++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java
@@ -22,25 +22,28 @@ import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.AppOpsManager;
import android.content.Context;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PackageManagerInternal;
import android.content.pm.PackageManagerInternal.PackageListObserver;
import android.content.pm.PackageParser;
import android.content.pm.PermissionInfo;
+import android.os.Process;
import android.os.UserHandle;
-import android.os.UserManagerInternal;
import android.permission.PermissionControllerManager;
import android.permission.PermissionManagerInternal;
+import android.util.ArraySet;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseIntArray;
-import com.android.internal.util.function.QuadConsumer;
-import com.android.internal.util.function.TriConsumer;
import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.CountDownLatch;
/**
@@ -51,11 +54,17 @@ import java.util.concurrent.CountDownLatch;
* and app ops - and vise versa.
*/
public final class PermissionPolicyService extends SystemService {
+ private static final String PLATFORM_PACKAGE = "android";
private static final String LOG_TAG = PermissionPolicyService.class.getSimpleName();
+ // No need to lock as this is populated on boot when the OS is
+ // single threaded and is never mutated until a reboot.
+ private static final ArraySet<String> sAllRestrictedPermissions = new ArraySet<>();
+
public PermissionPolicyService(@NonNull Context context) {
super(context);
+ cacheAllRestrictedPermissions(context);
}
@Override
@@ -89,6 +98,20 @@ public final class PermissionPolicyService extends SystemService {
startWatchingRuntimePermissionChanges(getContext(), userId);
}
+ private static void cacheAllRestrictedPermissions(@NonNull Context context) {
+ try {
+ final PackageInfo packageInfo = context.getPackageManager()
+ .getPackageInfo(PLATFORM_PACKAGE, PackageManager.GET_PERMISSIONS);
+ for (PermissionInfo permissionInfo : packageInfo.permissions) {
+ if (permissionInfo.isRestricted()) {
+ sAllRestrictedPermissions.add(permissionInfo.name);
+ }
+ }
+ } catch (NameNotFoundException impossible) {
+ /* cannot happen */
+ }
+ }
+
private static void grantOrUpgradeDefaultRuntimePermissionsInNeeded(@NonNull Context context,
@UserIdInt int userId) {
final PackageManagerInternal packageManagerInternal = LocalServices.getService(
@@ -123,16 +146,6 @@ public final class PermissionPolicyService extends SystemService {
}
}
- private static void onRestrictedPermissionEnabledChange(@NonNull Context context) {
- final PermissionManagerInternal permissionManagerInternal = LocalServices
- .getService(PermissionManagerInternal.class);
- final UserManagerInternal userManagerInternal = LocalServices.getService(
- UserManagerInternal.class);
- for (int userId : userManagerInternal.getUserIds()) {
- synchronizePermissionsAndAppOpsForUser(context, userId);
- }
- }
-
private static void startWatchingRuntimePermissionChanges(@NonNull Context context,
int userId) {
final PermissionManagerInternal permissionManagerInternal = LocalServices.getService(
@@ -149,40 +162,66 @@ public final class PermissionPolicyService extends SystemService {
@NonNull String packageName, @UserIdInt int userId) {
final PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
- final PackageParser.Package pkg = packageManagerInternal
- .getPackage(packageName);
- if (pkg != null) {
- PermissionToOpSynchronizer.syncPackage(context, pkg, userId);
+ final PackageParser.Package pkg = packageManagerInternal.getPackage(packageName);
+ if (pkg == null) {
+ return;
+ }
+ final PermissionToOpSynchroniser synchroniser = new PermissionToOpSynchroniser(context);
+ synchroniser.addPackage(context, pkg, userId);
+ final String[] sharedPkgNames = packageManagerInternal.getPackagesForSharedUserId(
+ pkg.mSharedUserId, userId);
+ if (sharedPkgNames != null) {
+ for (String sharedPkgName : sharedPkgNames) {
+ final PackageParser.Package sharedPkg = packageManagerInternal
+ .getPackage(sharedPkgName);
+ if (sharedPkg != null) {
+ synchroniser.addPackage(context, sharedPkg, userId);
+ }
+ }
}
+ synchroniser.syncPackages();
}
private static void synchronizePermissionsAndAppOpsForUser(@NonNull Context context,
@UserIdInt int userId) {
final PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
- final PermissionToOpSynchronizer synchronizer = new PermissionToOpSynchronizer(context);
+ final PermissionToOpSynchroniser synchronizer = new PermissionToOpSynchroniser(context);
packageManagerInternal.forEachPackage((pkg) ->
synchronizer.addPackage(context, pkg, userId));
synchronizer.syncPackages();
}
- private static class PermissionToOpSynchronizer {
+ /**
+ * Synchronizes permission to app ops. You *must* always sync all packages
+ * in a shared UID at the same time to ensure proper synchronization.
+ */
+ private static class PermissionToOpSynchroniser {
private final @NonNull Context mContext;
+ private final @NonNull SparseIntArray mUids = new SparseIntArray();
private final @NonNull SparseArray<String> mPackageNames = new SparseArray<>();
private final @NonNull SparseIntArray mAllowedUidOps = new SparseIntArray();
private final @NonNull SparseIntArray mDefaultUidOps = new SparseIntArray();
- PermissionToOpSynchronizer(@NonNull Context context) {
+ PermissionToOpSynchroniser(@NonNull Context context) {
mContext = context;
}
- private void addPackage(@NonNull Context context,
- @NonNull PackageParser.Package pkg, @UserIdInt int userId) {
- addPackage(context, pkg, userId, this::addAllowedEntry, this::addIgnoredEntry);
- }
-
void syncPackages() {
+ // TRICKY: we set the app op for a restricted permission to allow if the app
+ // requesting the permission is whitelisted and to deny if the app requesting
+ // the permission is not whitelisted. However, there is another case where an
+ // app in a shared user can access a component in another app in the same shared
+ // user due to being in the same shared user and not by having the permission
+ // that guards the component form the rest of the world. We need to handle this.
+ // The way we do this is by setting app ops corresponding to non requested
+ // restricted permissions to allow as this would allow the shared uid access
+ // case and be okay for other apps as they would not have the permission and
+ // would fail on the permission checks before reaching the app op check.
+ final SparseArray<List<String>> unrequestedRestrictedPermissionsForUid =
+ new SparseArray<>();
+
final AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
final int allowedCount = mAllowedUidOps.size();
for (int i = 0; i < allowedCount; i++) {
@@ -190,31 +229,84 @@ public final class PermissionPolicyService extends SystemService {
final int uid = mAllowedUidOps.valueAt(i);
final String packageName = mPackageNames.valueAt(i);
setUidModeAllowed(appOpsManager, opCode, uid, packageName);
+
+ // Keep track this permission was requested by the UID.
+ List<String> unrequestedRestrictedPermissions =
+ unrequestedRestrictedPermissionsForUid.get(uid);
+ if (unrequestedRestrictedPermissions == null) {
+ unrequestedRestrictedPermissions = new ArrayList<>(sAllRestrictedPermissions);
+ unrequestedRestrictedPermissionsForUid.put(uid,
+ unrequestedRestrictedPermissions);
+ }
+ unrequestedRestrictedPermissions.remove(AppOpsManager.opToPermission(opCode));
+
+ mUids.delete(uid);
}
final int defaultCount = mDefaultUidOps.size();
for (int i = 0; i < defaultCount; i++) {
final int opCode = mDefaultUidOps.keyAt(i);
final int uid = mDefaultUidOps.valueAt(i);
setUidModeDefault(appOpsManager, opCode, uid);
+
+ // Keep track this permission was requested by the UID.
+ List<String> unrequestedRestrictedPermissions =
+ unrequestedRestrictedPermissionsForUid.get(uid);
+ if (unrequestedRestrictedPermissions == null) {
+ unrequestedRestrictedPermissions = new ArrayList<>(sAllRestrictedPermissions);
+ unrequestedRestrictedPermissionsForUid.put(uid,
+ unrequestedRestrictedPermissions);
+ }
+ unrequestedRestrictedPermissions.remove(AppOpsManager.opToPermission(opCode));
+
+ mUids.delete(uid);
}
- }
- static void syncPackage(@NonNull Context context, @NonNull PackageParser.Package pkg,
- @UserIdInt int userId) {
- addPackage(context, pkg, userId, PermissionToOpSynchronizer::setUidModeAllowed,
- PermissionToOpSynchronizer::setUidModeDefault);
+ // Give root access
+ mUids.put(Process.ROOT_UID, Process.ROOT_UID);
+
+ // Add records for UIDs that don't use any restricted permissions.
+ final int uidCount = mUids.size();
+ for (int i = 0; i < uidCount; i++) {
+ final int uid = mUids.keyAt(i);
+ unrequestedRestrictedPermissionsForUid.put(uid,
+ new ArrayList<>(sAllRestrictedPermissions));
+ }
+
+ // Flip ops for all unrequested restricted permission for the UIDs.
+ final int unrequestedUidCount = unrequestedRestrictedPermissionsForUid.size();
+ for (int i = 0; i < unrequestedUidCount; i++) {
+ final List<String> unrequestedRestrictedPermissions =
+ unrequestedRestrictedPermissionsForUid.valueAt(i);
+ if (unrequestedRestrictedPermissions != null) {
+ final int uid = unrequestedRestrictedPermissionsForUid.keyAt(i);
+ final String[] packageNames = (uid != Process.ROOT_UID)
+ ? mContext.getPackageManager().getPackagesForUid(uid)
+ : new String[] {"root"};
+ if (packageNames == null) {
+ continue;
+ }
+ final int permissionCount = unrequestedRestrictedPermissions.size();
+ for (int j = 0; j < permissionCount; j++) {
+ final String permission = unrequestedRestrictedPermissions.get(j);
+ for (String packageName : packageNames) {
+ setUidModeAllowed(appOpsManager,
+ AppOpsManager.permissionToOpCode(permission), uid,
+ packageName);
+ }
+ }
+ }
+ }
}
- private static void addPackage(@NonNull Context context,
- @NonNull PackageParser.Package pkg, @UserIdInt int userId,
- @NonNull QuadConsumer<AppOpsManager, Integer, Integer, String> allowedConsumer,
- @NonNull TriConsumer<AppOpsManager, Integer, Integer> defaultConsumer) {
+ private void addPackage(@NonNull Context context,
+ @NonNull PackageParser.Package pkg, @UserIdInt int userId) {
final PackageManager packageManager = context.getPackageManager();
- final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
final int uid = UserHandle.getUid(userId, UserHandle.getAppId(pkg.applicationInfo.uid));
final UserHandle userHandle = UserHandle.of(userId);
+ mUids.put(uid, uid);
+
final int permissionCount = pkg.requestedPermissions.size();
for (int i = 0; i < permissionCount; i++) {
final String permission = pkg.requestedPermissions.get(i);
@@ -241,9 +333,10 @@ public final class PermissionPolicyService extends SystemService {
if (permissionInfo.isHardRestricted()) {
if (applyRestriction) {
- defaultConsumer.accept(appOpsManager, opCode, uid);
+ mDefaultUidOps.put(opCode, uid);
} else {
- allowedConsumer.accept(appOpsManager, opCode, uid, pkg.packageName);
+ mPackageNames.put(opCode, pkg.packageName);
+ mAllowedUidOps.put(opCode, uid);
}
} else if (permissionInfo.isSoftRestricted()) {
//TODO: Implement soft restrictions like storage here.
@@ -251,19 +344,6 @@ public final class PermissionPolicyService extends SystemService {
}
}
- @SuppressWarnings("unused")
- private void addAllowedEntry(@NonNull AppOpsManager appOpsManager, int opCode,
- int uid, @NonNull String packageName) {
- mPackageNames.put(opCode, packageName);
- mAllowedUidOps.put(opCode, uid);
- }
-
- @SuppressWarnings("unused")
- private void addIgnoredEntry(@NonNull AppOpsManager appOpsManager,
- int opCode, int uid) {
- mDefaultUidOps.put(opCode, uid);
- }
-
private static void setUidModeAllowed(@NonNull AppOpsManager appOpsManager,
int opCode, int uid, @NonNull String packageName) {
final int currentMode = appOpsManager.unsafeCheckOpRaw(AppOpsManager
diff --git a/services/core/java/com/android/server/role/RoleManagerService.java b/services/core/java/com/android/server/role/RoleManagerService.java
index 325ba071b428..b2ac1b884483 100644
--- a/services/core/java/com/android/server/role/RoleManagerService.java
+++ b/services/core/java/com/android/server/role/RoleManagerService.java
@@ -85,6 +85,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import java.util.function.Consumer;
/**
* Service for role management.
@@ -780,19 +781,21 @@ public class RoleManagerService extends SystemService implements RoleUserState.C
}
@Override
- public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId) {
- RemoteCallback callback = new RemoteCallback(result -> {
+ public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId,
+ @NonNull Consumer<Boolean> callback) {
+ RemoteCallback remoteCallback = new RemoteCallback(result -> {
boolean successful = result != null;
if (!successful) {
Slog.e(LOG_TAG, "Failed to set default home: " + packageName);
}
+ callback.accept(successful);
});
if (packageName != null) {
getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME,
- packageName, 0, callback);
+ packageName, 0, remoteCallback);
} else {
getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0,
- callback);
+ remoteCallback);
}
}
}
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index d52ba169768f..9908b3657121 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -2629,7 +2629,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
0, null, new UserHandle(serviceUserId)));
if (!mContext.bindServiceAsUser(intent, newConn,
Context.BIND_AUTO_CREATE | Context.BIND_SHOWING_UI
- | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
+ | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE
+ | Context.BIND_INCLUDE_CAPABILITIES,
new UserHandle(serviceUserId))) {
String msg = "Unable to bind service: "
+ componentName;
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 91ec4a083ed9..e2253e7f83ce 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -693,13 +693,13 @@ final class ActivityRecord extends ConfigurationContainer {
}
}
- void scheduleTopResumedActivityChanged(boolean onTop) {
+ boolean scheduleTopResumedActivityChanged(boolean onTop) {
if (!attachedToProcess()) {
if (DEBUG_STATES) {
Slog.w(TAG, "Can't report activity position update - client not running"
+ ", activityRecord=" + this);
}
- return;
+ return false;
}
try {
if (DEBUG_STATES) {
@@ -710,7 +710,9 @@ final class ActivityRecord extends ConfigurationContainer {
TopResumedActivityChangeItem.obtain(onTop));
} catch (RemoteException e) {
// If process died, whatever.
+ return false;
}
+ return true;
}
void updateMultiWindowMode() {
@@ -863,7 +865,7 @@ final class ActivityRecord extends ConfigurationContainer {
name = intent.getComponent().flattenToShortString();
}
- private static ActivityRecord tokenToActivityRecordLocked(Token token) {
+ private static @Nullable ActivityRecord tokenToActivityRecordLocked(Token token) {
if (token == null) {
return null;
}
@@ -891,7 +893,7 @@ final class ActivityRecord extends ConfigurationContainer {
}
}
- static ActivityRecord forTokenLocked(IBinder token) {
+ static @Nullable ActivityRecord forTokenLocked(IBinder token) {
try {
return Token.tokenToActivityRecordLocked((Token)token);
} catch (ClassCastException e) {
@@ -1595,8 +1597,8 @@ final class ActivityRecord extends ConfigurationContainer {
try {
ArrayList<ReferrerIntent> ar = new ArrayList<>(1);
ar.add(rintent);
- mAtmService.getLifecycleManager().scheduleTransaction(
- app.getThread(), appToken, NewIntentItem.obtain(ar, mState == PAUSED));
+ mAtmService.getLifecycleManager().scheduleTransaction(app.getThread(), appToken,
+ NewIntentItem.obtain(ar));
unsent = false;
} catch (RemoteException e) {
Slog.w(TAG, "Exception thrown sending new intent to " + this, e);
@@ -2127,10 +2129,13 @@ final class ActivityRecord extends ConfigurationContainer {
static void activityResumedLocked(IBinder token) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
if (DEBUG_SAVED_STATE) Slog.i(TAG_STATES, "Resumed activity; dropping state of: " + r);
- if (r != null) {
- r.icicle = null;
- r.haveState = false;
+ if (r == null) {
+ // If an app reports resumed after a long delay, the record on server side might have
+ // been removed (e.g. destroy timeout), so the token could be null.
+ return;
}
+ r.icicle = null;
+ r.haveState = false;
final ActivityDisplay display = r.getDisplay();
if (display != null) {
@@ -3405,7 +3410,6 @@ final class ActivityRecord extends ConfigurationContainer {
transaction.addCallback(callbackItem);
transaction.setLifecycleStateRequest(lifecycleItem);
mAtmService.getLifecycleManager().scheduleTransaction(transaction);
- mStackSupervisor.updateTopResumedActivityIfNeeded();
// Note: don't need to call pauseIfSleepingLocked() here, because the caller will only
// request resume if this activity is currently resumed, which implies we aren't
// sleeping.
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index 6bc9fc8a9f7c..419f5be5bbc8 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -1500,7 +1500,6 @@ class ActivityStack extends ConfigurationContainer {
+ " callers=" + Debug.getCallers(5));
r.setState(RESUMED, "minimalResumeActivityLocked");
r.completeResumeLocked();
- mStackSupervisor.updateTopResumedActivityIfNeeded();
if (DEBUG_SAVED_STATE) Slog.i(TAG_SAVED_STATE,
"Launch completed; removing icicle of " + r.icicle);
}
@@ -1804,7 +1803,7 @@ class ActivityStack extends ConfigurationContainer {
if (prev.finishing) {
if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Executing finish of activity: " + prev);
prev = finishCurrentActivityLocked(prev, FINISH_AFTER_VISIBLE, false,
- "completedPausedLocked");
+ "completePausedLocked");
} else if (prev.hasProcess()) {
if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Enqueue pending stop if needed: " + prev
+ " wasStopping=" + wasStopping + " visible=" + prev.visible);
@@ -2571,7 +2570,6 @@ class ActivityStack extends ConfigurationContainer {
// Protect against recursion.
mInResumeTopActivity = true;
result = resumeTopActivityInnerLocked(prev, options);
- mStackSupervisor.updateTopResumedActivityIfNeeded();
// When resuming the top activity, it may be necessary to pause the top activity (for
// example, returning to the lock screen. We suppress the normal pause logic in
@@ -2606,6 +2604,7 @@ class ActivityStack extends ConfigurationContainer {
if (DEBUG_STACK) Slog.d(TAG_STACK, "setResumedActivity stack:" + this + " + from: "
+ mResumedActivity + " to:" + r + " reason:" + reason);
mResumedActivity = r;
+ mStackSupervisor.updateTopResumedActivityIfNeeded();
}
@GuardedBy("mService")
@@ -2962,8 +2961,7 @@ class ActivityStack extends ConfigurationContainer {
}
if (next.newIntents != null) {
- transaction.addCallback(NewIntentItem.obtain(next.newIntents,
- false /* andPause */));
+ transaction.addCallback(NewIntentItem.obtain(next.newIntents));
}
// Well the app will no longer be stopped.
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index 53dc1df5a46a..afdbd73d520d 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -853,7 +853,6 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
// Schedule transaction.
mService.getLifecycleManager().scheduleTransaction(clientTransaction);
- updateTopResumedActivityIfNeeded();
if ((proc.mInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE) != 0
&& mService.mHasHeavyWeightFeature) {
@@ -2321,8 +2320,8 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
// mTopResumedActivityWaitingForPrev == true at this point would mean that an activity
// before the prevTopActivity one hasn't reported back yet. So server never sent the top
// resumed state change message to prevTopActivity.
- if (prevActivityReceivedTopState) {
- prevTopActivity.scheduleTopResumedActivityChanged(false /* onTop */);
+ if (prevActivityReceivedTopState
+ && prevTopActivity.scheduleTopResumedActivityChanged(false /* onTop */)) {
scheduleTopResumedStateLossTimeout(prevTopActivity);
mTopResumedActivityWaitingForPrev = true;
}
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index f9980bebca9e..c1d872f23f0f 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -73,6 +73,13 @@ public class BoundsAnimationController {
/** Schedule a PiP mode changed callback when this animation ends. */
public static final int SCHEDULE_PIP_MODE_CHANGED_ON_END = 2;
+ public static final int BOUNDS = 0;
+ public static final int FADE_IN = 1;
+
+ @IntDef({BOUNDS, FADE_IN}) public @interface AnimationType {}
+
+ private static final int FADE_IN_DURATION = 500;
+
// Only accessed on UI thread.
private ArrayMap<BoundsAnimationTarget, BoundsAnimator> mRunningAnimations = new ArrayMap<>();
@@ -115,6 +122,7 @@ public class BoundsAnimationController {
private boolean mFinishAnimationAfterTransition = false;
private final AnimationHandler mAnimationHandler;
private Choreographer mChoreographer;
+ private @AnimationType int mAnimationType;
private static final int WAIT_FOR_DRAW_TIMEOUT_MS = 3000;
@@ -140,6 +148,7 @@ public class BoundsAnimationController {
implements ValueAnimator.AnimatorUpdateListener, ValueAnimator.AnimatorListener {
private final BoundsAnimationTarget mTarget;
+ private final @AnimationType int mAnimationType;
private final Rect mFrom = new Rect();
private final Rect mTo = new Rect();
private final Rect mTmpRect = new Rect();
@@ -166,8 +175,8 @@ public class BoundsAnimationController {
// Depending on whether we are animating from
// a smaller to a larger size
- private final int mFrozenTaskWidth;
- private final int mFrozenTaskHeight;
+ private int mFrozenTaskWidth;
+ private int mFrozenTaskHeight;
// Timeout callback to ensure we continue the animation if waiting for resuming or app
// windows drawn fails
@@ -176,12 +185,13 @@ public class BoundsAnimationController {
resume();
};
- BoundsAnimator(BoundsAnimationTarget target, Rect from, Rect to,
- @SchedulePipModeChangedState int schedulePipModeChangedState,
+ BoundsAnimator(BoundsAnimationTarget target, @AnimationType int animationType, Rect from,
+ Rect to, @SchedulePipModeChangedState int schedulePipModeChangedState,
@SchedulePipModeChangedState int prevShedulePipModeChangedState,
boolean moveFromFullscreen, boolean moveToFullscreen, Rect frozenTask) {
super();
mTarget = target;
+ mAnimationType = animationType;
mFrom.set(from);
mTo.set(to);
mSchedulePipModeChangedState = schedulePipModeChangedState;
@@ -195,12 +205,14 @@ public class BoundsAnimationController {
// to their final size immediately so we can use scaling to make the window
// larger. Likewise if we are going from bigger to smaller, we want to wait until
// the end so we don't have to upscale from the smaller finished size.
- if (animatingToLargerSize()) {
- mFrozenTaskWidth = mTo.width();
- mFrozenTaskHeight = mTo.height();
- } else {
- mFrozenTaskWidth = frozenTask.isEmpty() ? mFrom.width() : frozenTask.width();
- mFrozenTaskHeight = frozenTask.isEmpty() ? mFrom.height() : frozenTask.height();
+ if (mAnimationType == BOUNDS) {
+ if (animatingToLargerSize()) {
+ mFrozenTaskWidth = mTo.width();
+ mFrozenTaskHeight = mTo.height();
+ } else {
+ mFrozenTaskWidth = frozenTask.isEmpty() ? mFrom.width() : frozenTask.width();
+ mFrozenTaskHeight = frozenTask.isEmpty() ? mFrom.height() : frozenTask.height();
+ }
}
}
@@ -222,8 +234,9 @@ public class BoundsAnimationController {
// otherwise.
boolean continueAnimation;
if (mPrevSchedulePipModeChangedState == NO_PIP_MODE_CHANGED_CALLBACKS) {
- continueAnimation = mTarget.onAnimationStart(mSchedulePipModeChangedState ==
- SCHEDULE_PIP_MODE_CHANGED_ON_START, false /* forceUpdate */);
+ continueAnimation = mTarget.onAnimationStart(
+ mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START,
+ false /* forceUpdate */, mAnimationType);
// When starting an animation from fullscreen, pause here and wait for the
// windows-drawn signal before we start the rest of the transition down into PiP.
@@ -238,7 +251,8 @@ public class BoundsAnimationController {
// However, we still need to report to them that they are leaving PiP, so this will
// force an update via a mode changed callback.
continueAnimation = mTarget.onAnimationStart(
- true /* schedulePipModeChangedCallback */, true /* forceUpdate */);
+ true /* schedulePipModeChangedCallback */, true /* forceUpdate */,
+ mAnimationType);
} else {
// The animation is already running, but we should check that the TaskStack is still
// valid before continuing with the animation
@@ -285,6 +299,13 @@ public class BoundsAnimationController {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
final float value = (Float) animation.getAnimatedValue();
+ if (mAnimationType == FADE_IN) {
+ if (!mTarget.setPinnedStackAlpha(value)) {
+ cancelAndCallAnimationEnd();
+ }
+ return;
+ }
+
final float remains = 1 - value;
mTmpRect.left = (int) (mFrom.left * remains + mTo.left * value + 0.5f);
mTmpRect.top = (int) (mFrom.top * remains + mTo.top * value + 0.5f);
@@ -408,16 +429,29 @@ public class BoundsAnimationController {
public void animateBounds(final BoundsAnimationTarget target, Rect from, Rect to,
int animationDuration, @SchedulePipModeChangedState int schedulePipModeChangedState,
- boolean moveFromFullscreen, boolean moveToFullscreen) {
+ boolean moveFromFullscreen, boolean moveToFullscreen,
+ @AnimationType int animationType) {
animateBoundsImpl(target, from, to, animationDuration, schedulePipModeChangedState,
- moveFromFullscreen, moveToFullscreen);
+ moveFromFullscreen, moveToFullscreen, animationType);
}
@VisibleForTesting
BoundsAnimator animateBoundsImpl(final BoundsAnimationTarget target, Rect from, Rect to,
int animationDuration, @SchedulePipModeChangedState int schedulePipModeChangedState,
- boolean moveFromFullscreen, boolean moveToFullscreen) {
+ boolean moveFromFullscreen, boolean moveToFullscreen,
+ @AnimationType int animationType) {
final BoundsAnimator existing = mRunningAnimations.get(target);
+ // animateBoundsImpl gets called twice for each animation. The second time we get the final
+ // to rect that respects the shelf, which is when we want to resize. Our signal for fade in
+ // comes in from how to enter into pip, but we also need to use the to and from rect to
+ // decide which animation we want to run finally.
+ boolean shouldResize = false;
+ if (isRunningFadeInAnimation(target)) {
+ shouldResize = true;
+ if (from.contains(to)) {
+ animationType = FADE_IN;
+ }
+ }
final boolean replacing = existing != null;
@SchedulePipModeChangedState int prevSchedulePipModeChangedState =
NO_PIP_MODE_CHANGED_CALLBACKS;
@@ -477,18 +511,34 @@ public class BoundsAnimationController {
// Since we are replacing, we skip both animation start and end callbacks
existing.cancel();
}
- final BoundsAnimator animator = new BoundsAnimator(target, from, to,
+ if (shouldResize) {
+ target.setPinnedStackSize(to, null);
+ }
+ final BoundsAnimator animator = new BoundsAnimator(target, animationType, from, to,
schedulePipModeChangedState, prevSchedulePipModeChangedState,
moveFromFullscreen, moveToFullscreen, frozenTask);
mRunningAnimations.put(target, animator);
animator.setFloatValues(0f, 1f);
- animator.setDuration((animationDuration != -1 ? animationDuration
- : DEFAULT_TRANSITION_DURATION) * DEBUG_ANIMATION_SLOW_DOWN_FACTOR);
+ animator.setDuration(animationType == FADE_IN ? FADE_IN_DURATION
+ : (animationDuration != -1 ? animationDuration : DEFAULT_TRANSITION_DURATION)
+ * DEBUG_ANIMATION_SLOW_DOWN_FACTOR);
animator.setInterpolator(mFastOutSlowInInterpolator);
animator.start();
return animator;
}
+ public void setAnimationType(@AnimationType int animationType) {
+ mAnimationType = animationType;
+ }
+
+ /** return the current animation type. */
+ public @AnimationType int getAnimationType() {
+ @AnimationType int animationType = mAnimationType;
+ // Default to BOUNDS.
+ mAnimationType = BOUNDS;
+ return animationType;
+ }
+
public Handler getHandler() {
return mHandler;
}
@@ -498,6 +548,11 @@ public class BoundsAnimationController {
mHandler.post(this::resume);
}
+ private boolean isRunningFadeInAnimation(final BoundsAnimationTarget target) {
+ final BoundsAnimator existing = mRunningAnimations.get(target);
+ return existing != null && existing.mAnimationType == FADE_IN && existing.isStarted();
+ }
+
private void resume() {
for (int i = 0; i < mRunningAnimations.size(); i++) {
final BoundsAnimator b = mRunningAnimations.valueAt(i);
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java
index 5cb80de1a36d..9f54e49e0022 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java
@@ -32,7 +32,8 @@ interface BoundsAnimationTarget {
* callbacks
* @return whether to continue the animation
*/
- boolean onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate);
+ boolean onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate,
+ @BoundsAnimationController.AnimationType int animationType);
/**
* @return Whether the animation should be paused waiting for the windows to draw before
@@ -53,6 +54,9 @@ interface BoundsAnimationTarget {
*/
boolean setPinnedStackSize(Rect stackBounds, Rect taskBounds);
+ /** Sets the alpha of the animation target */
+ boolean setPinnedStackAlpha(float alpha);
+
/**
* Callback for the target to inform it that the animation has ended, so it can do some
* necessary cleanup.
diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java
index 144efb49e84a..07d3fb990470 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimation.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimation.java
@@ -26,6 +26,8 @@ import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
import static android.view.WindowManager.TRANSIT_NONE;
import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS;
+import static com.android.server.wm.BoundsAnimationController.BOUNDS;
+import static com.android.server.wm.BoundsAnimationController.FADE_IN;
import static com.android.server.wm.RecentsAnimationController.REORDER_KEEP_IN_PLACE;
import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_TO_ORIGINAL_POSITION;
import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_TO_TOP;
@@ -201,7 +203,8 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
}
}
- private void finishAnimation(@RecentsAnimationController.ReorderMode int reorderMode) {
+ private void finishAnimation(@RecentsAnimationController.ReorderMode int reorderMode,
+ boolean sendUserLeaveHint) {
synchronized (mService.mGlobalLock) {
if (DEBUG) Slog.d(TAG, "onAnimationFinished(): controller="
+ mWindowManager.getRecentsAnimationController()
@@ -246,7 +249,18 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
if (reorderMode == REORDER_MOVE_TO_TOP) {
// Bring the target stack to the front
mStackSupervisor.mNoAnimActivities.add(targetActivity);
- targetStack.moveToFront("RecentsAnimation.onAnimationFinished()");
+
+ if (sendUserLeaveHint) {
+ // Setting this allows the previous app to PiP.
+ mStackSupervisor.mUserLeaving = true;
+ targetStack.moveTaskToFrontLocked(targetActivity.getTaskRecord(),
+ true /* noAnimation */, null /* activityOptions */,
+ targetActivity.appTimeTracker,
+ "RecentsAnimation.onAnimationFinished()");
+ } else {
+ targetStack.moveToFront("RecentsAnimation.onAnimationFinished()");
+ }
+
if (DEBUG) {
final ActivityStack topStack = getTopNonAlwaysOnTopStack();
if (topStack != targetStack) {
@@ -300,11 +314,11 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
@Override
public void onAnimationFinished(@RecentsAnimationController.ReorderMode int reorderMode,
- boolean runSychronously) {
+ boolean runSychronously, boolean sendUserLeaveHint) {
if (runSychronously) {
- finishAnimation(reorderMode);
+ finishAnimation(reorderMode, sendUserLeaveHint);
} else {
- mService.mH.post(() -> finishAnimation(reorderMode));
+ mService.mH.post(() -> finishAnimation(reorderMode, sendUserLeaveHint));
}
}
@@ -317,6 +331,10 @@ class RecentsAnimation implements RecentsAnimationCallbacks,
}
final RecentsAnimationController controller =
mWindowManager.getRecentsAnimationController();
+ final DisplayContent dc =
+ mService.mRootActivityContainer.getDefaultDisplay().mDisplayContent;
+ dc.mBoundsAnimationController.setAnimationType(
+ controller.shouldCancelWithDeferredScreenshot() ? FADE_IN : BOUNDS);
// Cancel running recents animation and screenshot previous task when the next
// transition starts in below cases:
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index 381366995dd5..d2c510fa8902 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -27,6 +27,7 @@ import static android.view.WindowManager.INPUT_CONSUMER_RECENTS_ANIMATION;
import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
import static com.android.server.wm.ActivityTaskManagerInternal.APP_TRANSITION_RECENTS_ANIM;
import static com.android.server.wm.AnimationAdapterProto.REMOTE;
+import static com.android.server.wm.BoundsAnimationController.FADE_IN;
import static com.android.server.wm.RemoteAnimationAdapterWrapperProto.TARGET;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_RECENTS_ANIMATIONS;
import static com.android.server.wm.WindowManagerInternal.AppTransitionListener;
@@ -142,7 +143,9 @@ public class RecentsAnimationController implements DeathRecipient {
};
public interface RecentsAnimationCallbacks {
- void onAnimationFinished(@ReorderMode int reorderMode, boolean runSychronously);
+ /** Callback when recents animation is finished. */
+ void onAnimationFinished(@ReorderMode int reorderMode, boolean runSychronously,
+ boolean sendUserLeaveHint);
}
private final IRecentsAnimationController mController =
@@ -179,7 +182,7 @@ public class RecentsAnimationController implements DeathRecipient {
}
@Override
- public void finish(boolean moveHomeToTop) {
+ public void finish(boolean moveHomeToTop, boolean sendUserLeaveHint) {
if (DEBUG_RECENTS_ANIMATIONS) Slog.d(TAG, "finish(" + moveHomeToTop + "):"
+ " mCanceled=" + mCanceled);
final long token = Binder.clearCallingIdentity();
@@ -195,7 +198,9 @@ public class RecentsAnimationController implements DeathRecipient {
mCallbacks.onAnimationFinished(moveHomeToTop
? REORDER_MOVE_TO_TOP
: REORDER_MOVE_TO_ORIGINAL_POSITION,
- true /* runSynchronously */);
+ true /* runSynchronously */, sendUserLeaveHint);
+ final DisplayContent dc = mService.mRoot.getDisplayContent(mDisplayId);
+ dc.mBoundsAnimationController.setAnimationType(FADE_IN);
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -497,7 +502,8 @@ public class RecentsAnimationController implements DeathRecipient {
Slog.e(TAG, "Failed to cancel recents animation", e);
}
// Clean up and return to the previous app
- mCallbacks.onAnimationFinished(reorderMode, runSynchronously);
+ mCallbacks.onAnimationFinished(reorderMode, runSynchronously,
+ false /* sendUserLeaveHint */);
}
}
@@ -542,7 +548,8 @@ public class RecentsAnimationController implements DeathRecipient {
if (DEBUG_RECENTS_ANIMATIONS) {
Slog.d(TAG, "mRecentScreenshotAnimator finish");
}
- mCallbacks.onAnimationFinished(reorderMode, runSynchronously);
+ mCallbacks.onAnimationFinished(reorderMode, runSynchronously,
+ false /* sendUserLeaveHint */);
}, mService);
mRecentScreenshotAnimator.transferAnimation(task.mSurfaceAnimator);
}
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index 2d5c97f9a3a5..b90d60227be4 100644
--- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -275,7 +275,20 @@ class ScreenRotationAnimation {
final int displayId = display.getDisplayId();
final Surface surface = mService.mSurfaceFactory.make();
surface.copyFrom(mSurfaceControl);
- if (mService.mDisplayManagerInternal.screenshot(displayId, surface)) {
+ SurfaceControl.ScreenshotGraphicBuffer gb =
+ mService.mDisplayManagerInternal.screenshot(displayId);
+ if (gb != null) {
+ try {
+ surface.attachAndQueueBuffer(gb.getGraphicBuffer());
+ } catch (RuntimeException e) {
+ Slog.w(TAG, "Failed to attach screenshot - " + e.getMessage());
+ }
+ // If the screenshot contains secure layers, we have to make sure the
+ // screenshot surface we display it in also has FLAG_SECURE so that
+ // the user can not screenshot secure layers via the screenshot surface.
+ if (gb.containsSecureLayers()) {
+ t.setSecure(mSurfaceControl, true);
+ }
t.setLayer(mSurfaceControl, SCREEN_FREEZE_LAYER_SCREENSHOT);
t.setAlpha(mSurfaceControl, 0);
t.show(mSurfaceControl);
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index 4a0831e39100..7714458bb167 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -104,7 +104,8 @@ class TaskPositioner {
private int mMinVisibleWidth;
private int mMinVisibleHeight;
- private Task mTask;
+ @VisibleForTesting
+ Task mTask;
private boolean mResizing;
private boolean mPreserveOrientation;
private boolean mStartOrientationWasLandscape;
diff --git a/services/core/java/com/android/server/wm/TaskRecord.java b/services/core/java/com/android/server/wm/TaskRecord.java
index 714c2274af8e..9713befc91f6 100644
--- a/services/core/java/com/android/server/wm/TaskRecord.java
+++ b/services/core/java/com/android/server/wm/TaskRecord.java
@@ -1688,6 +1688,8 @@ class TaskRecord extends ConfigurationContainer {
int colorBackground = 0;
int statusBarColor = 0;
int navigationBarColor = 0;
+ boolean statusBarContrastWhenTransparent = false;
+ boolean navigationBarContrastWhenTransparent = false;
boolean topActivity = true;
for (--activityNdx; activityNdx >= 0; --activityNdx) {
final ActivityRecord r = mActivities.get(activityNdx);
@@ -1711,12 +1713,17 @@ class TaskRecord extends ConfigurationContainer {
colorBackground = r.taskDescription.getBackgroundColor();
statusBarColor = r.taskDescription.getStatusBarColor();
navigationBarColor = r.taskDescription.getNavigationBarColor();
+ statusBarContrastWhenTransparent =
+ r.taskDescription.getEnsureStatusBarContrastWhenTransparent();
+ navigationBarContrastWhenTransparent =
+ r.taskDescription.getEnsureNavigationBarContrastWhenTransparent();
}
}
topActivity = false;
}
lastTaskDescription = new TaskDescription(label, null, iconResource, iconFilename,
- colorPrimary, colorBackground, statusBarColor, navigationBarColor);
+ colorPrimary, colorBackground, statusBarColor, navigationBarColor,
+ statusBarContrastWhenTransparent, navigationBarContrastWhenTransparent);
if (mTask != null) {
mTask.setTaskDescription(lastTaskDescription);
}
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index 6fe8b43db139..f31416cdc620 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -362,11 +362,9 @@ class TaskSnapshotController {
}
final int color = ColorUtils.setAlphaComponent(
task.getTaskDescription().getBackgroundColor(), 255);
- final int statusBarColor = task.getTaskDescription().getStatusBarColor();
- final int navigationBarColor = task.getTaskDescription().getNavigationBarColor();
final LayoutParams attrs = mainWindow.getAttrs();
final SystemBarBackgroundPainter decorPainter = new SystemBarBackgroundPainter(attrs.flags,
- attrs.privateFlags, attrs.systemUiVisibility, statusBarColor, navigationBarColor);
+ attrs.privateFlags, attrs.systemUiVisibility, task.getTaskDescription());
final int width = mainWindow.getFrameLw().width();
final int height = mainWindow.getFrameLw().height();
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java
index 39b56625c011..5d99db5a00de 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java
@@ -18,6 +18,8 @@ package com.android.server.wm;
import static android.graphics.Color.WHITE;
import static android.graphics.Color.alpha;
+import static android.view.View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
+import static android.view.View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
import static android.view.WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
import static android.view.WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES;
@@ -148,9 +150,8 @@ class TaskSnapshotSurface implements StartingSurface {
final Rect tmpStableInsets = new Rect();
final InsetsState mTmpInsetsState = new InsetsState();
final MergedConfiguration tmpMergedConfiguration = new MergedConfiguration();
- int backgroundColor = WHITE;
- int statusBarColor = 0;
- int navigationBarColor = 0;
+ final TaskDescription taskDescription = new TaskDescription();
+ taskDescription.setBackgroundColor(WHITE);
final int sysUiVis;
final int windowFlags;
final int windowPrivateFlags;
@@ -194,11 +195,9 @@ class TaskSnapshotSurface implements StartingSurface {
layoutParams.systemUiVisibility = sysUiVis;
layoutParams.setTitle(String.format(TITLE_FORMAT, task.mTaskId));
- final TaskDescription taskDescription = task.getTaskDescription();
- if (taskDescription != null) {
- backgroundColor = taskDescription.getBackgroundColor();
- statusBarColor = taskDescription.getStatusBarColor();
- navigationBarColor = taskDescription.getNavigationBarColor();
+ final TaskDescription td = task.getTaskDescription();
+ if (td != null) {
+ taskDescription.copyFrom(td);
}
taskBounds = new Rect();
task.getBounds(taskBounds);
@@ -216,8 +215,8 @@ class TaskSnapshotSurface implements StartingSurface {
// Local call.
}
final TaskSnapshotSurface snapshotSurface = new TaskSnapshotSurface(service, window,
- surfaceControl, snapshot, layoutParams.getTitle(), backgroundColor, statusBarColor,
- navigationBarColor, sysUiVis, windowFlags, windowPrivateFlags, taskBounds,
+ surfaceControl, snapshot, layoutParams.getTitle(), taskDescription, sysUiVis,
+ windowFlags, windowPrivateFlags, taskBounds,
currentOrientation);
window.setOuter(snapshotSurface);
try {
@@ -234,9 +233,9 @@ class TaskSnapshotSurface implements StartingSurface {
@VisibleForTesting
TaskSnapshotSurface(WindowManagerService service, Window window, SurfaceControl surfaceControl,
- TaskSnapshot snapshot, CharSequence title, int backgroundColor, int statusBarColor,
- int navigationBarColor, int sysUiVis, int windowFlags, int windowPrivateFlags,
- Rect taskBounds, int currentOrientation) {
+ TaskSnapshot snapshot, CharSequence title, TaskDescription taskDescription,
+ int sysUiVis, int windowFlags, int windowPrivateFlags, Rect taskBounds,
+ int currentOrientation) {
mService = service;
mSurface = new Surface();
mHandler = new Handler(mService.mH.getLooper());
@@ -245,11 +244,12 @@ class TaskSnapshotSurface implements StartingSurface {
mSurfaceControl = surfaceControl;
mSnapshot = snapshot;
mTitle = title;
+ int backgroundColor = taskDescription.getBackgroundColor();
mBackgroundPaint.setColor(backgroundColor != 0 ? backgroundColor : WHITE);
mTaskBounds = taskBounds;
mSystemBarBackgroundPainter = new SystemBarBackgroundPainter(windowFlags,
- windowPrivateFlags, sysUiVis, statusBarColor, navigationBarColor);
- mStatusBarColor = statusBarColor;
+ windowPrivateFlags, sysUiVis, taskDescription);
+ mStatusBarColor = taskDescription.getStatusBarColor();
mOrientationOnCreation = currentOrientation;
}
@@ -490,7 +490,7 @@ class TaskSnapshotSurface implements StartingSurface {
private final int mSysUiVis;
SystemBarBackgroundPainter( int windowFlags, int windowPrivateFlags, int sysUiVis,
- int statusBarColor, int navigationBarColor) {
+ TaskDescription taskDescription) {
mWindowFlags = windowFlags;
mWindowPrivateFlags = windowPrivateFlags;
mSysUiVis = sysUiVis;
@@ -498,11 +498,17 @@ class TaskSnapshotSurface implements StartingSurface {
final int semiTransparent = context.getColor(
R.color.system_bar_background_semi_transparent);
mStatusBarColor = DecorView.calculateBarColor(windowFlags, FLAG_TRANSLUCENT_STATUS,
- semiTransparent, statusBarColor);
+ semiTransparent, taskDescription.getStatusBarColor(), sysUiVis,
+ SYSTEM_UI_FLAG_LIGHT_STATUS_BAR,
+ taskDescription.getEnsureStatusBarContrastWhenTransparent());
mNavigationBarColor = DecorView.calculateBarColor(windowFlags,
- FLAG_TRANSLUCENT_NAVIGATION, semiTransparent, navigationBarColor);
+ FLAG_TRANSLUCENT_NAVIGATION, semiTransparent,
+ taskDescription.getNavigationBarColor(), sysUiVis,
+ SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR,
+ taskDescription.getEnsureNavigationBarContrastWhenTransparent()
+ && context.getResources().getBoolean(R.bool.config_navBarNeedsScrim));
mStatusBarPaint.setColor(mStatusBarColor);
- mNavigationBarPaint.setColor(navigationBarColor);
+ mNavigationBarPaint.setColor(mNavigationBarColor);
}
void setInsets(Rect contentInsets, Rect stableInsets) {
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 09baf8cf1111..bdb4d0474865 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -34,6 +34,7 @@ import static android.view.WindowManager.DOCKED_LEFT;
import static android.view.WindowManager.DOCKED_RIGHT;
import static android.view.WindowManager.DOCKED_TOP;
+import static com.android.server.wm.BoundsAnimationController.FADE_IN;
import static com.android.server.wm.BoundsAnimationController.NO_PIP_MODE_CHANGED_CALLBACKS;
import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
@@ -148,6 +149,7 @@ public class TaskStack extends WindowContainer<Task> implements
private boolean mCancelCurrentBoundsAnimation = false;
private Rect mBoundsAnimationTarget = new Rect();
private Rect mBoundsAnimationSourceHintBounds = new Rect();
+ private @BoundsAnimationController.AnimationType int mAnimationType;
Rect mPreAnimationBounds = new Rect();
@@ -1572,7 +1574,8 @@ public class TaskStack extends WindowContainer<Task> implements
}
@Override // AnimatesBounds
- public boolean onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate) {
+ public boolean onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate,
+ @BoundsAnimationController.AnimationType int animationType) {
// Hold the lock since this is called from the BoundsAnimator running on the UiThread
synchronized (mWmService.mGlobalLock) {
if (!isAttached()) {
@@ -1583,6 +1586,7 @@ public class TaskStack extends WindowContainer<Task> implements
mBoundsAnimatingRequested = false;
mBoundsAnimating = true;
mCancelCurrentBoundsAnimation = false;
+ mAnimationType = animationType;
// If we are changing UI mode, as in the PiP to fullscreen
// transition, then we need to wait for the window to draw.
@@ -1599,7 +1603,8 @@ public class TaskStack extends WindowContainer<Task> implements
// I don't believe you...
}
- if (schedulePipModeChangedCallback && mActivityStack != null) {
+ if ((schedulePipModeChangedCallback || animationType == FADE_IN)
+ && mActivityStack != null) {
// We need to schedule the PiP mode change before the animation up. It is possible
// in this case for the animation down to not have been completed, so always
// force-schedule and update to the client to ensure that it is notified that it
@@ -1614,6 +1619,21 @@ public class TaskStack extends WindowContainer<Task> implements
@Override // AnimatesBounds
public void onAnimationEnd(boolean schedulePipModeChangedCallback, Rect finalStackSize,
boolean moveToFullscreen) {
+ if (mAnimationType == BoundsAnimationController.FADE_IN) {
+ setPinnedStackAlpha(1f);
+ try {
+ mWmService.mActivityTaskManager.notifyPinnedStackAnimationEnded();
+ } catch (RemoteException e) {
+ // I don't believe you...
+ }
+ return;
+ }
+
+ onBoundAnimationEnd(schedulePipModeChangedCallback, finalStackSize, moveToFullscreen);
+ }
+
+ private void onBoundAnimationEnd(boolean schedulePipModeChangedCallback, Rect finalStackSize,
+ boolean moveToFullscreen) {
if (inPinnedWindowingMode()) {
// Update to the final bounds if requested. This is done here instead of in the bounds
// animator to allow us to coordinate this after we notify the PiP mode changed
@@ -1725,10 +1745,23 @@ public class TaskStack extends WindowContainer<Task> implements
final @SchedulePipModeChangedState int finalSchedulePipModeChangedState =
schedulePipModeChangedState;
final DisplayContent displayContent = getDisplayContent();
+ @BoundsAnimationController.AnimationType int intendedAnimationType =
+ displayContent.mBoundsAnimationController.getAnimationType();
+ if (intendedAnimationType == FADE_IN) {
+ if (fromFullscreen) {
+ setPinnedStackAlpha(0f);
+ }
+ if (toBounds.width() == fromBounds.width()
+ && toBounds.height() == fromBounds.height()) {
+ intendedAnimationType = BoundsAnimationController.BOUNDS;
+ }
+ }
+
+ final @BoundsAnimationController.AnimationType int animationType = intendedAnimationType;
displayContent.mBoundsAnimationController.getHandler().post(() -> {
displayContent.mBoundsAnimationController.animateBounds(this, fromBounds,
finalToBounds, animationDuration, finalSchedulePipModeChangedState,
- fromFullscreen, toFullscreen);
+ fromFullscreen, toFullscreen, animationType);
});
}
@@ -1905,6 +1938,20 @@ public class TaskStack extends WindowContainer<Task> implements
}
}
+ @Override
+ public boolean setPinnedStackAlpha(float alpha) {
+ // Hold the lock since this is called from the BoundsAnimator running on the UiThread
+ synchronized (mWmService.mGlobalLock) {
+ if (mCancelCurrentBoundsAnimation) {
+ return false;
+ }
+ getPendingTransaction().setAlpha(getSurfaceControl(), alpha);
+ scheduleAnimation();
+ }
+
+ return true;
+ }
+
public DisplayInfo getDisplayInfo() {
return mDisplayContent.getDisplayInfo();
}
diff --git a/services/core/java/com/android/server/wm/WindowAnimationSpec.java b/services/core/java/com/android/server/wm/WindowAnimationSpec.java
index 57311e19bc76..d8ebd84b3e73 100644
--- a/services/core/java/com/android/server/wm/WindowAnimationSpec.java
+++ b/services/core/java/com/android/server/wm/WindowAnimationSpec.java
@@ -98,14 +98,25 @@ public class WindowAnimationSpec implements AnimationSpec {
tmp.transformation.getMatrix().postTranslate(mPosition.x, mPosition.y);
t.setMatrix(leash, tmp.transformation.getMatrix(), tmp.floats);
t.setAlpha(leash, tmp.transformation.getAlpha());
- if (mStackClipMode == STACK_CLIP_NONE || mStackClipMode == STACK_CLIP_AFTER_ANIM) {
- t.setWindowCrop(leash, tmp.transformation.getClipRect());
+
+ boolean cropSet = false;
+ if (mStackClipMode == STACK_CLIP_NONE) {
+ if (tmp.transformation.hasClipRect()) {
+ t.setWindowCrop(leash, tmp.transformation.getClipRect());
+ cropSet = true;
+ }
} else {
mTmpRect.set(mStackBounds);
- mTmpRect.intersect(tmp.transformation.getClipRect());
+ if (tmp.transformation.hasClipRect()) {
+ mTmpRect.intersect(tmp.transformation.getClipRect());
+ }
t.setWindowCrop(leash, mTmpRect);
+ cropSet = true;
}
- if (mAnimation.hasRoundedCorners() && mWindowCornerRadius > 0) {
+
+ // We can only apply rounded corner if a crop is set, as otherwise the value is meaningless,
+ // since it doesn't have anything it's relative to.
+ if (cropSet && mAnimation.hasRoundedCorners() && mWindowCornerRadius > 0) {
t.setCornerRadius(leash, mWindowCornerRadius);
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 8f2a2d2dae67..8f1709e4d614 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -4096,6 +4096,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
@Override
public boolean isSeparateProfileChallengeAllowed(int userHandle) {
+ if (!isCallerWithSystemUid()) {
+ throw new SecurityException("Caller must be system");
+ }
ComponentName profileOwner = getProfileOwner(userHandle);
// Profile challenge is supported on N or newer release.
return profileOwner != null &&
diff --git a/services/net/java/android/net/ip/IIpClient.aidl b/services/net/java/android/net/ip/IIpClient.aidl
index b834e45c6852..1e7726472ff6 100644
--- a/services/net/java/android/net/ip/IIpClient.aidl
+++ b/services/net/java/android/net/ip/IIpClient.aidl
@@ -32,4 +32,5 @@ oneway interface IIpClient {
void setMulticastFilter(boolean enabled);
void addKeepalivePacketFilter(int slot, in TcpKeepalivePacketDataParcelable pkt);
void removeKeepalivePacketFilter(int slot);
+ void setL2KeyAndGroupHint(in String l2Key, in String groupHint);
}
diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml
index fce7599d0b59..01f2f6b26415 100644
--- a/services/tests/servicestests/AndroidManifest.xml
+++ b/services/tests/servicestests/AndroidManifest.xml
@@ -68,6 +68,7 @@
<uses-permission android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS" />
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG" />
+ <uses-permission android:name="android.permission.HARDWARE_TEST"/>
<!-- Uses API introduced in O (26) -->
<uses-sdk android:minSdkVersion="1"
diff --git a/services/tests/servicestests/src/com/android/server/display/color/DisplayTransformManagerTest.java b/services/tests/servicestests/src/com/android/server/display/color/DisplayTransformManagerTest.java
new file mode 100644
index 000000000000..fc74c972ed83
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/display/color/DisplayTransformManagerTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.display.color;
+
+import static com.android.server.display.color.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY;
+import static com.android.server.display.color.DisplayTransformManager.PERSISTENT_PROPERTY_DISPLAY_COLOR;
+import static com.android.server.display.color.DisplayTransformManager.PERSISTENT_PROPERTY_SATURATION;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.hardware.display.ColorDisplayManager;
+import android.os.SystemProperties;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class DisplayTransformManagerTest {
+
+ private DisplayTransformManager mDtm;
+ private float[] mNightDisplayMatrix;
+
+ @Before
+ public void setUp() {
+ mDtm = new DisplayTransformManager();
+ mNightDisplayMatrix = mDtm.getColorMatrix(LEVEL_COLOR_MATRIX_NIGHT_DISPLAY);
+
+ SystemProperties.set(PERSISTENT_PROPERTY_DISPLAY_COLOR, null);
+ SystemProperties.set(PERSISTENT_PROPERTY_SATURATION, null);
+ }
+
+ @Test
+ public void setColorMode_natural() {
+ mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_NATURAL, mNightDisplayMatrix);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
+ .isEqualTo("0" /* managed */);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
+ .isEqualTo("1.0" /* natural */);
+ }
+
+ @Test
+ public void setColorMode_boosted() {
+ mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_BOOSTED, mNightDisplayMatrix);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
+ .isEqualTo("0" /* managed */);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
+ .isEqualTo("1.1" /* boosted */);
+ }
+
+ @Test
+ public void setColorMode_saturated() {
+ mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_SATURATED, mNightDisplayMatrix);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
+ .isEqualTo("1" /* unmanaged */);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
+ .isEqualTo("1.0" /* natural */);
+ }
+
+ @Test
+ public void setColorMode_automatic() {
+ mDtm.setColorMode(ColorDisplayManager.COLOR_MODE_AUTOMATIC, mNightDisplayMatrix);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
+ .isEqualTo("2" /* enhanced */);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
+ .isEqualTo("1.0" /* natural */);
+ }
+
+ @Test
+ public void setColorMode_vendor() {
+ mDtm.setColorMode(0x100, mNightDisplayMatrix);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
+ .isEqualTo(Integer.toString(0x100) /* pass-through */);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
+ .isEqualTo("1.0" /* default */);
+ }
+
+ @Test
+ public void setColorMode_outOfBounds() {
+ mDtm.setColorMode(0x50, mNightDisplayMatrix);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_DISPLAY_COLOR, null))
+ .isEqualTo("" /* default */);
+ assertThat(SystemProperties.get(PERSISTENT_PROPERTY_SATURATION, null))
+ .isEqualTo("" /* default */);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java
index 3a0f4c24ee29..604637a2a8bc 100644
--- a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java
@@ -379,6 +379,82 @@ public class JobStoreTest {
.build());
}
+ @Test
+ public void testPersistedIdleConstraint() throws Exception {
+ JobInfo.Builder b = new Builder(8, mComponent)
+ .setRequiresDeviceIdle(true)
+ .setPersisted(true);
+ JobStatus taskStatus = JobStatus.createFromJobInfo(b.build(), SOME_UID, null, -1, null);
+
+ mTaskStoreUnderTest.add(taskStatus);
+ waitForPendingIo();
+
+ final JobSet jobStatusSet = new JobSet();
+ mTaskStoreUnderTest.readJobMapFromDisk(jobStatusSet, true);
+ assertEquals("Incorrect # of persisted tasks.", 1, jobStatusSet.size());
+ JobStatus loaded = jobStatusSet.getAllJobs().iterator().next();
+ assertEquals("Idle constraint not persisted correctly.",
+ loaded.getJob().isRequireDeviceIdle(),
+ taskStatus.getJob().isRequireDeviceIdle());
+ }
+
+ @Test
+ public void testPersistedChargingConstraint() throws Exception {
+ JobInfo.Builder b = new Builder(8, mComponent)
+ .setRequiresCharging(true)
+ .setPersisted(true);
+ JobStatus taskStatus = JobStatus.createFromJobInfo(b.build(), SOME_UID, null, -1, null);
+
+ mTaskStoreUnderTest.add(taskStatus);
+ waitForPendingIo();
+
+ final JobSet jobStatusSet = new JobSet();
+ mTaskStoreUnderTest.readJobMapFromDisk(jobStatusSet, true);
+ assertEquals("Incorrect # of persisted tasks.", 1, jobStatusSet.size());
+ JobStatus loaded = jobStatusSet.getAllJobs().iterator().next();
+ assertEquals("Charging constraint not persisted correctly.",
+ loaded.getJob().isRequireCharging(),
+ taskStatus.getJob().isRequireCharging());
+ }
+
+ @Test
+ public void testPersistedStorageNotLowConstraint() throws Exception {
+ JobInfo.Builder b = new Builder(8, mComponent)
+ .setRequiresStorageNotLow(true)
+ .setPersisted(true);
+ JobStatus taskStatus = JobStatus.createFromJobInfo(b.build(), SOME_UID, null, -1, null);
+
+ mTaskStoreUnderTest.add(taskStatus);
+ waitForPendingIo();
+
+ final JobSet jobStatusSet = new JobSet();
+ mTaskStoreUnderTest.readJobMapFromDisk(jobStatusSet, true);
+ assertEquals("Incorrect # of persisted tasks.", 1, jobStatusSet.size());
+ JobStatus loaded = jobStatusSet.getAllJobs().iterator().next();
+ assertEquals("Storage-not-low constraint not persisted correctly.",
+ loaded.getJob().isRequireStorageNotLow(),
+ taskStatus.getJob().isRequireStorageNotLow());
+ }
+
+ @Test
+ public void testPersistedBatteryNotLowConstraint() throws Exception {
+ JobInfo.Builder b = new Builder(8, mComponent)
+ .setRequiresBatteryNotLow(true)
+ .setPersisted(true);
+ JobStatus taskStatus = JobStatus.createFromJobInfo(b.build(), SOME_UID, null, -1, null);
+
+ mTaskStoreUnderTest.add(taskStatus);
+ waitForPendingIo();
+
+ final JobSet jobStatusSet = new JobSet();
+ mTaskStoreUnderTest.readJobMapFromDisk(jobStatusSet, true);
+ assertEquals("Incorrect # of persisted tasks.", 1, jobStatusSet.size());
+ JobStatus loaded = jobStatusSet.getAllJobs().iterator().next();
+ assertEquals("Battery-not-low constraint not persisted correctly.",
+ loaded.getJob().isRequireBatteryNotLow(),
+ taskStatus.getJob().isRequireBatteryNotLow());
+ }
+
/**
* Helper function to kick a {@link JobInfo} through a persistence cycle and
* assert that it's unchanged.
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
new file mode 100644
index 000000000000..3f9a57e07876
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
@@ -0,0 +1,504 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.om;
+
+import static android.content.om.OverlayInfo.STATE_DISABLED;
+import static android.content.om.OverlayInfo.STATE_ENABLED;
+import static android.content.om.OverlayInfo.STATE_MISSING_TARGET;
+import static android.content.om.OverlayInfo.STATE_TARGET_IS_BEING_REPLACED;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.annotation.NonNull;
+import android.content.om.OverlayInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.util.ArraySet;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class OverlayManagerServiceImplTests {
+ private OverlayManagerServiceImpl mImpl;
+ private DummyDeviceState mState;
+ private DummyListener mListener;
+
+ private static final String OVERLAY = "com.dummy.overlay";
+ private static final String TARGET = "com.dummy.target";
+ private static final int USER = 0;
+
+ private static final String OVERLAY2 = OVERLAY + "2";
+ private static final String TARGET2 = TARGET + "2";
+ private static final int USER2 = USER + 1;
+
+ private static final String OVERLAY3 = OVERLAY + "3";
+ private static final int USER3 = USER2 + 1;
+
+
+ @Before
+ public void setUp() throws Exception {
+ mState = new DummyDeviceState();
+ mListener = new DummyListener();
+ DummyPackageManagerHelper pmh = new DummyPackageManagerHelper(mState);
+ mImpl = new OverlayManagerServiceImpl(pmh,
+ new DummyIdmapManager(mState, pmh),
+ new OverlayManagerSettings(),
+ new String[0],
+ mListener);
+ }
+
+ // tests: basics
+
+ @Test
+ public void testGetOverlayInfo() throws Exception {
+ installOverlayPackage(OVERLAY, TARGET, USER, false);
+ final OverlayInfo oi = mImpl.getOverlayInfo(OVERLAY, USER);
+ assertNotNull(oi);
+ assertEquals(oi.packageName, OVERLAY);
+ assertEquals(oi.targetPackageName, TARGET);
+ assertEquals(oi.userId, USER);
+ }
+
+ @Test
+ public void testGetOverlayInfosForTarget() throws Exception {
+ installOverlayPackage(OVERLAY, TARGET, USER, false);
+ installOverlayPackage(OVERLAY2, TARGET, USER, false);
+
+ installOverlayPackage(OVERLAY3, TARGET, USER2, false);
+
+ final List<OverlayInfo> ois = mImpl.getOverlayInfosForTarget(TARGET, USER);
+ assertEquals(ois.size(), 2);
+ assertTrue(ois.contains(mImpl.getOverlayInfo(OVERLAY, USER)));
+ assertTrue(ois.contains(mImpl.getOverlayInfo(OVERLAY2, USER)));
+
+ final List<OverlayInfo> ois2 = mImpl.getOverlayInfosForTarget(TARGET, USER2);
+ assertEquals(ois2.size(), 1);
+ assertTrue(ois2.contains(mImpl.getOverlayInfo(OVERLAY3, USER2)));
+
+ final List<OverlayInfo> ois3 = mImpl.getOverlayInfosForTarget(TARGET, USER3);
+ assertNotNull(ois3);
+ assertEquals(ois3.size(), 0);
+
+ final List<OverlayInfo> ois4 = mImpl.getOverlayInfosForTarget("no.such.overlay", USER);
+ assertNotNull(ois4);
+ assertEquals(ois4.size(), 0);
+ }
+
+ @Test
+ public void testGetOverlayInfosForUser() throws Exception {
+ installOverlayPackage(OVERLAY, TARGET, USER, false);
+ installOverlayPackage(OVERLAY2, TARGET, USER, false);
+ installOverlayPackage(OVERLAY3, TARGET2, USER, false);
+
+ final Map<String, List<OverlayInfo>> everything = mImpl.getOverlaysForUser(USER);
+ assertEquals(everything.size(), 2);
+
+ final List<OverlayInfo> ois = everything.get(TARGET);
+ assertNotNull(ois);
+ assertEquals(ois.size(), 2);
+ assertTrue(ois.contains(mImpl.getOverlayInfo(OVERLAY, USER)));
+ assertTrue(ois.contains(mImpl.getOverlayInfo(OVERLAY2, USER)));
+
+ final List<OverlayInfo> ois2 = everything.get(TARGET2);
+ assertNotNull(ois2);
+ assertEquals(ois2.size(), 1);
+ assertTrue(ois2.contains(mImpl.getOverlayInfo(OVERLAY3, USER)));
+
+ final Map<String, List<OverlayInfo>> everything2 = mImpl.getOverlaysForUser(USER2);
+ assertNotNull(everything2);
+ assertEquals(everything2.size(), 0);
+ }
+
+ @Test
+ public void testPriority() throws Exception {
+ installOverlayPackage(OVERLAY, TARGET, USER, false);
+ installOverlayPackage(OVERLAY2, TARGET, USER, false);
+ installOverlayPackage(OVERLAY3, TARGET, USER, false);
+
+ final OverlayInfo o1 = mImpl.getOverlayInfo(OVERLAY, USER);
+ final OverlayInfo o2 = mImpl.getOverlayInfo(OVERLAY2, USER);
+ final OverlayInfo o3 = mImpl.getOverlayInfo(OVERLAY3, USER);
+
+ assertOverlayInfoList(TARGET, USER, o1, o2, o3);
+
+ assertTrue(mImpl.setLowestPriority(OVERLAY3, USER));
+ assertOverlayInfoList(TARGET, USER, o3, o1, o2);
+
+ assertTrue(mImpl.setHighestPriority(OVERLAY3, USER));
+ assertOverlayInfoList(TARGET, USER, o1, o2, o3);
+
+ assertTrue(mImpl.setPriority(OVERLAY, OVERLAY2, USER));
+ assertOverlayInfoList(TARGET, USER, o2, o1, o3);
+ }
+
+ @Test
+ public void testOverlayInfoStateTransitions() throws Exception {
+ assertNull(mImpl.getOverlayInfo(OVERLAY, USER));
+
+ installOverlayPackage(OVERLAY, TARGET, USER, true);
+ assertState(STATE_MISSING_TARGET, OVERLAY, USER);
+
+ installTargetPackage(TARGET, USER);
+ assertState(STATE_DISABLED, OVERLAY, USER);
+
+ mImpl.setEnabled(OVERLAY, true, USER);
+ assertState(STATE_ENABLED, OVERLAY, USER);
+
+ beginUpgradeTargetPackage(TARGET, USER);
+ assertState(STATE_TARGET_IS_BEING_REPLACED, OVERLAY, USER);
+
+ endUpgradeTargetPackage(TARGET, USER);
+ assertState(STATE_ENABLED, OVERLAY, USER);
+
+ uninstallTargetPackage(TARGET, USER);
+ assertState(STATE_MISSING_TARGET, OVERLAY, USER);
+
+ installTargetPackage(TARGET, USER);
+ assertState(STATE_ENABLED, OVERLAY, USER);
+ }
+
+ @Test
+ public void testUpdateOverlaysForUser() throws Exception {
+ installTargetPackage(TARGET, USER);
+ installTargetPackage("some.other.target", USER);
+ installOverlayPackage(OVERLAY, TARGET, USER, true);
+
+ // do nothing, expect no change
+ List<String> a = mImpl.updateOverlaysForUser(USER);
+ assertEquals(1, a.size());
+ assertTrue(a.contains(TARGET));
+
+ // upgrade overlay, keep target
+ upgradeOverlayPackage(OVERLAY, TARGET, USER, true);
+ List<String> b = mImpl.updateOverlaysForUser(USER);
+ assertEquals(1, b.size());
+ assertTrue(b.contains(TARGET));
+
+ // do nothing, expect no change
+ List<String> c = mImpl.updateOverlaysForUser(USER);
+ assertEquals(1, c.size());
+ assertTrue(c.contains(TARGET));
+
+ // upgrade overlay, switch to new target
+ upgradeOverlayPackage(OVERLAY, "some.other.target", USER, true);
+ List<String> d = mImpl.updateOverlaysForUser(USER);
+ assertEquals(2, d.size());
+ assertTrue(d.containsAll(Arrays.asList(TARGET, "some.other.target")));
+
+ // do nothing, expect no change
+ List<String> e = mImpl.updateOverlaysForUser(USER);
+ assertEquals(1, e.size());
+ assertTrue(e.contains("some.other.target"));
+ }
+
+ @Test
+ public void testOnOverlayPackageUpgraded() throws Exception {
+ installTargetPackage(TARGET, USER);
+ installOverlayPackage(OVERLAY, TARGET, USER, true);
+ mImpl.onOverlayPackageReplacing(OVERLAY, USER);
+ mListener.count = 0;
+ mImpl.onOverlayPackageReplaced(OVERLAY, USER);
+ assertEquals(1, mListener.count);
+
+ // upgrade to a version where the overlay has changed its target
+ upgradeOverlayPackage(OVERLAY, "some.other.target", USER, true);
+ mImpl.onOverlayPackageReplacing(OVERLAY, USER);
+ mListener.count = 0;
+ mImpl.onOverlayPackageReplaced(OVERLAY, USER);
+ // expect once for the old target package, once for the new target package
+ assertEquals(2, mListener.count);
+
+ upgradeOverlayPackage(OVERLAY, "some.other.target", USER, true);
+ mImpl.onOverlayPackageReplacing(OVERLAY, USER);
+ mListener.count = 0;
+ mImpl.onOverlayPackageReplaced(OVERLAY, USER);
+ assertEquals(1, mListener.count);
+ }
+
+ // tests: listener interface
+
+ @Test
+ public void testListener() throws Exception {
+ installOverlayPackage(OVERLAY, TARGET, USER, true);
+ assertEquals(1, mListener.count);
+ mListener.count = 0;
+
+ installTargetPackage(TARGET, USER);
+ assertEquals(1, mListener.count);
+ mListener.count = 0;
+
+ mImpl.setEnabled(OVERLAY, true, USER);
+ assertEquals(1, mListener.count);
+ mListener.count = 0;
+
+ mImpl.setEnabled(OVERLAY, true, USER);
+ assertEquals(0, mListener.count);
+ }
+
+ // helper methods
+
+ private void assertState(int expected, final String overlayPackageName, int userId) {
+ int actual = mImpl.getOverlayInfo(OVERLAY, USER).state;
+ String msg = String.format("expected %s but was %s:",
+ OverlayInfo.stateToString(expected), OverlayInfo.stateToString(actual));
+ assertEquals(msg, expected, actual);
+ }
+
+ private void assertOverlayInfoList(final String targetPackageName, int userId,
+ OverlayInfo... overlayInfos) {
+ final List<OverlayInfo> expected =
+ mImpl.getOverlayInfosForTarget(targetPackageName, userId);
+ final List<OverlayInfo> actual = Arrays.asList(overlayInfos);
+ assertEquals(expected, actual);
+ }
+
+ private void installTargetPackage(String packageName, int userId) {
+ if (mState.select(packageName, userId) != null) {
+ throw new IllegalStateException("package already installed");
+ }
+ mState.add(packageName, null, userId, false);
+ mImpl.onTargetPackageAdded(packageName, userId);
+ }
+
+ private void beginUpgradeTargetPackage(String packageName, int userId) {
+ if (mState.select(packageName, userId) == null) {
+ throw new IllegalStateException("package not installed");
+ }
+ mState.add(packageName, null, userId, false);
+ mImpl.onTargetPackageReplacing(packageName, userId);
+ }
+
+ private void endUpgradeTargetPackage(String packageName, int userId) {
+ if (mState.select(packageName, userId) == null) {
+ throw new IllegalStateException("package not installed");
+ }
+ mState.add(packageName, null, userId, false);
+ mImpl.onTargetPackageReplaced(packageName, userId);
+ }
+
+ private void uninstallTargetPackage(String packageName, int userId) {
+ if (mState.select(packageName, userId) == null) {
+ throw new IllegalStateException("package not installed");
+ }
+ mState.remove(packageName, userId);
+ mImpl.onTargetPackageRemoved(packageName, userId);
+ }
+
+ private void installOverlayPackage(String packageName, String targetPackageName, int userId,
+ boolean canCreateIdmap) {
+ if (mState.select(packageName, userId) != null) {
+ throw new IllegalStateException("package already installed");
+ }
+ mState.add(packageName, targetPackageName, userId, canCreateIdmap);
+ mImpl.onOverlayPackageAdded(packageName, userId);
+ }
+
+ private void upgradeOverlayPackage(String packageName, String targetPackageName, int userId,
+ boolean canCreateIdmap) {
+ DummyDeviceState.Package pkg = mState.select(packageName, userId);
+ if (pkg == null) {
+ throw new IllegalStateException("package not installed, cannot upgrade");
+ }
+ pkg.targetPackageName = targetPackageName;
+ pkg.canCreateIdmap = canCreateIdmap;
+ }
+
+ private void uninstallOverlayPackage(String packageName, int userId) {
+ // implement this when adding support for downloadable overlays
+ throw new IllegalArgumentException("not implemented");
+ }
+
+ private static final class DummyDeviceState {
+ private List<Package> mPackages = new ArrayList<>();
+
+ public void add(String packageName, String targetPackageName, int userId,
+ boolean canCreateIdmap) {
+ remove(packageName, userId);
+ Package pkg = new Package();
+ pkg.packageName = packageName;
+ pkg.targetPackageName = targetPackageName;
+ pkg.userId = userId;
+ pkg.canCreateIdmap = canCreateIdmap;
+ mPackages.add(pkg);
+ }
+
+ public void remove(String packageName, int userId) {
+ final Iterator<Package> iter = mPackages.iterator();
+ while (iter.hasNext()) {
+ final Package pkg = iter.next();
+ if (pkg.packageName.equals(packageName) && pkg.userId == userId) {
+ iter.remove();
+ return;
+ }
+ }
+ }
+
+ public List<Package> select(int userId) {
+ List<Package> out = new ArrayList<>();
+ final int packageCount = mPackages.size();
+ for (int i = 0; i < packageCount; i++) {
+ final Package pkg = mPackages.get(i);
+ if (pkg.userId == userId) {
+ out.add(pkg);
+ }
+ }
+ return out;
+ }
+
+ public Package select(String packageName, int userId) {
+ final int packageCount = mPackages.size();
+ for (int i = 0; i < packageCount; i++) {
+ final Package pkg = mPackages.get(i);
+ if (pkg.packageName.equals(packageName) && pkg.userId == userId) {
+ return pkg;
+ }
+ }
+ return null;
+ }
+
+ private static final class Package {
+ public String packageName;
+ public int userId;
+ public String targetPackageName;
+ public boolean canCreateIdmap;
+ }
+ }
+
+ private static final class DummyPackageManagerHelper implements
+ OverlayManagerServiceImpl.PackageManagerHelper {
+ private final DummyDeviceState mState;
+
+ DummyPackageManagerHelper(DummyDeviceState state) {
+ mState = state;
+ }
+
+ @Override
+ public PackageInfo getPackageInfo(@NonNull String packageName, int userId) {
+ final DummyDeviceState.Package pkg = mState.select(packageName, userId);
+ if (pkg == null) {
+ return null;
+ }
+ ApplicationInfo ai = new ApplicationInfo();
+ ai.sourceDir = String.format("%s/%s/base.apk",
+ pkg.targetPackageName == null ? "/system/app/" : "/vendor/overlay/",
+ pkg.packageName);
+ PackageInfo pi = new PackageInfo();
+ pi.applicationInfo = ai;
+ pi.packageName = pkg.packageName;
+ pi.overlayTarget = pkg.targetPackageName;
+ pi.overlayCategory = "dummy-category-" + pkg.targetPackageName;
+ return pi;
+ }
+
+ @Override
+ public boolean signaturesMatching(@NonNull String packageName1,
+ @NonNull String packageName2, int userId) {
+ return false;
+ }
+
+ @Override
+ public List<PackageInfo> getOverlayPackages(int userId) {
+ List<PackageInfo> out = new ArrayList<>();
+ final List<DummyDeviceState.Package> packages = mState.select(userId);
+ final int packageCount = packages.size();
+ for (int i = 0; i < packageCount; i++) {
+ final DummyDeviceState.Package pkg = packages.get(i);
+ if (pkg.targetPackageName != null) {
+ out.add(getPackageInfo(pkg.packageName, pkg.userId));
+ }
+ }
+ return out;
+ }
+ }
+
+ private static class DummyIdmapManager extends IdmapManager {
+ private final DummyDeviceState mState;
+ private Set<String> mIdmapFiles = new ArraySet<>();
+
+ DummyIdmapManager(DummyDeviceState state, DummyPackageManagerHelper packageManagerHelper) {
+ super(null, packageManagerHelper);
+ mState = state;
+ }
+
+ @Override
+ boolean createIdmap(@NonNull final PackageInfo targetPackage,
+ @NonNull final PackageInfo overlayPackage, int userId) {
+ final DummyDeviceState.Package t = mState.select(targetPackage.packageName, userId);
+ if (t == null) {
+ return false;
+ }
+ final DummyDeviceState.Package o = mState.select(overlayPackage.packageName, userId);
+ if (o == null) {
+ return false;
+ }
+ if (!o.canCreateIdmap) {
+ return false;
+ }
+ final String key = createKey(overlayPackage.packageName, userId);
+ mIdmapFiles.add(key);
+ return true;
+ }
+
+ @Override
+ boolean removeIdmap(@NonNull final OverlayInfo oi, final int userId) {
+ final String key = createKey(oi.packageName, oi.userId);
+ if (!mIdmapFiles.contains(key)) {
+ return false;
+ }
+ mIdmapFiles.remove(key);
+ return true;
+ }
+
+ @Override
+ boolean idmapExists(@NonNull final OverlayInfo oi) {
+ final String key = createKey(oi.packageName, oi.userId);
+ return mIdmapFiles.contains(key);
+ }
+
+ @Override
+ boolean idmapExists(@NonNull final PackageInfo overlayPackage, final int userId) {
+ final String key = createKey(overlayPackage.packageName, userId);
+ return mIdmapFiles.contains(key);
+ }
+
+ private String createKey(@NonNull final String packageName, final int userId) {
+ return String.format("%s:%d", packageName, userId);
+ }
+ }
+
+ private static class DummyListener implements OverlayManagerServiceImpl.OverlayChangeListener {
+ public int count;
+
+ public void onOverlaysChanged(@NonNull String targetPackage, int userId) {
+ count++;
+ }
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
new file mode 100644
index 000000000000..8ff8b6e4a9e0
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerSettingsTests.java
@@ -0,0 +1,505 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.om;
+
+import static android.content.om.OverlayInfo.STATE_DISABLED;
+import static android.content.om.OverlayInfo.STATE_ENABLED;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.om.OverlayInfo;
+import android.text.TextUtils;
+import android.util.Xml;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.xmlpull.v1.XmlPullParser;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
+
+@RunWith(AndroidJUnit4.class)
+public class OverlayManagerSettingsTests {
+ private OverlayManagerSettings mSettings;
+
+ private static final OverlayInfo OVERLAY_A0 = new OverlayInfo(
+ "com.dummy.overlay_a",
+ "com.dummy.target",
+ null,
+ "some-category",
+ "/data/app/com.dummy.overlay_a-1/base.apk",
+ STATE_DISABLED,
+ 0,
+ 0,
+ false);
+
+ private static final OverlayInfo OVERLAY_B0 = new OverlayInfo(
+ "com.dummy.overlay_b",
+ "com.dummy.target",
+ null,
+ "some-category",
+ "/data/app/com.dummy.overlay_b-1/base.apk",
+ STATE_DISABLED,
+ 0,
+ 0,
+ false);
+
+ private static final OverlayInfo OVERLAY_C0 = new OverlayInfo(
+ "com.dummy.overlay_c",
+ "com.dummy.target",
+ null,
+ "some-category",
+ "/data/app/com.dummy.overlay_c-1/base.apk",
+ STATE_DISABLED,
+ 0,
+ 0,
+ false);
+
+ private static final OverlayInfo OVERLAY_A1 = new OverlayInfo(
+ "com.dummy.overlay_a",
+ "com.dummy.target",
+ null,
+ "some-category",
+ "/data/app/com.dummy.overlay_a-1/base.apk",
+ STATE_DISABLED,
+ 1,
+ 0,
+ false);
+
+ private static final OverlayInfo OVERLAY_B1 = new OverlayInfo(
+ "com.dummy.overlay_b",
+ "com.dummy.target",
+ null,
+ "some-category",
+ "/data/app/com.dummy.overlay_b-1/base.apk",
+ STATE_DISABLED,
+ 1,
+ 0,
+ false);
+
+ @Before
+ public void setUp() throws Exception {
+ mSettings = new OverlayManagerSettings();
+ }
+
+ // tests: generic functionality
+
+ @Test
+ public void testSettingsInitiallyEmpty() throws Exception {
+ final int userId = 0;
+ Map<String, List<OverlayInfo>> map = mSettings.getOverlaysForUser(userId);
+ assertEquals(0, map.size());
+ }
+
+ @Test
+ public void testBasicSetAndGet() throws Exception {
+ assertDoesNotContain(mSettings, OVERLAY_A0.packageName, OVERLAY_A0.userId);
+
+ insert(OVERLAY_A0);
+ assertContains(mSettings, OVERLAY_A0);
+ OverlayInfo oi = mSettings.getOverlayInfo(OVERLAY_A0.packageName, OVERLAY_A0.userId);
+ assertEquals(OVERLAY_A0, oi);
+
+ assertTrue(mSettings.remove(OVERLAY_A0.packageName, OVERLAY_A0.userId));
+ assertDoesNotContain(mSettings, OVERLAY_A0.packageName, OVERLAY_A0.userId);
+ }
+
+ @Test
+ public void testGetUsers() throws Exception {
+ int[] users = mSettings.getUsers();
+ assertEquals(0, users.length);
+
+ insert(OVERLAY_A0);
+ users = mSettings.getUsers();
+ assertEquals(1, users.length);
+ assertContains(users, OVERLAY_A0.userId);
+
+ insert(OVERLAY_A1);
+ insert(OVERLAY_B1);
+ users = mSettings.getUsers();
+ assertEquals(2, users.length);
+ assertContains(users, OVERLAY_A0.userId);
+ assertContains(users, OVERLAY_A1.userId);
+ }
+
+ @Test
+ public void testGetOverlaysForUser() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+ insert(OVERLAY_A1);
+ insert(OVERLAY_B1);
+
+ Map<String, List<OverlayInfo>> map = mSettings.getOverlaysForUser(OVERLAY_A0.userId);
+ assertEquals(1, map.keySet().size());
+ assertTrue(map.keySet().contains(OVERLAY_A0.targetPackageName));
+
+ List<OverlayInfo> list = map.get(OVERLAY_A0.targetPackageName);
+ assertEquals(2, list.size());
+ assertTrue(list.contains(OVERLAY_A0));
+ assertTrue(list.contains(OVERLAY_B0));
+
+ // getOverlaysForUser should never return null
+ map = mSettings.getOverlaysForUser(-1);
+ assertNotNull(map);
+ assertEquals(0, map.size());
+ }
+
+ @Test
+ public void testRemoveUser() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+ insert(OVERLAY_A1);
+
+ assertContains(mSettings, OVERLAY_A0);
+ assertContains(mSettings, OVERLAY_B0);
+ assertContains(mSettings, OVERLAY_A1);
+
+ mSettings.removeUser(OVERLAY_A0.userId);
+
+ assertDoesNotContain(mSettings, OVERLAY_A0);
+ assertDoesNotContain(mSettings, OVERLAY_B0);
+ assertContains(mSettings, OVERLAY_A1);
+ }
+
+ @Test
+ public void testOrderOfNewlyAddedItems() throws Exception {
+ // new items are appended to the list
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+ insert(OVERLAY_C0);
+
+ List<OverlayInfo> list =
+ mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_B0, OVERLAY_C0);
+
+ // overlays keep their positions when updated
+ mSettings.setState(OVERLAY_B0.packageName, OVERLAY_B0.userId, STATE_ENABLED);
+ OverlayInfo oi = mSettings.getOverlayInfo(OVERLAY_B0.packageName, OVERLAY_B0.userId);
+
+ list = mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, oi, OVERLAY_C0);
+ }
+
+ @Test
+ public void testSetPriority() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+ insert(OVERLAY_C0);
+
+ List<OverlayInfo> list =
+ mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_B0, OVERLAY_C0);
+
+ boolean changed = mSettings.setPriority(OVERLAY_B0.packageName, OVERLAY_C0.packageName,
+ OVERLAY_B0.userId);
+ assertTrue(changed);
+ list = mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_C0, OVERLAY_B0);
+
+ changed =
+ mSettings.setPriority(OVERLAY_B0.packageName, "does.not.exist", OVERLAY_B0.userId);
+ assertFalse(changed);
+ list = mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_C0, OVERLAY_B0);
+
+ OverlayInfo otherTarget = new OverlayInfo(
+ "com.dummy.overlay_other",
+ "com.dummy.some.other.target",
+ null,
+ "some-category",
+ "/data/app/com.dummy.overlay_other-1/base.apk",
+ STATE_DISABLED,
+ 0,
+ 0,
+ false);
+ insert(otherTarget);
+ changed = mSettings.setPriority(OVERLAY_A0.packageName, otherTarget.packageName,
+ OVERLAY_A0.userId);
+ assertFalse(changed);
+ }
+
+ @Test
+ public void testSetLowestPriority() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+ insert(OVERLAY_C0);
+
+ List<OverlayInfo> list =
+ mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_B0, OVERLAY_C0);
+
+ boolean changed = mSettings.setLowestPriority(OVERLAY_B0.packageName, OVERLAY_B0.userId);
+ assertTrue(changed);
+
+ list = mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_B0, OVERLAY_A0, OVERLAY_C0);
+ }
+
+ @Test
+ public void testSetHighestPriority() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+ insert(OVERLAY_C0);
+
+ List<OverlayInfo> list =
+ mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_B0, OVERLAY_C0);
+
+ boolean changed = mSettings.setHighestPriority(OVERLAY_B0.packageName, OVERLAY_B0.userId);
+ assertTrue(changed);
+
+ list = mSettings.getOverlaysForTarget(OVERLAY_A0.targetPackageName, OVERLAY_A0.userId);
+ assertListsAreEqual(list, OVERLAY_A0, OVERLAY_C0, OVERLAY_B0);
+ }
+
+ // tests: persist and restore
+
+ @Test
+ public void testPersistEmpty() throws Exception {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ mSettings.persist(os);
+ String xml = new String(os.toByteArray(), "utf-8");
+
+ assertEquals(1, countXmlTags(xml, "overlays"));
+ assertEquals(0, countXmlTags(xml, "item"));
+ }
+
+ @Test
+ public void testPersistDifferentOverlaysSameUser() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B0);
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ mSettings.persist(os);
+ final String xml = new String(os.toByteArray(), "utf-8");
+
+ assertEquals(1, countXmlTags(xml, "overlays"));
+ assertEquals(2, countXmlTags(xml, "item"));
+ assertEquals(1, countXmlAttributesWhere(xml, "item", "packageName",
+ OVERLAY_A0.packageName));
+ assertEquals(1, countXmlAttributesWhere(xml, "item", "packageName",
+ OVERLAY_B0.packageName));
+ assertEquals(2, countXmlAttributesWhere(xml, "item", "userId",
+ Integer.toString(OVERLAY_A0.userId)));
+ }
+
+ @Test
+ public void testPersistSameOverlayDifferentUsers() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_A1);
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ mSettings.persist(os);
+ String xml = new String(os.toByteArray(), "utf-8");
+
+ assertEquals(1, countXmlTags(xml, "overlays"));
+ assertEquals(2, countXmlTags(xml, "item"));
+ assertEquals(2, countXmlAttributesWhere(xml, "item", "packageName",
+ OVERLAY_A0.packageName));
+ assertEquals(1, countXmlAttributesWhere(xml, "item", "userId",
+ Integer.toString(OVERLAY_A0.userId)));
+ assertEquals(1, countXmlAttributesWhere(xml, "item", "userId",
+ Integer.toString(OVERLAY_A1.userId)));
+ }
+
+ @Test
+ public void testPersistEnabled() throws Exception {
+ insert(OVERLAY_A0);
+ mSettings.setEnabled(OVERLAY_A0.packageName, OVERLAY_A0.userId, true);
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ mSettings.persist(os);
+ String xml = new String(os.toByteArray(), "utf-8");
+
+ assertEquals(1, countXmlAttributesWhere(xml, "item", "isEnabled", "true"));
+ }
+
+ @Test
+ public void testRestoreEmpty() throws Exception {
+ final int version = OverlayManagerSettings.Serializer.CURRENT_VERSION;
+ final String xml =
+ "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
+ + "<overlays version=\"" + version + "\" />\n";
+ ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
+
+ mSettings.restore(is);
+ assertDoesNotContain(mSettings, "com.dummy.overlay", 0);
+ }
+
+ @Test
+ public void testRestoreSingleUserSingleOverlay() throws Exception {
+ final int version = OverlayManagerSettings.Serializer.CURRENT_VERSION;
+ final String xml =
+ "<?xml version='1.0' encoding='utf-8' standalone='yes'?>\n"
+ + "<overlays version='" + version + "'>\n"
+ + "<item packageName='com.dummy.overlay'\n"
+ + " userId='1234'\n"
+ + " targetPackageName='com.dummy.target'\n"
+ + " baseCodePath='/data/app/com.dummy.overlay-1/base.apk'\n"
+ + " state='" + STATE_DISABLED + "'\n"
+ + " isEnabled='false'\n"
+ + " category='dummy-category'\n"
+ + " isStatic='false'\n"
+ + " priority='0' />\n"
+ + "</overlays>\n";
+ ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
+
+ mSettings.restore(is);
+ OverlayInfo oi = mSettings.getOverlayInfo("com.dummy.overlay", 1234);
+ assertNotNull(oi);
+ assertEquals("com.dummy.overlay", oi.packageName);
+ assertEquals("com.dummy.target", oi.targetPackageName);
+ assertEquals("/data/app/com.dummy.overlay-1/base.apk", oi.baseCodePath);
+ assertEquals(1234, oi.userId);
+ assertEquals(STATE_DISABLED, oi.state);
+ assertFalse(mSettings.getEnabled("com.dummy.overlay", 1234));
+ }
+
+ @Test
+ public void testPersistAndRestore() throws Exception {
+ insert(OVERLAY_A0);
+ insert(OVERLAY_B1);
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ mSettings.persist(os);
+ String xml = new String(os.toByteArray(), "utf-8");
+ ByteArrayInputStream is = new ByteArrayInputStream(xml.getBytes("utf-8"));
+ OverlayManagerSettings newSettings = new OverlayManagerSettings();
+ newSettings.restore(is);
+
+ OverlayInfo a = newSettings.getOverlayInfo(OVERLAY_A0.packageName, OVERLAY_A0.userId);
+ assertEquals(OVERLAY_A0, a);
+
+ OverlayInfo b = newSettings.getOverlayInfo(OVERLAY_B1.packageName, OVERLAY_B1.userId);
+ assertEquals(OVERLAY_B1, b);
+ }
+
+ private int countXmlTags(String xml, String tagToLookFor) throws Exception {
+ int count = 0;
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(new StringReader(xml));
+ int event = parser.getEventType();
+ while (event != XmlPullParser.END_DOCUMENT) {
+ if (event == XmlPullParser.START_TAG && tagToLookFor.equals(parser.getName())) {
+ count++;
+ }
+ event = parser.next();
+ }
+ return count;
+ }
+
+ private int countXmlAttributesWhere(String xml, String tag, String attr, String value)
+ throws Exception {
+ int count = 0;
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(new StringReader(xml));
+ int event = parser.getEventType();
+ while (event != XmlPullParser.END_DOCUMENT) {
+ if (event == XmlPullParser.START_TAG && tag.equals(parser.getName())) {
+ String v = parser.getAttributeValue(null, attr);
+ if (value.equals(v)) {
+ count++;
+ }
+ }
+ event = parser.next();
+ }
+ return count;
+ }
+
+ private void insert(OverlayInfo oi) throws Exception {
+ mSettings.init(oi.packageName, oi.userId, oi.targetPackageName, null, oi.baseCodePath,
+ false, 0, oi.category);
+ mSettings.setState(oi.packageName, oi.userId, oi.state);
+ mSettings.setEnabled(oi.packageName, oi.userId, false);
+ }
+
+ private static void assertContains(final OverlayManagerSettings settings,
+ final OverlayInfo oi) {
+ assertContains(settings, oi.packageName, oi.userId);
+ }
+
+ private static void assertContains(final OverlayManagerSettings settings,
+ final String packageName, int userId) {
+ try {
+ settings.getOverlayInfo(packageName, userId);
+ } catch (OverlayManagerSettings.BadKeyException e) {
+ fail(String.format("settings does not contain packageName=%s userId=%d",
+ packageName, userId));
+ }
+ }
+
+ private static void assertDoesNotContain(final OverlayManagerSettings settings,
+ final OverlayInfo oi) {
+ assertDoesNotContain(settings, oi.packageName, oi.userId);
+ }
+
+ private static void assertDoesNotContain(final OverlayManagerSettings settings,
+ final String packageName, int userId) {
+ try {
+ settings.getOverlayInfo(packageName, userId);
+ fail(String.format("settings contains packageName=%s userId=%d", packageName, userId));
+ } catch (OverlayManagerSettings.BadKeyException e) {
+ // do nothing: we expect to end up here
+ }
+ }
+
+ private static void assertContains(int[] haystack, int needle) {
+ List<Integer> list = IntStream.of(haystack)
+ .boxed()
+ .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
+ if (!list.contains(needle)) {
+ fail(String.format("integer array [%s] does not contain value %s",
+ TextUtils.join(",", list), needle));
+ }
+ }
+
+ private static void assertDoesNotContain(int[] haystack, int needle) {
+ List<Integer> list = IntStream.of(haystack)
+ .boxed()
+ .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
+ if (list.contains(needle)) {
+ fail(String.format("integer array [%s] contains value %s",
+ TextUtils.join(",", list), needle));
+ }
+ }
+
+ private static void assertListsAreEqual(List<OverlayInfo> list, OverlayInfo... array) {
+ List<OverlayInfo> other = Stream.of(array)
+ .collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
+ assertListsAreEqual(list, other);
+ }
+
+ private static void assertListsAreEqual(List<OverlayInfo> list, List<OverlayInfo> other) {
+ if (!list.equals(other)) {
+ fail(String.format("lists [%s] and [%s] differ",
+ TextUtils.join(",", list), TextUtils.join(",", other)));
+ }
+ }
+}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java
index 43fe674c5d78..8aaf29a11033 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ManagedServicesTest.java
@@ -23,9 +23,11 @@ import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
@@ -36,6 +38,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
@@ -61,6 +64,7 @@ import com.google.android.collect.Lists;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
@@ -965,6 +969,62 @@ public class ManagedServicesTest extends UiServiceTestCase {
}
@Test
+ public void testOnNullBinding() throws Exception {
+ Context context = mock(Context.class);
+ PackageManager pm = mock(PackageManager.class);
+ ApplicationInfo ai = new ApplicationInfo();
+ ai.targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT;
+
+ when(context.getPackageName()).thenReturn(mContext.getPackageName());
+ when(context.getUserId()).thenReturn(mContext.getUserId());
+ when(context.getPackageManager()).thenReturn(pm);
+ when(pm.getApplicationInfo(anyString(), anyInt())).thenReturn(ai);
+
+ ManagedServices service = new TestManagedServices(context, mLock, mUserProfiles, mIpm,
+ APPROVAL_BY_COMPONENT);
+ ComponentName cn = ComponentName.unflattenFromString("a/a");
+
+ service.registerSystemService(cn, 0);
+ when(context.bindServiceAsUser(any(), any(), anyInt(), any())).thenAnswer(invocation -> {
+ Object[] args = invocation.getArguments();
+ ServiceConnection sc = (ServiceConnection) args[1];
+ sc.onNullBinding(cn);
+ return true;
+ });
+
+ service.registerSystemService(cn, 0);
+ assertFalse(service.isBound(cn, 0));
+ }
+
+ @Test
+ public void testOnServiceConnected() throws Exception {
+ Context context = mock(Context.class);
+ PackageManager pm = mock(PackageManager.class);
+ ApplicationInfo ai = new ApplicationInfo();
+ ai.targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT;
+
+ when(context.getPackageName()).thenReturn(mContext.getPackageName());
+ when(context.getUserId()).thenReturn(mContext.getUserId());
+ when(context.getPackageManager()).thenReturn(pm);
+ when(pm.getApplicationInfo(anyString(), anyInt())).thenReturn(ai);
+
+ ManagedServices service = new TestManagedServices(context, mLock, mUserProfiles, mIpm,
+ APPROVAL_BY_COMPONENT);
+ ComponentName cn = ComponentName.unflattenFromString("a/a");
+
+ service.registerSystemService(cn, 0);
+ when(context.bindServiceAsUser(any(), any(), anyInt(), any())).thenAnswer(invocation -> {
+ Object[] args = invocation.getArguments();
+ ServiceConnection sc = (ServiceConnection) args[1];
+ sc.onServiceConnected(cn, mock(IBinder.class));
+ return true;
+ });
+
+ service.registerSystemService(cn, 0);
+ assertTrue(service.isBound(cn, 0));
+ }
+
+ @Test
public void testOnPackagesChanged_nullValuesPassed_noNullPointers() {
for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) {
ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles,
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index ca7a71ecad75..91d9078e72cc 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -71,8 +71,10 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Activity;
import android.app.ActivityManager;
import android.app.AppOpsManager;
+import android.app.AutomaticZenRule;
import android.app.IActivityManager;
import android.app.INotificationManager;
import android.app.ITransientNotification;
@@ -117,6 +119,7 @@ import android.service.notification.NotificationListenerService;
import android.service.notification.NotificationStats;
import android.service.notification.NotifyingApp;
import android.service.notification.StatusBarNotification;
+import android.service.notification.ZenPolicy;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableContext;
@@ -2887,7 +2890,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
}
@Test
- public void testApplyEnqueuedAdjustmentFromAssistant_importance_onTime() throws Exception {
+ public void testApplyEnqueuedAdjustmentFromAssistant_importance() throws Exception {
final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel);
mService.addEnqueuedNotification(r);
NotificationManagerService.WorkerHandler handler = mock(
@@ -2905,25 +2908,6 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
}
@Test
- public void testApplyEnqueuedAdjustmentFromAssistant_importance_tooLate() throws Exception {
- final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel);
- mService.addNotification(r);
- NotificationManagerService.WorkerHandler handler = mock(
- NotificationManagerService.WorkerHandler.class);
- mService.setHandler(handler);
- when(mAssistants.isSameUser(eq(null), anyInt())).thenReturn(true);
-
- Bundle signals = new Bundle();
- signals.putInt(KEY_IMPORTANCE, IMPORTANCE_LOW);
- Adjustment adjustment = new Adjustment(
- r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
- mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
-
- assertEquals(IMPORTANCE_DEFAULT, r.getImportance());
- assertFalse(r.hasAdjustment(KEY_IMPORTANCE));
- }
-
- @Test
public void testApplyEnqueuedAdjustmentFromAssistant_crossUser() throws Exception {
final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel);
mService.addEnqueuedNotification(r);
@@ -4305,6 +4289,36 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
}
@Test
+ public void testFlagBubble() throws RemoteException {
+ // Bubbles are allowed!
+ mService.setPreferencesHelper(mPreferencesHelper);
+ when(mPreferencesHelper.areBubblesAllowed(anyString(), anyInt())).thenReturn(true);
+ when(mPreferencesHelper.getNotificationChannel(
+ anyString(), anyInt(), anyString(), anyBoolean())).thenReturn(
+ mTestNotificationChannel);
+ when(mPreferencesHelper.getImportance(anyString(), anyInt())).thenReturn(
+ mTestNotificationChannel.getImportance());
+
+ // Notif with bubble metadata but not our other misc requirements
+ NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel,
+ null /* tvExtender */, true /* isBubble */);
+
+ // Say we're foreground
+ when(mActivityManager.getPackageImportance(nr.sbn.getPackageName())).thenReturn(
+ IMPORTANCE_FOREGROUND);
+
+ mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag",
+ nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+ waitForIdle();
+
+ StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
+ assertEquals(1, notifs.length);
+ assertTrue((notifs[0].getNotification().flags & FLAG_BUBBLE) != 0);
+ assertTrue(mService.getNotificationRecord(
+ nr.sbn.getKey()).getNotification().isBubbleNotification());
+ }
+
+ @Test
public void testFlagBubbleNotifs_flag_appForeground() throws RemoteException {
// Bubbles are allowed!
mService.setPreferencesHelper(mPreferencesHelper);
@@ -4934,15 +4948,15 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
assertEquals(1, mService.getNotificationRecordCount());
}
- public void testGetAllowedAssistantCapabilities() throws Exception {
- List<String> capabilities = mBinderService.getAllowedAssistantCapabilities(null);
+ public void testGetAllowedAssistantAdjustments() throws Exception {
+ List<String> capabilities = mBinderService.getAllowedAssistantAdjustments(null);
assertNotNull(capabilities);
for (int i = capabilities.size() - 1; i >= 0; i--) {
String capability = capabilities.get(i);
- mBinderService.disallowAssistantCapability(capability);
- assertEquals(i + 1, mBinderService.getAllowedAssistantCapabilities(null).size());
- List<String> currentCapabilities = mBinderService.getAllowedAssistantCapabilities(null);
+ mBinderService.disallowAssistantAdjustment(capability);
+ assertEquals(i + 1, mBinderService.getAllowedAssistantAdjustments(null).size());
+ List<String> currentCapabilities = mBinderService.getAllowedAssistantAdjustments(null);
assertNotNull(currentCapabilities);
assertFalse(currentCapabilities.contains(capability));
}
@@ -4967,6 +4981,29 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
assertEquals(USER_SENTIMENT_NEUTRAL, r.getUserSentiment());
}
+ public void testAutomaticZenRuleValidation_policyFilterAgreement() throws Exception {
+ ComponentName owner = mock(ComponentName.class);
+ ZenPolicy zenPolicy = new ZenPolicy.Builder().allowAlarms(true).build();
+ boolean isEnabled = true;
+ AutomaticZenRule rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class),
+ zenPolicy, NotificationManager.INTERRUPTION_FILTER_NONE, isEnabled);
+
+ try {
+ mBinderService.addAutomaticZenRule(rule);
+ fail("Zen policy only aplies to priority only mode");
+ } catch (IllegalArgumentException e) {
+ // yay
+ }
+
+ rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class),
+ zenPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, isEnabled);
+ mBinderService.addAutomaticZenRule(rule);
+
+ rule = new AutomaticZenRule("test", owner, owner, mock(Uri.class),
+ null, NotificationManager.INTERRUPTION_FILTER_NONE, isEnabled);
+ mBinderService.addAutomaticZenRule(rule);
+ }
+
public void testAreNotificationsEnabledForPackage_crossUser() throws Exception {
try {
mBinderService.areNotificationsEnabledForPackage(mContext.getPackageName(),
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index 6ed78b36190f..b34bd2595287 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -940,12 +940,12 @@ public class PreferencesHelperTest extends UiServiceTestCase {
@Test
public void testClearLockedFields() {
final NotificationChannel channel = getChannel();
- mHelper.clearLockedFields(channel);
+ mHelper.clearLockedFieldsLocked(channel);
assertEquals(0, channel.getUserLockedFields());
channel.lockFields(NotificationChannel.USER_LOCKED_PRIORITY
| NotificationChannel.USER_LOCKED_IMPORTANCE);
- mHelper.clearLockedFields(channel);
+ mHelper.clearLockedFieldsLocked(channel);
assertEquals(0, channel.getUserLockedFields());
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/BoundsAnimationControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/BoundsAnimationControllerTests.java
index 9ce579512eda..beec1a8b8942 100644
--- a/services/tests/wmtests/src/com/android/server/wm/BoundsAnimationControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/BoundsAnimationControllerTests.java
@@ -18,6 +18,8 @@ package com.android.server.wm;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+import static com.android.server.wm.BoundsAnimationController.BOUNDS;
+import static com.android.server.wm.BoundsAnimationController.FADE_IN;
import static com.android.server.wm.BoundsAnimationController.NO_PIP_MODE_CHANGED_CALLBACKS;
import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
@@ -131,6 +133,8 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
boolean mCancelRequested;
Rect mStackBounds;
Rect mTaskBounds;
+ float mAlpha;
+ @BoundsAnimationController.AnimationType int mAnimationType;
void initialize(Rect from) {
mAwaitingAnimationStart = true;
@@ -148,11 +152,12 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@Override
public boolean onAnimationStart(boolean schedulePipModeChangedCallback,
- boolean forceUpdate) {
+ boolean forceUpdate, @BoundsAnimationController.AnimationType int animationType) {
mAwaitingAnimationStart = false;
mAnimationStarted = true;
mSchedulePipModeChangedOnStart = schedulePipModeChangedCallback;
mForcePipModeChangedCallback = forceUpdate;
+ mAnimationType = animationType;
return true;
}
@@ -185,6 +190,12 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mMovedToFullscreen = moveToFullscreen;
mTaskBounds = null;
}
+
+ @Override
+ public boolean setPinnedStackAlpha(float alpha) {
+ mAlpha = alpha;
+ return true;
+ }
}
/**
@@ -201,6 +212,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
private Rect mTo;
private Rect mLargerBounds;
private Rect mExpectedFinalBounds;
+ private @BoundsAnimationController.AnimationType int mAnimationType;
BoundsAnimationDriver(BoundsAnimationController controller,
TestBoundsAnimationTarget target, MockValueAnimator mockValueAnimator) {
@@ -209,7 +221,8 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mMockAnimator = mockValueAnimator;
}
- BoundsAnimationDriver start(Rect from, Rect to) {
+ BoundsAnimationDriver start(Rect from, Rect to,
+ @BoundsAnimationController.AnimationType int animationType) {
if (mAnimator != null) {
throw new IllegalArgumentException("Call restart() to restart an animation");
}
@@ -223,7 +236,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
assertTrue(mTarget.mAwaitingAnimationStart);
assertFalse(mTarget.mAnimationStarted);
- startImpl(from, to);
+ startImpl(from, to, animationType);
// Ensure that the animator is paused for the all windows drawn signal when animating
// to/from fullscreen
@@ -253,7 +266,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
mTarget.mAnimationStarted = false;
// Start animation
- startImpl(mTarget.mStackBounds, to);
+ startImpl(mTarget.mStackBounds, to, BOUNDS);
if (toSameBounds) {
// Same animator if same final bounds
@@ -273,13 +286,15 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
return this;
}
- private BoundsAnimationDriver startImpl(Rect from, Rect to) {
+ private BoundsAnimationDriver startImpl(Rect from, Rect to,
+ @BoundsAnimationController.AnimationType int animationType) {
boolean fromFullscreen = from.equals(BOUNDS_FULL);
boolean toFullscreen = to.equals(BOUNDS_FULL);
mFrom = new Rect(from);
mTo = new Rect(to);
mExpectedFinalBounds = new Rect(to);
mLargerBounds = getLargerBounds(mFrom, mTo);
+ mAnimationType = animationType;
// Start animation
final @SchedulePipModeChangedState int schedulePipModeChangedState = toFullscreen
@@ -288,17 +303,19 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
? SCHEDULE_PIP_MODE_CHANGED_ON_END
: NO_PIP_MODE_CHANGED_CALLBACKS;
mAnimator = mController.animateBoundsImpl(mTarget, from, to, DURATION,
- schedulePipModeChangedState, fromFullscreen, toFullscreen);
-
- // Original stack bounds, frozen task bounds
- assertEquals(mFrom, mTarget.mStackBounds);
- assertEqualSizeAtOffset(mLargerBounds, mTarget.mTaskBounds);
+ schedulePipModeChangedState, fromFullscreen, toFullscreen, animationType);
- // Animating to larger size
- if (mFrom.equals(mLargerBounds)) {
- assertFalse(mAnimator.animatingToLargerSize());
- } else if (mTo.equals(mLargerBounds)) {
- assertTrue(mAnimator.animatingToLargerSize());
+ if (animationType == BOUNDS) {
+ // Original stack bounds, frozen task bounds
+ assertEquals(mFrom, mTarget.mStackBounds);
+ assertEqualSizeAtOffset(mLargerBounds, mTarget.mTaskBounds);
+
+ // Animating to larger size
+ if (mFrom.equals(mLargerBounds)) {
+ assertFalse(mAnimator.animatingToLargerSize());
+ } else if (mTo.equals(mLargerBounds)) {
+ assertTrue(mAnimator.animatingToLargerSize());
+ }
}
return this;
@@ -315,16 +332,20 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
BoundsAnimationDriver update(float t) {
mAnimator.onAnimationUpdate(mMockAnimator.getWithValue(t));
- // Temporary stack bounds, frozen task bounds
- if (t == 0f) {
- assertEquals(mFrom, mTarget.mStackBounds);
- } else if (t == 1f) {
- assertEquals(mTo, mTarget.mStackBounds);
+ if (mAnimationType == BOUNDS) {
+ // Temporary stack bounds, frozen task bounds
+ if (t == 0f) {
+ assertEquals(mFrom, mTarget.mStackBounds);
+ } else if (t == 1f) {
+ assertEquals(mTo, mTarget.mStackBounds);
+ } else {
+ assertNotEquals(mFrom, mTarget.mStackBounds);
+ assertNotEquals(mTo, mTarget.mStackBounds);
+ }
+ assertEqualSizeAtOffset(mLargerBounds, mTarget.mTaskBounds);
} else {
- assertNotEquals(mFrom, mTarget.mStackBounds);
- assertNotEquals(mTo, mTarget.mStackBounds);
+ assertEquals((float) mMockAnimator.getAnimatedValue(), mTarget.mAlpha, 0.01f);
}
- assertEqualSizeAtOffset(mLargerBounds, mTarget.mTaskBounds);
return this;
}
@@ -353,10 +374,14 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
BoundsAnimationDriver end() {
mAnimator.end();
- // Final stack bounds
- assertEquals(mTo, mTarget.mStackBounds);
- assertEquals(mExpectedFinalBounds, mTarget.mAnimationEndFinalStackBounds);
- assertNull(mTarget.mTaskBounds);
+ if (mAnimationType == BOUNDS) {
+ // Final stack bounds
+ assertEquals(mTo, mTarget.mStackBounds);
+ assertEquals(mExpectedFinalBounds, mTarget.mAnimationEndFinalStackBounds);
+ assertNull(mTarget.mTaskBounds);
+ } else {
+ assertEquals(mTarget.mAlpha, 1f, 0.01f);
+ }
return this;
}
@@ -413,7 +438,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFullscreenToFloatingTransition() {
- mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0f)
.update(0.5f)
@@ -425,7 +450,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToFullscreenTransition() {
- mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL)
+ mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL, BOUNDS)
.expectStarted(SCHEDULE_PIP_MODE_CHANGED)
.update(0f)
.update(0.5f)
@@ -437,7 +462,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToSmallerFloatingTransition() {
- mDriver.start(BOUNDS_FLOATING, BOUNDS_SMALLER_FLOATING)
+ mDriver.start(BOUNDS_FLOATING, BOUNDS_SMALLER_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0f)
.update(0.5f)
@@ -449,7 +474,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToLargerFloatingTransition() {
- mDriver.start(BOUNDS_SMALLER_FLOATING, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_SMALLER_FLOATING, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0f)
.update(0.5f)
@@ -463,7 +488,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFullscreenToFloatingCancelFromTarget() {
- mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.cancel()
@@ -473,7 +498,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFullscreenToFloatingCancelFromAnimationToSameBounds() {
- mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.restart(BOUNDS_FLOATING, false /* expectStartedAndPipModeChangedCallback */)
@@ -484,7 +509,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFullscreenToFloatingCancelFromAnimationToFloatingBounds() {
- mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.restart(BOUNDS_SMALLER_FLOATING,
@@ -498,7 +523,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
public void testFullscreenToFloatingCancelFromAnimationToFullscreenBounds() {
// When animating from fullscreen and the animation is interruped, we expect the animation
// start callback to be made, with a forced pip mode change callback
- mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.restart(BOUNDS_FULL, true /* expectStartedAndPipModeChangedCallback */)
@@ -511,7 +536,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToFullscreenCancelFromTarget() {
- mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL)
+ mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL, BOUNDS)
.expectStarted(SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.cancel()
@@ -521,7 +546,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToFullscreenCancelFromAnimationToSameBounds() {
- mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL)
+ mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL, BOUNDS)
.expectStarted(SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.restart(BOUNDS_FULL, false /* expectStartedAndPipModeChangedCallback */)
@@ -532,7 +557,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToFullscreenCancelFromAnimationToFloatingBounds() {
- mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL)
+ mDriver.start(BOUNDS_FLOATING, BOUNDS_FULL, BOUNDS)
.expectStarted(SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.restart(BOUNDS_SMALLER_FLOATING,
@@ -546,7 +571,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToSmallerFloatingCancelFromTarget() {
- mDriver.start(BOUNDS_FLOATING, BOUNDS_SMALLER_FLOATING)
+ mDriver.start(BOUNDS_FLOATING, BOUNDS_SMALLER_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.cancel()
@@ -556,13 +581,25 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
@UiThreadTest
@Test
public void testFloatingToLargerFloatingCancelFromTarget() {
- mDriver.start(BOUNDS_SMALLER_FLOATING, BOUNDS_FLOATING)
+ mDriver.start(BOUNDS_SMALLER_FLOATING, BOUNDS_FLOATING, BOUNDS)
.expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
.update(0.25f)
.cancel()
.expectEnded(!SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN);
}
+ @UiThreadTest
+ @Test
+ public void testFadeIn() {
+ mDriver.start(BOUNDS_FULL, BOUNDS_FLOATING, FADE_IN)
+ .expectStarted(!SCHEDULE_PIP_MODE_CHANGED)
+ .update(0f)
+ .update(0.5f)
+ .update(1f)
+ .end()
+ .expectEnded(SCHEDULE_PIP_MODE_CHANGED, !MOVE_TO_FULLSCREEN);
+ }
+
/** MISC **/
@UiThreadTest
@@ -570,7 +607,7 @@ public class BoundsAnimationControllerTests extends WindowTestsBase {
public void testBoundsAreCopied() {
Rect from = new Rect(0, 0, 100, 100);
Rect to = new Rect(25, 25, 75, 75);
- mDriver.start(from, to)
+ mDriver.start(from, to, BOUNDS)
.update(0.25f)
.end();
assertEquals(new Rect(0, 0, 100, 100), from);
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
index e392353a8875..0c2ce614b772 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
@@ -163,7 +163,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
// Assume IRecentsAnimationController#cleanupScreenshot called to finish screenshot
// animation.
mController.mRecentScreenshotAnimator.cancelAnimation();
- verify(mAnimationCallbacks).onAnimationFinished(REORDER_KEEP_IN_PLACE, true);
+ verify(mAnimationCallbacks).onAnimationFinished(REORDER_KEEP_IN_PLACE, true, false);
}
private static void verifyNoMoreInteractionsExceptAsBinder(IInterface binder) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
index 5625ea42726f..f615823a645c 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationTest.java
@@ -71,6 +71,7 @@ public class RecentsAnimationTest extends ActivityTestsBase {
@Test
public void testCancelAnimationOnVisibleStackOrderChange() {
ActivityDisplay display = mService.mRootActivityContainer.getDefaultDisplay();
+ display.mDisplayContent.mBoundsAnimationController = mock(BoundsAnimationController.class);
ActivityStack fullscreenStack = display.createStack(WINDOWING_MODE_FULLSCREEN,
ACTIVITY_TYPE_STANDARD, true /* onTop */);
new ActivityBuilder(mService)
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
index 2377df406fbc..9cdb465dc445 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
@@ -19,16 +19,14 @@ package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
import static com.android.server.wm.TaskPositioner.MIN_ASPECT;
import static com.android.server.wm.WindowManagerService.dipToPixel;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -39,9 +37,9 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
-import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -53,7 +51,6 @@ import org.junit.Test;
*/
@SmallTest
@Presubmit
-@FlakyTest
public class TaskPositionerTests extends WindowTestsBase {
private static final boolean DEBUGGING = false;
@@ -66,10 +63,9 @@ public class TaskPositionerTests extends WindowTestsBase {
private int mMinVisibleHeight;
private TaskPositioner mPositioner;
private WindowState mWindow;
- private Rect mDimBounds = new Rect();
@Before
- public void setUp() throws Exception {
+ public void setUp() {
TaskPositioner.setFactory(null);
final Display display = mDisplayContent.getDisplay();
@@ -84,17 +80,16 @@ public class TaskPositionerTests extends WindowTestsBase {
mPositioner.register(mDisplayContent);
mWindow = createWindow(null, TYPE_BASE_APPLICATION, "window");
- final Task task = mWindow.getTask();
- spyOn(task);
- doAnswer(invocation -> {
- final Rect rect = (Rect) invocation.getArguments()[0];
- rect.set(mDimBounds);
- return null;
- }).when(task).getDimBounds(any(Rect.class));
-
+ mPositioner.mTask = mWindow.getTask();
mWindow.getStack().setWindowingMode(WINDOWING_MODE_FREEFORM);
}
+ @After
+ public void tearDown() {
+ mWindow = null;
+ mPositioner = null;
+ }
+
@Test
public void testOverrideFactory() {
final boolean[] created = new boolean[1];
@@ -119,11 +114,11 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testBasicFreeWindowResizing() {
final Rect r = new Rect(100, 220, 700, 520);
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
// Start a drag resize starting upper left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
assertBoundsEquals(r, mPositioner.getWindowDragBounds());
// Drag to a good landscape size.
@@ -149,8 +144,8 @@ public class TaskPositionerTests extends WindowTestsBase {
mPositioner.getWindowDragBounds());
// Start a drag resize left and see that only the left coord changes..
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
// Drag to the left.
mPositioner.resizeDrag(0.0f, midY);
@@ -181,77 +176,77 @@ public class TaskPositionerTests extends WindowTestsBase {
final Rect r = new Rect(100, 220, 700, 520);
final int midX = (r.left + r.right) / 2;
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
// Drag upper left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
mPositioner.resizeDrag(0.0f, 0.0f);
- assertTrue(r.left != mPositioner.getWindowDragBounds().left);
+ assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
- assertTrue(r.top != mPositioner.getWindowDragBounds().top);
+ assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag upper.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, midX, r.top - MOUSE_DELTA_Y);
mPositioner.resizeDrag(0.0f, 0.0f);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
- assertTrue(r.top != mPositioner.getWindowDragBounds().top);
+ assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag upper right.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.right + MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.right + MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
mPositioner.resizeDrag(r.right + 100, 0.0f);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
- assertTrue(r.right != mPositioner.getWindowDragBounds().right);
- assertTrue(r.top != mPositioner.getWindowDragBounds().top);
+ assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
+ assertNotEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag right.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.right + MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.right + MOUSE_DELTA_X, midY);
mPositioner.resizeDrag(r.right + 100, 0.0f);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
- assertTrue(r.right != mPositioner.getWindowDragBounds().right);
+ assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag bottom right.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/,
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */,
r.right + MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
mPositioner.resizeDrag(r.right + 100, r.bottom + 100);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
- assertTrue(r.right != mPositioner.getWindowDragBounds().right);
+ assertNotEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
- assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
+ assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag bottom.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, midX, r.bottom + MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, midX, r.bottom + MOUSE_DELTA_Y);
mPositioner.resizeDrag(r.right + 100, r.bottom + 100);
assertEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
- assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
+ assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag bottom left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.bottom + MOUSE_DELTA_Y);
mPositioner.resizeDrag(0.0f, r.bottom + 100);
- assertTrue(r.left != mPositioner.getWindowDragBounds().left);
+ assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
- assertTrue(r.bottom != mPositioner.getWindowDragBounds().bottom);
+ assertNotEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
// Drag left.
- mPositioner.startDrag(mWindow, true /*resizing*/,
- false /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midX);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ false /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
mPositioner.resizeDrag(0.0f, r.bottom + 100);
- assertTrue(r.left != mPositioner.getWindowDragBounds().left);
+ assertNotEquals(r.left, mPositioner.getWindowDragBounds().left);
assertEquals(r.right, mPositioner.getWindowDragBounds().right);
assertEquals(r.top, mPositioner.getWindowDragBounds().top);
assertEquals(r.bottom, mPositioner.getWindowDragBounds().bottom);
@@ -264,10 +259,10 @@ public class TaskPositionerTests extends WindowTestsBase {
@Test
public void testLandscapePreservedWindowResizingDragTopLeft() {
final Rect r = new Rect(100, 220, 700, 520);
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
assertBoundsEquals(r, mPositioner.getWindowDragBounds());
// Drag to a good landscape size.
@@ -303,10 +298,10 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testLandscapePreservedWindowResizingDragLeft() {
final Rect r = new Rect(100, 220, 700, 520);
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
// Drag to the left.
mPositioner.resizeDrag(0.0f, midY);
@@ -344,7 +339,7 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testLandscapePreservedWindowResizingDragTop() {
final Rect r = new Rect(100, 220, 700, 520);
final int midX = (r.left + r.right) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
mPositioner.startDrag(mWindow, true /*resizing*/,
true /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
@@ -380,7 +375,7 @@ public class TaskPositionerTests extends WindowTestsBase {
@Test
public void testPortraitPreservedWindowResizingDragTopLeft() {
final Rect r = new Rect(330, 100, 630, 600);
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
mPositioner.startDrag(mWindow, true /*resizing*/,
true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, r.top - MOUSE_DELTA_Y);
@@ -414,10 +409,10 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testPortraitPreservedWindowResizingDragLeft() {
final Rect r = new Rect(330, 100, 630, 600);
final int midY = (r.top + r.bottom) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, r.left - MOUSE_DELTA_X, midY);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, r.left - MOUSE_DELTA_X, midY);
// Drag to the left.
mPositioner.resizeDrag(0.0f, midY);
@@ -457,10 +452,10 @@ public class TaskPositionerTests extends WindowTestsBase {
public void testPortraitPreservedWindowResizingDragTop() {
final Rect r = new Rect(330, 100, 630, 600);
final int midX = (r.left + r.right) / 2;
- mDimBounds.set(r);
+ mPositioner.mTask.setBounds(r, true);
- mPositioner.startDrag(mWindow, true /*resizing*/,
- true /*preserveOrientation*/, midX, r.top - MOUSE_DELTA_Y);
+ mPositioner.startDrag(mWindow, true /* resizing */,
+ true /* preserveOrientation */, midX, r.top - MOUSE_DELTA_Y);
// Drag to the left (no change).
mPositioner.resizeDrag(0.0f, r.top);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java
index ca815eca9a1f..cb6dc6d42bd5 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotSurfaceTest.java
@@ -30,6 +30,7 @@ import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
+import android.app.ActivityManager.TaskDescription;
import android.app.ActivityManager.TaskSnapshot;
import android.content.ComponentName;
import android.graphics.Canvas;
@@ -38,7 +39,6 @@ import android.graphics.GraphicBuffer;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.platform.test.annotations.Presubmit;
-import android.view.Surface;
import android.view.SurfaceControl;
import androidx.test.filters.SmallTest;
@@ -67,8 +67,17 @@ public class TaskSnapshotSurfaceTest extends WindowTestsBase {
ORIENTATION_PORTRAIT, contentInsets, false, 1.0f, true /* isRealSnapshot */,
WINDOWING_MODE_FULLSCREEN, 0 /* systemUiVisibility */, false /* isTranslucent */);
mSurface = new TaskSnapshotSurface(mWm, new Window(), new SurfaceControl(), snapshot, "Test",
- Color.WHITE, Color.RED, Color.BLUE, sysuiVis, windowFlags, 0, taskBounds,
- ORIENTATION_PORTRAIT);
+ createTaskDescription(Color.WHITE, Color.RED, Color.BLUE), sysuiVis, windowFlags, 0,
+ taskBounds, ORIENTATION_PORTRAIT);
+ }
+
+ private static TaskDescription createTaskDescription(int background, int statusBar,
+ int navigationBar) {
+ final TaskDescription td = new TaskDescription();
+ td.setBackgroundColor(background);
+ td.setStatusBarColor(statusBar);
+ td.setNavigationBarColor(navigationBar);
+ return td;
}
private void setupSurface(int width, int height) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowAnimationSpecTest.java b/services/tests/wmtests/src/com/android/server/wm/WindowAnimationSpecTest.java
index 897f0a2c6e81..0330de8d2c63 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowAnimationSpecTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowAnimationSpecTest.java
@@ -22,6 +22,8 @@ import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_AFTER_ANIM;
import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_BEFORE_ANIM;
import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_NONE;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
@@ -70,7 +72,8 @@ public class WindowAnimationSpecTest {
mStackBounds, false /* canSkipFirstFrame */, STACK_CLIP_AFTER_ANIM,
true /* isAppAnimation */, 0 /* windowCornerRadius */);
windowAnimationSpec.apply(mTransaction, mSurfaceControl, 0);
- verify(mTransaction).setWindowCrop(eq(mSurfaceControl), argThat(Rect::isEmpty));
+ verify(mTransaction).setWindowCrop(eq(mSurfaceControl),
+ argThat(rect -> rect.equals(mStackBounds)));
}
@Test
@@ -80,7 +83,8 @@ public class WindowAnimationSpecTest {
new Point(20, 40), mStackBounds, false /* canSkipFirstFrame */,
STACK_CLIP_AFTER_ANIM, true /* isAppAnimation */, 0 /* windowCornerRadius */);
windowAnimationSpec.apply(mTransaction, mSurfaceControl, 0);
- verify(mTransaction).setWindowCrop(eq(mSurfaceControl), argThat(Rect::isEmpty));
+ verify(mTransaction).setWindowCrop(eq(mSurfaceControl),
+ argThat(rect -> rect.equals(mStackBounds)));
}
@Test
@@ -121,6 +125,17 @@ public class WindowAnimationSpecTest {
}
@Test
+ public void testApply_setCornerRadius_noClip() {
+ final float windowCornerRadius = 30f;
+ WindowAnimationSpec windowAnimationSpec = new WindowAnimationSpec(mAnimation, null,
+ mStackBounds, false /* canSkipFirstFrame */, STACK_CLIP_NONE,
+ true /* isAppAnimation */, windowCornerRadius);
+ when(mAnimation.hasRoundedCorners()).thenReturn(true);
+ windowAnimationSpec.apply(mTransaction, mSurfaceControl, 0);
+ verify(mTransaction, never()).setCornerRadius(any(), anyFloat());
+ }
+
+ @Test
public void testApply_clipBeforeSmallerAnimationClip() {
// Stack bounds is (0, 0, 10, 10) animation clip is (0, 0, 5, 5)
Rect windowCrop = new Rect(0, 0, 5, 5);
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index ad1e3ef43ea4..4d7ae7309e27 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -1238,6 +1238,9 @@ public class VoiceInteractionManagerService extends SystemService {
RoleObserver(@NonNull @CallbackExecutor Executor executor) {
mRm.addOnRoleHoldersChangedListenerAsUser(executor, this, UserHandle.ALL);
+ UserHandle currentUser = UserHandle.of(LocalServices.getService(
+ ActivityManagerInternal.class).getCurrentUserId());
+ onRoleHoldersChanged(RoleManager.ROLE_ASSISTANT, currentUser);
}
private @NonNull String getDefaultRecognizer(@NonNull UserHandle user) {
@@ -1285,7 +1288,9 @@ public class VoiceInteractionManagerService extends SystemService {
// Try to set role holder as VoiceInteractionService
List<ResolveInfo> services = mPm.queryIntentServicesAsUser(
new Intent(VoiceInteractionService.SERVICE_INTERFACE).setPackage(pkg),
- PackageManager.GET_META_DATA, userId);
+ PackageManager.GET_META_DATA
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, userId);
for (ResolveInfo resolveInfo : services) {
ServiceInfo serviceInfo = resolveInfo.serviceInfo;
@@ -1318,7 +1323,9 @@ public class VoiceInteractionManagerService extends SystemService {
// If no service could be found try to set assist activity
final List<ResolveInfo> activities = mPm.queryIntentActivitiesAsUser(
new Intent(Intent.ACTION_ASSIST).setPackage(pkg),
- PackageManager.MATCH_DEFAULT_ONLY, userId);
+ PackageManager.MATCH_DEFAULT_ONLY
+ | PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, userId);
for (ResolveInfo resolveInfo : activities) {
ActivityInfo activityInfo = resolveInfo.activityInfo;
@@ -1331,6 +1338,7 @@ public class VoiceInteractionManagerService extends SystemService {
Settings.Secure.putStringForUser(getContext().getContentResolver(),
Settings.Secure.VOICE_RECOGNITION_SERVICE,
getDefaultRecognizer(user), userId);
+ return;
}
}
}
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index 8d2cbca08586..ea523774bf84 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -25,9 +25,6 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.ActivityTaskManager;
-
-import com.android.internal.app.IVoiceActionCheckCallback;
-import com.android.server.wm.ActivityTaskManagerInternal;
import android.app.IActivityManager;
import android.app.IActivityTaskManager;
import android.content.BroadcastReceiver;
@@ -51,15 +48,16 @@ import android.util.PrintWriterPrinter;
import android.util.Slog;
import android.view.IWindowManager;
+import com.android.internal.app.IVoiceActionCheckCallback;
import com.android.internal.app.IVoiceInteractionSessionShowCallback;
import com.android.internal.app.IVoiceInteractor;
import com.android.server.LocalServices;
+import com.android.server.wm.ActivityTaskManagerInternal;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConnection.Callback {
final static String TAG = "VoiceInteractionServiceManager";
@@ -358,6 +356,7 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne
intent.setComponent(mComponent);
mBound = mContext.bindServiceAsUser(intent, mConnection,
Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
+ | Context.BIND_INCLUDE_CAPABILITIES
| Context.BIND_ALLOW_BACKGROUND_ACTIVITY_STARTS, new UserHandle(mUser));
if (!mBound) {
Slog.w(TAG, "Failed binding to voice interaction service " + mComponent);
diff --git a/telecomm/java/android/telecom/CallRedirectionService.java b/telecomm/java/android/telecom/CallRedirectionService.java
index 37fab09cd745..36c637723c0a 100644
--- a/telecomm/java/android/telecom/CallRedirectionService.java
+++ b/telecomm/java/android/telecom/CallRedirectionService.java
@@ -119,18 +119,18 @@ public abstract class CallRedirectionService extends Service {
* {@link #onPlaceCall(Uri, PhoneAccountHandle, boolean)}. The response corresponds to the
* latest request via {@link #onPlaceCall(Uri, PhoneAccountHandle, boolean)}.
*
- * @param handle the new phone number to dial
+ * @param gatewayUri the gateway uri for call redirection.
* @param targetPhoneAccount the {@link PhoneAccountHandle} to use when placing the call.
* @param confirmFirst Telecom will ask users to confirm the redirection via a yes/no dialog
* if the confirmFirst is true, and if the redirection request of this
* response was sent with a true flag of allowInteractiveResponse via
* {@link #onPlaceCall(Uri, PhoneAccountHandle, boolean)}
*/
- public final void redirectCall(@NonNull Uri handle,
+ public final void redirectCall(@NonNull Uri gatewayUri,
@NonNull PhoneAccountHandle targetPhoneAccount,
boolean confirmFirst) {
try {
- mCallRedirectionAdapter.redirectCall(handle, targetPhoneAccount, confirmFirst);
+ mCallRedirectionAdapter.redirectCall(gatewayUri, targetPhoneAccount, confirmFirst);
} catch (RemoteException e) {
e.rethrowAsRuntimeException();
}
diff --git a/telephony/java/android/provider/Telephony.java b/telephony/java/android/provider/Telephony.java
index 52e0ebd334b5..2d8a8cbae59f 100644
--- a/telephony/java/android/provider/Telephony.java
+++ b/telephony/java/android/provider/Telephony.java
@@ -4321,6 +4321,22 @@ public final class Telephony {
* @hide
*/
public static final String IS_USING_CARRIER_AGGREGATION = "is_using_carrier_aggregation";
+
+ /**
+ * The current registered raw data network operator name in long alphanumeric format.
+ * <p>
+ * This is the same as {@link ServiceState#getOperatorAlphaLongRaw()}.
+ * @hide
+ */
+ public static final String OPERATOR_ALPHA_LONG_RAW = "operator_alpha_long_raw";
+
+ /**
+ * The current registered raw data network operator name in short alphanumeric format.
+ * <p>
+ * This is the same as {@link ServiceState#getOperatorAlphaShortRaw()}.
+ * @hide
+ */
+ public static final String OPERATOR_ALPHA_SHORT_RAW = "operator_alpha_short_raw";
}
/**
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 0f8f873b6847..9f6528bc4709 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -1312,6 +1312,24 @@ public class CarrierConfigManager {
"hide_lte_plus_data_icon_bool";
/**
+ * The string is used to filter redundant string from PLMN Network Name that's supplied by
+ * specific carrier.
+ *
+ * @hide
+ */
+ public static final String KEY_OPERATOR_NAME_FILTER_PATTERN_STRING =
+ "operator_name_filter_pattern_string";
+
+ /**
+ * The string is used to compare with operator name. If it matches the pattern then show
+ * specific data icon.
+ *
+ * @hide
+ */
+ public static final String KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING =
+ "show_carrier_data_icon_pattern_string";
+
+ /**
* Boolean to decide whether to show precise call failed cause to user
* @hide
*/
@@ -2803,6 +2821,19 @@ public class CarrierConfigManager {
public static final String KEY_IS_OPPORTUNISTIC_SUBSCRIPTION_BOOL =
"key_is_opportunistic_subscription_bool";
+ /**
+ * A list of 4 GSM RSSI thresholds above which a signal level is considered POOR,
+ * MODERATE, GOOD, or EXCELLENT, to be used in SignalStrength reporting.
+ *
+ * Note that the min and max thresholds are fixed at -113 and -51, as set in 3GPP TS 27.007
+ * section 8.5.
+ * <p>
+ * See CellSignalStrengthGsm#GSM_RSSI_MAX and CellSignalStrengthGsm#GSM_RSSI_MIN. Any signal
+ * level outside these boundaries is considered invalid.
+ * @hide
+ */
+ public static final String KEY_GSM_RSSI_THRESHOLDS_INT_ARRAY =
+ "gsm_rssi_thresholds_int_array";
/** The default value for every variable. */
private final static PersistableBundle sDefaults;
@@ -3139,6 +3170,8 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_SPN_DISPLAY_RULE_USE_ROAMING_FROM_SERVICE_STATE_BOOL, false);
sDefaults.putBoolean(KEY_ALWAYS_SHOW_DATA_RAT_ICON_BOOL, false);
sDefaults.putBoolean(KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL, false);
+ sDefaults.putString(KEY_OPERATOR_NAME_FILTER_PATTERN_STRING, "");
+ sDefaults.putString(KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING, "");
sDefaults.putBoolean(KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL, true);
sDefaults.putBoolean(KEY_LTE_ENABLED_BOOL, true);
sDefaults.putBoolean(KEY_SUPPORT_TDSCDMA_BOOL, false);
@@ -3204,6 +3237,13 @@ public class CarrierConfigManager {
false);
sDefaults.putString(KEY_SUBSCRIPTION_GROUP_UUID_STRING, "");
sDefaults.putBoolean(KEY_IS_OPPORTUNISTIC_SUBSCRIPTION_BOOL, false);
+ sDefaults.putIntArray(KEY_GSM_RSSI_THRESHOLDS_INT_ARRAY,
+ new int[] {
+ -107, /* SIGNAL_STRENGTH_POOR */
+ -103, /* SIGNAL_STRENGTH_MODERATE */
+ -97, /* SIGNAL_STRENGTH_GOOD */
+ -89, /* SIGNAL_STRENGTH_GREAT */
+ });
}
/**
diff --git a/telephony/java/android/telephony/CellIdentity.java b/telephony/java/android/telephony/CellIdentity.java
index 374527749354..30875165867a 100644
--- a/telephony/java/android/telephony/CellIdentity.java
+++ b/telephony/java/android/telephony/CellIdentity.java
@@ -49,10 +49,10 @@ public abstract class CellIdentity implements Parcelable {
// long alpha Operator Name String or Enhanced Operator Name String
/** @hide */
- protected final String mAlphaLong;
+ protected String mAlphaLong;
// short alpha Operator Name String or Enhanced Operator Name String
/** @hide */
- protected final String mAlphaShort;
+ protected String mAlphaShort;
/** @hide */
protected CellIdentity(String tag, int type, String mcc, String mnc, String alphal,
@@ -145,6 +145,13 @@ public abstract class CellIdentity implements Parcelable {
}
/**
+ * @hide
+ */
+ public void setOperatorAlphaLong(String alphaLong) {
+ mAlphaLong = alphaLong;
+ }
+
+ /**
* @return The short alpha tag associated with the current scan result (may be the operator
* name string or extended operator name string). May be null if unknown.
*/
@@ -154,6 +161,13 @@ public abstract class CellIdentity implements Parcelable {
}
/**
+ * @hide
+ */
+ public void setOperatorAlphaShort(String alphaShort) {
+ mAlphaShort = alphaShort;
+ }
+
+ /**
* @return a CellLocation object for this CellIdentity
* @hide
*/
diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java
index 5e44bf2e37a8..864540d91be3 100644
--- a/telephony/java/android/telephony/CellIdentityGsm.java
+++ b/telephony/java/android/telephony/CellIdentityGsm.java
@@ -166,6 +166,7 @@ public final class CellIdentityGsm extends CellIdentity {
/**
* @return Mobile Country Code in string format, null if unavailable.
*/
+ @Nullable
public String getMccString() {
return mMccStr;
}
@@ -173,6 +174,7 @@ public final class CellIdentityGsm extends CellIdentity {
/**
* @return Mobile Network Code in string format, null if unavailable.
*/
+ @Nullable
public String getMncString() {
return mMncStr;
}
diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java
index 2dd72d6ea69c..14503c7cdd4d 100644
--- a/telephony/java/android/telephony/CellIdentityLte.java
+++ b/telephony/java/android/telephony/CellIdentityLte.java
@@ -187,6 +187,7 @@ public final class CellIdentityLte extends CellIdentity {
/**
* @return Mobile Country Code in string format, null if unavailable.
*/
+ @Nullable
public String getMccString() {
return mMccStr;
}
@@ -194,6 +195,7 @@ public final class CellIdentityLte extends CellIdentity {
/**
* @return Mobile Network Code in string format, null if unavailable.
*/
+ @Nullable
public String getMncString() {
return mMncStr;
}
diff --git a/telephony/java/android/telephony/CellIdentityTdscdma.java b/telephony/java/android/telephony/CellIdentityTdscdma.java
index a591bd15f95f..937de706aec0 100644
--- a/telephony/java/android/telephony/CellIdentityTdscdma.java
+++ b/telephony/java/android/telephony/CellIdentityTdscdma.java
@@ -104,6 +104,7 @@ public final class CellIdentityTdscdma extends CellIdentity {
* Get Mobile Country Code in string format
* @return Mobile Country Code in string format, null if unknown
*/
+ @Nullable
public String getMccString() {
return mMccStr;
}
@@ -112,6 +113,7 @@ public final class CellIdentityTdscdma extends CellIdentity {
* Get Mobile Network Code in string format
* @return Mobile Network Code in string format, null if unknown
*/
+ @Nullable
public String getMncString() {
return mMncStr;
}
diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java
index 674c40c2d36f..b4a2ead7fc3d 100644
--- a/telephony/java/android/telephony/CellIdentityWcdma.java
+++ b/telephony/java/android/telephony/CellIdentityWcdma.java
@@ -150,6 +150,7 @@ public final class CellIdentityWcdma extends CellIdentity {
/**
* @return Mobile Country Code in string version, null if unavailable.
*/
+ @Nullable
public String getMccString() {
return mMccStr;
}
@@ -157,6 +158,7 @@ public final class CellIdentityWcdma extends CellIdentity {
/**
* @return Mobile Network Code in string version, null if unavailable.
*/
+ @Nullable
public String getMncString() {
return mMncStr;
}
diff --git a/telephony/java/android/telephony/CellInfoCdma.java b/telephony/java/android/telephony/CellInfoCdma.java
index a4570e41dc26..30b131faf51d 100644
--- a/telephony/java/android/telephony/CellInfoCdma.java
+++ b/telephony/java/android/telephony/CellInfoCdma.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
@@ -76,18 +77,25 @@ public final class CellInfoCdma extends CellInfo implements Parcelable {
new CellSignalStrengthCdma(cic.signalStrengthCdma, cic.signalStrengthEvdo);
}
+ /**
+ * @return a {@link CellIdentityCdma} instance.
+ */
@Override
- public CellIdentityCdma getCellIdentity() {
+ public @NonNull CellIdentityCdma getCellIdentity() {
return mCellIdentityCdma;
}
+
/** @hide */
@UnsupportedAppUsage
public void setCellIdentity(CellIdentityCdma cid) {
mCellIdentityCdma = cid;
}
+ /**
+ * @return a {@link CellSignalStrengthCdma} instance.
+ */
@Override
- public CellSignalStrengthCdma getCellSignalStrength() {
+ public @NonNull CellSignalStrengthCdma getCellSignalStrength() {
return mCellSignalStrengthCdma;
}
diff --git a/telephony/java/android/telephony/CellInfoGsm.java b/telephony/java/android/telephony/CellInfoGsm.java
index ce32bc1b9cb7..137f97eeee62 100644
--- a/telephony/java/android/telephony/CellInfoGsm.java
+++ b/telephony/java/android/telephony/CellInfoGsm.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -71,17 +72,24 @@ public final class CellInfoGsm extends CellInfo implements Parcelable {
mCellSignalStrengthGsm = new CellSignalStrengthGsm(cig.signalStrengthGsm);
}
+ /**
+ * @return a {@link CellIdentityGsm} instance.
+ */
@Override
- public CellIdentityGsm getCellIdentity() {
+ public @NonNull CellIdentityGsm getCellIdentity() {
return mCellIdentityGsm;
}
+
/** @hide */
public void setCellIdentity(CellIdentityGsm cid) {
mCellIdentityGsm = cid;
}
+ /**
+ * @return a {@link CellSignalStrengthGsm} instance.
+ */
@Override
- public CellSignalStrengthGsm getCellSignalStrength() {
+ public @NonNull CellSignalStrengthGsm getCellSignalStrength() {
return mCellSignalStrengthGsm;
}
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index 01ee20a7fa1e..da7b7ab1488d 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
@@ -79,11 +80,15 @@ public final class CellInfoLte extends CellInfo implements Parcelable {
mCellConfig = new CellConfigLte(cil.cellConfig);
}
+ /**
+ * @return a {@link CellIdentityLte} instance.
+ */
@Override
- public CellIdentityLte getCellIdentity() {
+ public @NonNull CellIdentityLte getCellIdentity() {
if (DBG) log("getCellIdentity: " + mCellIdentityLte);
return mCellIdentityLte;
}
+
/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setCellIdentity(CellIdentityLte cid) {
@@ -91,8 +96,11 @@ public final class CellInfoLte extends CellInfo implements Parcelable {
mCellIdentityLte = cid;
}
+ /**
+ * @return a {@link CellSignalStrengthLte} instance.
+ */
@Override
- public CellSignalStrengthLte getCellSignalStrength() {
+ public @NonNull CellSignalStrengthLte getCellSignalStrength() {
if (DBG) log("getCellSignalStrength: " + mCellSignalStrengthLte);
return mCellSignalStrengthLte;
}
diff --git a/telephony/java/android/telephony/CellInfoNr.java b/telephony/java/android/telephony/CellInfoNr.java
index ba4a907fdce8..9775abd5075c 100644
--- a/telephony/java/android/telephony/CellInfoNr.java
+++ b/telephony/java/android/telephony/CellInfoNr.java
@@ -43,12 +43,18 @@ public final class CellInfoNr extends CellInfo {
mCellSignalStrength = other.mCellSignalStrength;
}
+ /**
+ * @return a {@link CellIdentityNr} instance.
+ */
@Override
@NonNull
public CellIdentity getCellIdentity() {
return mCellIdentity;
}
+ /**
+ * @return a {@link CellSignalStrengthNr} instance.
+ */
@Override
@NonNull
public CellSignalStrength getCellSignalStrength() {
diff --git a/telephony/java/android/telephony/CellInfoTdscdma.java b/telephony/java/android/telephony/CellInfoTdscdma.java
index ccafda61a177..f1305f5ca768 100644
--- a/telephony/java/android/telephony/CellInfoTdscdma.java
+++ b/telephony/java/android/telephony/CellInfoTdscdma.java
@@ -75,6 +75,9 @@ public final class CellInfoTdscdma extends CellInfo implements Parcelable {
mCellSignalStrengthTdscdma = new CellSignalStrengthTdscdma(cit.signalStrengthTdscdma);
}
+ /**
+ * @return a {@link CellIdentityTdscdma} instance.
+ */
@Override
public @NonNull CellIdentityTdscdma getCellIdentity() {
return mCellIdentityTdscdma;
@@ -85,6 +88,9 @@ public final class CellInfoTdscdma extends CellInfo implements Parcelable {
mCellIdentityTdscdma = cid;
}
+ /**
+ * @return a {@link CellSignalStrengthTdscdma} instance.
+ */
@Override
public @NonNull CellSignalStrengthTdscdma getCellSignalStrength() {
return mCellSignalStrengthTdscdma;
diff --git a/telephony/java/android/telephony/CellInfoWcdma.java b/telephony/java/android/telephony/CellInfoWcdma.java
index 1b32178db337..ee5fec838d2d 100644
--- a/telephony/java/android/telephony/CellInfoWcdma.java
+++ b/telephony/java/android/telephony/CellInfoWcdma.java
@@ -71,15 +71,22 @@ public final class CellInfoWcdma extends CellInfo implements Parcelable {
mCellSignalStrengthWcdma = new CellSignalStrengthWcdma(ciw.signalStrengthWcdma);
}
+ /**
+ * @return a {@link CellIdentityWcdma} instance.
+ */
@Override
public CellIdentityWcdma getCellIdentity() {
return mCellIdentityWcdma;
}
+
/** @hide */
public void setCellIdentity(CellIdentityWcdma cid) {
mCellIdentityWcdma = cid;
}
+ /**
+ * @return a {@link CellSignalStrengthWcdma} instance.
+ */
@Override
public CellSignalStrengthWcdma getCellSignalStrength() {
return mCellSignalStrengthWcdma;
diff --git a/telephony/java/android/telephony/CellSignalStrength.java b/telephony/java/android/telephony/CellSignalStrength.java
index 740b970b8e7c..e65b048ec0a5 100644
--- a/telephony/java/android/telephony/CellSignalStrength.java
+++ b/telephony/java/android/telephony/CellSignalStrength.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.os.PersistableBundle;
/**
@@ -57,23 +58,24 @@ public abstract class CellSignalStrength {
public abstract void setDefaultValues();
/**
- * Get signal level as an int from 0..4
- * <p>
- * @see #SIGNAL_STRENGTH_NONE_OR_UNKNOWN
- * @see #SIGNAL_STRENGTH_POOR
- * @see #SIGNAL_STRENGTH_MODERATE
- * @see #SIGNAL_STRENGTH_GOOD
- * @see #SIGNAL_STRENGTH_GREAT
+ * Retrieve an abstract level value for the overall signal quality.
+ *
+ * @return a single integer from 0 to 4 representing the general signal quality.
+ * 0 represents very poor or unknown signal quality while 4 represents excellent
+ * signal quality.
*/
+ @IntRange(from = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to = SIGNAL_STRENGTH_GREAT)
public abstract int getLevel();
/**
- * Get the signal level as an asu value between 0..31, 99 is unknown
+ * Get the technology-specific signal strength in Arbitrary Strength Units, calculated from the
+ * strength of the pilot signal or equivalent.
*/
public abstract int getAsuLevel();
/**
- * Get the signal strength as dBm
+ * Get the technology-specific signal strength in dBm, which is the signal strength of the
+ * pilot signal or equivalent.
*/
public abstract int getDbm();
diff --git a/telephony/java/android/telephony/CellSignalStrengthCdma.java b/telephony/java/android/telephony/CellSignalStrengthCdma.java
index 5b195999078c..199843905854 100644
--- a/telephony/java/android/telephony/CellSignalStrengthCdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthCdma.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.PersistableBundle;
@@ -114,13 +115,9 @@ public final class CellSignalStrengthCdma extends CellSignalStrength implements
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
- /**
- * Retrieve an abstract level value for the overall signal strength.
- *
- * @return a single integer from 0 to 4 representing the general signal quality.
- * 0 represents very poor signal strength while 4 represents a very strong signal strength.
- */
+ /** {@inheritDoc} */
@Override
+ @IntRange(from = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to = SIGNAL_STRENGTH_GREAT)
public int getLevel() {
return mLevel;
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java
index 0aeb0f6e66d8..14ae68981745 100644
--- a/telephony/java/android/telephony/CellSignalStrengthGsm.java
+++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -37,6 +38,10 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P
private static final int GSM_RSSI_GOOD = -97;
private static final int GSM_RSSI_MODERATE = -103;
private static final int GSM_RSSI_POOR = -107;
+ private static final int GSM_RSSI_MIN = -113;
+
+ private static final int[] sRssiThresholds = new int[] {
+ GSM_RSSI_POOR, GSM_RSSI_MODERATE, GSM_RSSI_GOOD, GSM_RSSI_GREAT};
private int mRssi; // in dBm [-113, -51] or UNAVAILABLE
@UnsupportedAppUsage
@@ -53,7 +58,7 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P
/** @hide */
public CellSignalStrengthGsm(int rssi, int ber, int ta) {
- mRssi = inRangeOrUnavailable(rssi, -113, -51);
+ mRssi = inRangeOrUnavailable(rssi, GSM_RSSI_MIN, GSM_RSSI_MAX);
mBitErrorRate = inRangeOrUnavailable(ber, 0, 7, 99);
mTimingAdvance = inRangeOrUnavailable(ta, 0, 219);
updateLevel(null, null);
@@ -97,13 +102,9 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
- /**
- * Retrieve an abstract level value for the overall signal strength.
- *
- * @return a single integer from 0 to 4 representing the general signal quality.
- * 0 represents very poor signal strength while 4 represents a very strong signal strength.
- */
+ /** {@inheritDoc} */
@Override
+ @IntRange(from = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to = SIGNAL_STRENGTH_GREAT)
public int getLevel() {
return mLevel;
}
@@ -111,12 +112,22 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P
/** @hide */
@Override
public void updateLevel(PersistableBundle cc, ServiceState ss) {
- if (mRssi > GSM_RSSI_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
- else if (mRssi >= GSM_RSSI_GREAT) mLevel = SIGNAL_STRENGTH_GREAT;
- else if (mRssi >= GSM_RSSI_GOOD) mLevel = SIGNAL_STRENGTH_GOOD;
- else if (mRssi >= GSM_RSSI_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE;
- else if (mRssi >= GSM_RSSI_POOR) mLevel = SIGNAL_STRENGTH_POOR;
- else mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ int[] rssiThresholds;
+ if (cc == null) {
+ rssiThresholds = sRssiThresholds;
+ } else {
+ rssiThresholds = cc.getIntArray(CarrierConfigManager.KEY_GSM_RSSI_THRESHOLDS_INT_ARRAY);
+ if (rssiThresholds == null || rssiThresholds.length != NUM_SIGNAL_STRENGTH_THRESHOLDS) {
+ rssiThresholds = sRssiThresholds;
+ }
+ }
+ int level = NUM_SIGNAL_STRENGTH_THRESHOLDS;
+ if (mRssi < GSM_RSSI_MIN || mRssi > GSM_RSSI_MAX) {
+ mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ return;
+ }
+ while (level > 0 && mRssi < rssiThresholds[level - 1]) level--;
+ mLevel = level;
}
/**
@@ -141,7 +152,7 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P
/**
* Get the RSSI in ASU.
*
- * Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
+ * Asu is calculated based on 3GPP RSSI. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
*
* @return RSSI in ASU 0..31, 99, or UNAVAILABLE
*/
diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java
index 5687adaabed5..2272dc9071ea 100644
--- a/telephony/java/android/telephony/CellSignalStrengthLte.java
+++ b/telephony/java/android/telephony/CellSignalStrengthLte.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
@@ -145,13 +146,9 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
- /**
- * Retrieve an abstract level value for the overall signal strength.
- *
- * @return a single integer from 0 to 4 representing the general signal quality.
- * 0 represents very poor signal strength while 4 represents a very strong signal strength.
- */
+ /** {@inheritDoc} */
@Override
+ @IntRange(from = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to = SIGNAL_STRENGTH_GREAT)
public int getLevel() {
return mLevel;
}
diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java
index fff3adf04f7b..1912c60ac122 100644
--- a/telephony/java/android/telephony/CellSignalStrengthNr.java
+++ b/telephony/java/android/telephony/CellSignalStrengthNr.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.PersistableBundle;
@@ -183,7 +184,9 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
+ /** {@inheritDoc} */
@Override
+ @IntRange(from = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to = SIGNAL_STRENGTH_GREAT)
public int getLevel() {
return mLevel;
}
@@ -227,6 +230,9 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa
return asuLevel;
}
+ /**
+ * Get the CSI-RSRP as dBm value -140..-44dBm or {@link CellInfo#UNAVAILABLE UNAVAILABLE}.
+ */
@Override
public int getDbm() {
return mCsiRsrp;
diff --git a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
index ddbd851bbce5..f4a3dbb37988 100644
--- a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.annotation.NonNull;
import android.os.Parcel;
import android.os.Parcelable;
@@ -34,14 +35,14 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
private static final String LOG_TAG = "CellSignalStrengthTdscdma";
private static final boolean DBG = false;
- private static final int TDSCDMA_RSSI_MAX = -51;
- private static final int TDSCDMA_RSSI_GREAT = -77;
- private static final int TDSCDMA_RSSI_GOOD = -87;
- private static final int TDSCDMA_RSSI_MODERATE = -97;
- private static final int TDSCDMA_RSSI_POOR = -107;
-
- private static final int TDSCDMA_RSCP_MIN = -120;
+ // These levels are arbitrary but carried over from SignalStrength.java for consistency.
private static final int TDSCDMA_RSCP_MAX = -24;
+ private static final int TDSCDMA_RSCP_GREAT = -49;
+ private static final int TDSCDMA_RSCP_GOOD = -73;
+ private static final int TDSCDMA_RSCP_MODERATE = -97;
+ private static final int TDSCDMA_RSCP_POOR = -110;
+ private static final int TDSCDMA_RSCP_MIN = -120;
+
private int mRssi; // in dBm [-113, -51], CellInfo.UNAVAILABLE
@@ -121,13 +122,10 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
- /**
- * Retrieve an abstract level value for the overall signal strength.
- *
- * @return a single integer from 0 to 4 representing the general signal quality.
- * 0 represents very poor signal strength while 4 represents a very strong signal strength.
- */
+
+ /** {@inheritDoc} */
@Override
+ @IntRange(from = 0, to = 4)
public int getLevel() {
return mLevel;
}
@@ -135,16 +133,16 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
/** @hide */
@Override
public void updateLevel(PersistableBundle cc, ServiceState ss) {
- if (mRssi > TDSCDMA_RSSI_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
- else if (mRssi >= TDSCDMA_RSSI_GREAT) mLevel = SIGNAL_STRENGTH_GREAT;
- else if (mRssi >= TDSCDMA_RSSI_GOOD) mLevel = SIGNAL_STRENGTH_GOOD;
- else if (mRssi >= TDSCDMA_RSSI_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE;
- else if (mRssi >= TDSCDMA_RSSI_POOR) mLevel = SIGNAL_STRENGTH_POOR;
+ if (mRscp > TDSCDMA_RSCP_MAX) mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ else if (mRscp >= TDSCDMA_RSCP_GREAT) mLevel = SIGNAL_STRENGTH_GREAT;
+ else if (mRscp >= TDSCDMA_RSCP_GOOD) mLevel = SIGNAL_STRENGTH_GOOD;
+ else if (mRscp >= TDSCDMA_RSCP_MODERATE) mLevel = SIGNAL_STRENGTH_MODERATE;
+ else if (mRscp >= TDSCDMA_RSCP_POOR) mLevel = SIGNAL_STRENGTH_POOR;
else mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
/**
- * Get the signal strength as dBm
+ * Get the RSCP as dBm value -120..-24dBm or {@link CellInfo#UNAVAILABLE UNAVAILABLE}.
*/
@Override
public int getDbm() {
@@ -159,6 +157,23 @@ public final class CellSignalStrengthTdscdma extends CellSignalStrength implemen
}
/**
+ * Get the RSSI as dBm value -113..-51dBm or {@link CellInfo#UNAVAILABLE UNAVAILABLE}.
+ *
+ * @hide
+ */
+ public int getRssi() {
+ return mRssi;
+ }
+
+ /**
+ * Get the BER as an ASU value 0..7, 99, or {@link CellInfo#UNAVAILABLE UNAVAILABLE}.
+ * @hide
+ */
+ public int getBitErrorRate() {
+ return mBitErrorRate;
+ }
+
+ /**
* Get the RSCP in ASU.
*
* Asu is calculated based on 3GPP RSRP. Refer to 3GPP 27.007 (Ver 10.3.0) Sec 8.69
diff --git a/telephony/java/android/telephony/CellSignalStrengthWcdma.java b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
index d9fd7f39aed3..169325276821 100644
--- a/telephony/java/android/telephony/CellSignalStrengthWcdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
@@ -16,6 +16,7 @@
package android.telephony;
+import android.annotation.IntRange;
import android.annotation.StringDef;
import android.os.Parcel;
import android.os.Parcelable;
@@ -66,7 +67,7 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
public static final String LEVEL_CALCULATION_METHOD_RSCP = "rscp";
// Default to RSSI for backwards compatibility with older devices
- private static final String sLevelCalculationMethod = LEVEL_CALCULATION_METHOD_RSSI;
+ private static final String DEFAULT_LEVEL_CALCULATION_METHOD = LEVEL_CALCULATION_METHOD_RSSI;
private int mRssi; // in dBm [-113, 51] or CellInfo.UNAVAILABLE if unknown
private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 or
@@ -143,13 +144,9 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
mLevel = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
}
- /**
- * Retrieve an abstract level value for the overall signal strength.
- *
- * @return a single integer from 0 to 4 representing the general signal quality.
- * 0 represents very poor signal strength while 4 represents a very strong signal strength.
- */
+ /** {@inheritDoc} */
@Override
+ @IntRange(from = SIGNAL_STRENGTH_NONE_OR_UNKNOWN, to = SIGNAL_STRENGTH_GREAT)
public int getLevel() {
return mLevel;
}
@@ -161,14 +158,14 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
int[] rscpThresholds;
if (cc == null) {
- calcMethod = sLevelCalculationMethod;
+ calcMethod = DEFAULT_LEVEL_CALCULATION_METHOD;
rscpThresholds = sRscpThresholds;
} else {
// TODO: abstract this entire thing into a series of functions
calcMethod = cc.getString(
CarrierConfigManager.KEY_WCDMA_DEFAULT_SIGNAL_STRENGTH_MEASUREMENT_STRING,
- sLevelCalculationMethod);
- if (TextUtils.isEmpty(calcMethod)) calcMethod = sLevelCalculationMethod;
+ DEFAULT_LEVEL_CALCULATION_METHOD);
+ if (TextUtils.isEmpty(calcMethod)) calcMethod = DEFAULT_LEVEL_CALCULATION_METHOD;
rscpThresholds = cc.getIntArray(
CarrierConfigManager.KEY_WCDMA_RSCP_THRESHOLDS_INT_ARRAY);
if (rscpThresholds == null || rscpThresholds.length != NUM_SIGNAL_STRENGTH_THRESHOLDS) {
@@ -202,7 +199,7 @@ public final class CellSignalStrengthWcdma extends CellSignalStrength implements
}
/**
- * Get the signal strength as dBm
+ * Get the RSCP as dBm value -120..-24dBm or {@link CellInfo#UNAVAILABLE UNAVAILABLE}.
*/
@Override
public int getDbm() {
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 8c92e84b45b6..1a160f4f57a6 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -339,6 +339,9 @@ public class ServiceState implements Parcelable {
private List<NetworkRegistrationInfo> mNetworkRegistrationInfos = new ArrayList<>();
+ private String mOperatorAlphaLongRaw;
+ private String mOperatorAlphaShortRaw;
+
/**
* get String description of roaming type
* @hide
@@ -420,6 +423,8 @@ public class ServiceState implements Parcelable {
mNetworkRegistrationInfos = s.mNetworkRegistrationInfos == null ? null :
new ArrayList<>(s.mNetworkRegistrationInfos);
mNrFrequencyRange = s.mNrFrequencyRange;
+ mOperatorAlphaLongRaw = s.mOperatorAlphaLongRaw;
+ mOperatorAlphaShortRaw = s.mOperatorAlphaShortRaw;
}
/**
@@ -453,6 +458,8 @@ public class ServiceState implements Parcelable {
mChannelNumber = in.readInt();
mCellBandwidths = in.createIntArray();
mNrFrequencyRange = in.readInt();
+ mOperatorAlphaLongRaw = in.readString();
+ mOperatorAlphaShortRaw = in.readString();
}
public void writeToParcel(Parcel out, int flags) {
@@ -478,6 +485,8 @@ public class ServiceState implements Parcelable {
out.writeInt(mChannelNumber);
out.writeIntArray(mCellBandwidths);
out.writeInt(mNrFrequencyRange);
+ out.writeString(mOperatorAlphaLongRaw);
+ out.writeString(mOperatorAlphaShortRaw);
}
public int describeContents() {
@@ -836,7 +845,9 @@ public class ServiceState implements Parcelable {
mIsEmergencyOnly,
mLteEarfcnRsrpBoost,
mNetworkRegistrationInfos,
- mNrFrequencyRange);
+ mNrFrequencyRange,
+ mOperatorAlphaLongRaw,
+ mOperatorAlphaShortRaw);
}
@Override
@@ -862,6 +873,8 @@ public class ServiceState implements Parcelable {
&& equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
s.mCdmaDefaultRoamingIndicator)
&& mIsEmergencyOnly == s.mIsEmergencyOnly
+ && equalsHandlesNulls(mOperatorAlphaLongRaw, s.mOperatorAlphaLongRaw)
+ && equalsHandlesNulls(mOperatorAlphaShortRaw, s.mOperatorAlphaShortRaw)
&& (mNetworkRegistrationInfos == null
? s.mNetworkRegistrationInfos == null : s.mNetworkRegistrationInfos != null
&& mNetworkRegistrationInfos.containsAll(s.mNetworkRegistrationInfos))
@@ -1019,6 +1032,8 @@ public class ServiceState implements Parcelable {
.append(", mLteEarfcnRsrpBoost=").append(mLteEarfcnRsrpBoost)
.append(", mNetworkRegistrationInfos=").append(mNetworkRegistrationInfos)
.append(", mNrFrequencyRange=").append(mNrFrequencyRange)
+ .append(", mOperatorAlphaLongRaw=").append(mOperatorAlphaLongRaw)
+ .append(", mOperatorAlphaShortRaw=").append(mOperatorAlphaShortRaw)
.append("}").toString();
}
@@ -1056,6 +1071,8 @@ public class ServiceState implements Parcelable {
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
.build());
+ mOperatorAlphaLongRaw = null;
+ mOperatorAlphaShortRaw = null;
}
public void setStateOutOfService() {
@@ -1297,6 +1314,8 @@ public class ServiceState implements Parcelable {
m.putInt("ChannelNumber", mChannelNumber);
m.putIntArray("CellBandwidths", mCellBandwidths);
m.putInt("mNrFrequencyRange", mNrFrequencyRange);
+ m.putString("operator-alpha-long-raw", mOperatorAlphaLongRaw);
+ m.putString("operator-alpha-short-raw", mOperatorAlphaShortRaw);
}
/** @hide */
@@ -1906,4 +1925,36 @@ public class ServiceState implements Parcelable {
return state;
}
+
+ /**
+ * @hide
+ */
+ public void setOperatorAlphaLongRaw(String operatorAlphaLong) {
+ mOperatorAlphaLongRaw = operatorAlphaLong;
+ }
+
+ /**
+ * The current registered raw data network operator name in long alphanumeric format.
+ *
+ * @hide
+ */
+ public String getOperatorAlphaLongRaw() {
+ return mOperatorAlphaLongRaw;
+ }
+
+ /**
+ * @hide
+ */
+ public void setOperatorAlphaShortRaw(String operatorAlphaShort) {
+ mOperatorAlphaShortRaw = operatorAlphaShort;
+ }
+
+ /**
+ * The current registered raw data network operator name in short alphanumeric format.
+ *
+ * @hide
+ */
+ public String getOperatorAlphaShortRaw() {
+ return mOperatorAlphaShortRaw;
+ }
}
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index a933da753c41..57c84a638f12 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -2749,6 +2749,8 @@ public class SubscriptionManager {
*
* @throws SecurityException if the caller doesn't meet the requirements
* outlined above.
+ * @throws IllegalArgumentException if any of the subscriptions in the list doesn't exist.
+ * @throws IllegalStateException if Telephony service is in bad state.
*
* @param subIdList list of subId that will be in the same group
* @return groupUUID a UUID assigned to the subscription group.
@@ -2797,6 +2799,7 @@ public class SubscriptionManager {
* outlined above.
* @throws IllegalArgumentException if the some subscriptions in the list doesn't exist,
* or the groupUuid doesn't exist.
+ * @throws IllegalStateException if Telephony service is in bad state.
*
* @param subIdList list of subId that need adding into the group
* @param groupUuid the groupUuid the subscriptions are being added to.
@@ -2849,6 +2852,7 @@ public class SubscriptionManager {
* outlined above.
* @throws IllegalArgumentException if the some subscriptions in the list doesn't belong
* the specified group.
+ * @throws IllegalStateException if Telephony service is in bad state.
*
* @param subIdList list of subId that need removing from their groups.
*
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 072eb88797f8..0d3bc1db831f 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -3790,6 +3790,7 @@ public class TelephonyManager {
* @hide
* nobody seems to call this.
*/
+ @TestApi
@RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
public String getLine1AlphaTag() {
return getLine1AlphaTag(getSubId());
@@ -8954,6 +8955,27 @@ public class TelephonyManager {
return retval;
}
+ /**
+ * Determines the {@link PhoneAccountHandle} associated with a subscription Id.
+ *
+ * @param subscriptionId The subscription Id to check.
+ * @return The {@link PhoneAccountHandle} associated with a subscription Id, or {@code null} if
+ * there is no associated {@link PhoneAccountHandle}.
+ * @hide
+ */
+ public @Nullable PhoneAccountHandle getPhoneAccountHandleForSubscriptionId(int subscriptionId) {
+ PhoneAccountHandle returnValue = null;
+ try {
+ ITelephony service = getITelephony();
+ if (service != null) {
+ returnValue = service.getPhoneAccountHandleForSubscriptionId(subscriptionId);
+ }
+ } catch (RemoteException e) {
+ }
+
+ return returnValue;
+ }
+
private int getSubIdForPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
int retval = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
try {
diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java
index 7eea21860bce..a86fda4454d7 100644
--- a/telephony/java/android/telephony/data/ApnSetting.java
+++ b/telephony/java/android/telephony/data/ApnSetting.java
@@ -78,10 +78,11 @@ public class ApnSetting implements Parcelable {
*/
public static final int TYPE_NONE = ApnTypes.NONE;
/**
- * APN type for all APNs.
+ * APN type for all APNs (except wild-cardable types).
* @hide
*/
- public static final int TYPE_ALL = ApnTypes.ALL | ApnTypes.MCX;
+ public static final int TYPE_ALL = ApnTypes.DEFAULT | ApnTypes.HIPRI | ApnTypes.MMS
+ | ApnTypes.SUPL | ApnTypes.DUN | ApnTypes.FOTA | ApnTypes.IMS | ApnTypes.CBS;
/** APN type for default data traffic. */
public static final int TYPE_DEFAULT = ApnTypes.DEFAULT | ApnTypes.HIPRI;
/** APN type for MMS traffic. */
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index c8cd2495bdd9..ecbbd6a6c786 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1265,6 +1265,11 @@ interface ITelephony {
*/
int getSubIdForPhoneAccount(in PhoneAccount phoneAccount);
+ /**
+ * Returns the PhoneAccountHandle associated with a subscription ID.
+ */
+ PhoneAccountHandle getPhoneAccountHandleForSubscriptionId(int subscriptionId);
+
void factoryReset(int subId);
/**
diff --git a/tests/ProtoInputStreamTests/Android.mk b/tests/ProtoInputStreamTests/Android.mk
new file mode 100644
index 000000000000..eb747cc2cdcc
--- /dev/null
+++ b/tests/ProtoInputStreamTests/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2019 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.
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_PACKAGE_NAME := ProtoInputStreamTests
+LOCAL_PROTOC_OPTIMIZE_TYPE := nano
+LOCAL_MODULE_TAGS := tests optional
+LOCAL_SRC_FILES := \
+ $(call all-java-files-under, src) \
+ $(call all-proto-files-under, src)
+LOCAL_PRIVATE_PLATFORM_APIS := true
+LOCAL_CERTIFICATE := platform
+LOCAL_COMPATIBILITY_SUITE := device-tests
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ androidx.test.rules \
+ frameworks-base-testutils \
+ mockito-target-minus-junit4
+
+include $(BUILD_PACKAGE) \ No newline at end of file
diff --git a/tests/ProtoInputStreamTests/AndroidManifest.xml b/tests/ProtoInputStreamTests/AndroidManifest.xml
new file mode 100644
index 000000000000..c11aa7393431
--- /dev/null
+++ b/tests/ProtoInputStreamTests/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.test.protoinputstream">
+ <application>
+ <uses-library android:name="android.test.runner"/>
+ </application>
+
+ <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.android.test.protoinputstream"
+ android:label="ProtoInputStream Tests">
+ </instrumentation>
+</manifest> \ No newline at end of file
diff --git a/tests/ProtoInputStreamTests/AndroidTest.xml b/tests/ProtoInputStreamTests/AndroidTest.xml
new file mode 100644
index 000000000000..51ab88e4d4d0
--- /dev/null
+++ b/tests/ProtoInputStreamTests/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Configuration for ProtoInputStream Tests">
+ <option name="test-suite-tag" value="ProtoInputStreamTests" />
+ <option name="config-descriptor:metadata" key="component" value="metrics" />
+ <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+ <option name="cleanup-apks" value="true" />
+ <option name="test-file-name" value="ProtoInputStreamTests.apk" />
+ </target_preparer>
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+ <option name="package" value="com.android.test.protoinputstream" />
+ <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+ <option name="hidden-api-checks" value="false"/>
+ </test>
+</configuration>
diff --git a/tests/ProtoInputStreamTests/TEST_MAPPING b/tests/ProtoInputStreamTests/TEST_MAPPING
new file mode 100644
index 000000000000..cf9f0772ac2d
--- /dev/null
+++ b/tests/ProtoInputStreamTests/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "presubmit": [
+ {
+ "name": "ProtoInputStreamTests"
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBoolTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBoolTest.java
new file mode 100644
index 000000000000..c21c4033a0ff
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBoolTest.java
@@ -0,0 +1,500 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamBoolTest extends TestCase {
+
+ /**
+ * Test reading single bool field
+ */
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ /**
+ * Implementation of testRead with a given chunkSize.
+ */
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BOOL;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 3 -> 1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ boolean[] results = new boolean[2];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readBoolean(fieldId2);
+ break;
+ case (int) fieldId3:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(false, results[0]);
+ assertEquals(true, results[1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(false);
+ testReadCompat(true);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(boolean val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BOOL;
+ final long fieldId = fieldFlags | ((long) 130 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.boolField = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ boolean result = false; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readBoolean(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.boolField, result);
+ }
+
+
+ /**
+ * Test reading repeated bool field
+ */
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ /**
+ * Implementation of testRepeated with a given chunkSize.
+ */
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_BOOL;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+
+ // 4 -> 0
+ (byte) 0x20,
+ (byte) 0x00,
+ // 4 -> 1
+ (byte) 0x20,
+ (byte) 0x01,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+
+ // 3 -> 0
+ (byte) 0x18,
+ (byte) 0x00,
+ // 3 -> 1
+ (byte) 0x18,
+ (byte) 0x01,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ boolean[][] results = new boolean[3][2];
+ int[] indices = new int[3];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readBoolean(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readBoolean(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readBoolean(fieldId3);
+ break;
+ case (int) fieldId4:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(false, results[0][0]);
+ assertEquals(false, results[0][1]);
+ assertEquals(true, results[1][0]);
+ assertEquals(true, results[1][1]);
+ assertEquals(false, results[2][0]);
+ assertEquals(true, results[2][1]);
+ }
+
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new boolean[0]);
+ testRepeatedCompat(new boolean[]{false, true});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(boolean[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_BOOL;
+ final long fieldId = fieldFlags | ((long) 131 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.boolFieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ boolean[] result = new boolean[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readBoolean(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.boolFieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.boolFieldRepeated[i], result[i]);
+ }
+ }
+
+ /**
+ * Test reading packed bool field
+ */
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ /**
+ * Implementation of testPacked with a given chunkSize.
+ */
+ public void testPacked(int chunkSize) throws IOException {
+
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_BOOL;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 4 -> 0,1
+ (byte) 0x22,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x01,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 3 -> 0,1
+ (byte) 0x1a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x01,
+ };
+
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ boolean[][] results = new boolean[3][2];
+ int[] indices = new int[3];
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readBoolean(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readBoolean(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readBoolean(fieldId3);
+ break;
+ case (int) fieldId4:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(false, results[0][0]);
+ assertEquals(false, results[0][1]);
+ assertEquals(true, results[1][0]);
+ assertEquals(true, results[1][1]);
+ assertEquals(false, results[2][0]);
+ assertEquals(true, results[2][1]);
+ }
+
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new boolean[0]);
+ testPackedCompat(new boolean[]{false, true});
+ }
+
+ /**
+ * Implementation of testPackedCompat with a given value.
+ */
+ private void testPackedCompat(boolean[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_BOOL;
+ final long fieldId = fieldFlags | ((long) 132 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.boolFieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ boolean[] result = new boolean[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readBoolean(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.boolFieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.boolFieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BOOL;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BOOL;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readBoolean(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readBoolean(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readBoolean(fieldId3);
+ // don't fail, length delimited is ok (represents packed booleans)
+ break;
+ case (int) fieldId6:
+ pi.readBoolean(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBytesTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBytesTest.java
new file mode 100644
index 000000000000..09fe40edda6c
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamBytesTest.java
@@ -0,0 +1,423 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+
+public class ProtoInputStreamBytesTest extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BYTES;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> null - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x00,
+ // 2 -> { } - default value, written when repeated
+ (byte) 0x12,
+ (byte) 0x00,
+ // 5 -> { 0, 1, 2, 3, 4 }
+ (byte) 0x2a,
+ (byte) 0x05,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
+ // 3 -> { 0, 1, 2, 3, 4, 5 }
+ (byte) 0x1a,
+ (byte) 0x06,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
+ // 4 -> { (byte)0xff, (byte)0xfe, (byte)0xfd, (byte)0xfc }
+ (byte) 0x22,
+ (byte) 0x04,
+ (byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ byte[][] results = new byte[4][];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0] = pi.readBytes(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readBytes(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readBytes(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readBytes(fieldId4);
+ break;
+ case (int) fieldId5:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertTrue("Expected: [] Actual: " + Arrays.toString(results[0]),
+ Arrays.equals(new byte[]{}, results[0]));
+ assertTrue("Expected: [] Actual: " + Arrays.toString(results[1]),
+ Arrays.equals(new byte[]{}, results[1]));
+ assertTrue("Expected: [0, 1, 2, 3, 4, 5] Actual: " + Arrays.toString(results[2]),
+ Arrays.equals(new byte[]{0, 1, 2, 3, 4, 5}, results[2]));
+ assertTrue("Expected: [-1, -2, -3, -4] Actual: " + Arrays.toString(results[3]),
+ Arrays.equals(new byte[]{(byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc},
+ results[3]));
+ }
+
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(new byte[0]);
+ testReadCompat(new byte[]{1, 2, 3, 4});
+ testReadCompat(new byte[]{(byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc});
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(byte[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BYTES;
+ final long fieldId = fieldFlags | ((long) 150 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.bytesField = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ byte[] result = new byte[val.length];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readBytes(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.bytesField.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.bytesField[i], result[i]);
+ }
+ }
+
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_BYTES;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> null - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x00,
+ // 2 -> { } - default value, written when repeated
+ (byte) 0x12,
+ (byte) 0x00,
+ // 3 -> { 0, 1, 2, 3, 4, 5 }
+ (byte) 0x1a,
+ (byte) 0x06,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
+ // 4 -> { (byte)0xff, (byte)0xfe, (byte)0xfd, (byte)0xfc }
+ (byte) 0x22,
+ (byte) 0x04,
+ (byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc,
+
+ // 5 -> { 0, 1, 2, 3, 4}
+ (byte) 0x2a,
+ (byte) 0x05,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
+
+ // 1 -> null - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x00,
+ // 2 -> { } - default value, written when repeated
+ (byte) 0x12,
+ (byte) 0x00,
+ // 3 -> { 0, 1, 2, 3, 4, 5 }
+ (byte) 0x1a,
+ (byte) 0x06,
+ (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
+ // 4 -> { (byte)0xff, (byte)0xfe, (byte)0xfd, (byte)0xfc }
+ (byte) 0x22,
+ (byte) 0x04,
+ (byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ byte[][][] results = new byte[4][2][];
+ int[] indices = new int[4];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readBytes(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readBytes(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readBytes(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readBytes(fieldId4);
+ break;
+ case (int) fieldId5:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assert (Arrays.equals(new byte[]{}, results[0][0]));
+ assert (Arrays.equals(new byte[]{}, results[0][1]));
+ assert (Arrays.equals(new byte[]{}, results[1][0]));
+ assert (Arrays.equals(new byte[]{}, results[1][1]));
+ assert (Arrays.equals(new byte[]{1, 2, 3, 4}, results[2][0]));
+ assert (Arrays.equals(new byte[]{1, 2, 3, 4}, results[2][1]));
+ assert (Arrays.equals(new byte[]{(byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc},
+ results[3][0]));
+ assert (Arrays.equals(new byte[]{(byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc},
+ results[3][1]));
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new byte[0][]);
+ testRepeatedCompat(new byte[][]{
+ new byte[0],
+ new byte[]{1, 2, 3, 4},
+ new byte[]{(byte) 0xff, (byte) 0xfe, (byte) 0xfd, (byte) 0xfc}
+ });
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(byte[][] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_BYTES;
+ final long fieldId = fieldFlags | ((long) 151 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.bytesFieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ byte[][] result = new byte[val.length][]; // start off with default value
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readBytes(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.bytesFieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.bytesFieldRepeated[i].length, result[i].length);
+ for (int j = 0; j < result[i].length; j++) {
+ assertEquals(readback.bytesFieldRepeated[i][j], result[i][j]);
+ }
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BYTES;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> {1}
+ (byte) 0x0a,
+ (byte) 0x01,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_BYTES;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readBytes(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readBytes(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readBytes(fieldId3);
+ // don't fail, length delimited is ok
+ break;
+ case (int) fieldId6:
+ pi.readBytes(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamDoubleTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamDoubleTest.java
new file mode 100644
index 000000000000..118fe3431e01
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamDoubleTest.java
@@ -0,0 +1,728 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamDoubleTest extends TestCase {
+
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_DOUBLE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+ final long fieldId9 = fieldFlags | ((long) 9 & 0x0ffffffffL);
+ final long fieldId10 = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ // 10 -> 1
+ (byte) 0x51,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x19,
+ (byte) 0x7d, (byte) 0x3f, (byte) 0x35, (byte) 0x5e,
+ (byte) 0xba, (byte) 0x49, (byte) 0x93, (byte) 0xc0,
+ // 4 -> 42.42
+ (byte) 0x21,
+ (byte) 0xf6, (byte) 0x28, (byte) 0x5c, (byte) 0x8f,
+ (byte) 0xc2, (byte) 0x35, (byte) 0x45, (byte) 0x40,
+ // 5 -> Double.MIN_NORMAL
+ (byte) 0x29,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Double.NEGATIVE_INFINITY
+ (byte) 0x39,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0xff,
+ // 8 -> Double.NaN
+ (byte) 0x41,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf8, (byte) 0x7f,
+ // 9 -> Double.POSITIVE_INFINITY
+ (byte) 0x49,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ double[] results = new double[9];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readDouble(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readDouble(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readDouble(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readDouble(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readDouble(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readDouble(fieldId7);
+ break;
+ case (int) fieldId8:
+ results[7] = pi.readDouble(fieldId8);
+ break;
+ case (int) fieldId9:
+ results[8] = pi.readDouble(fieldId9);
+ break;
+ case (int) fieldId10:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+ assertEquals(0.0, results[0]);
+ assertEquals(1.0, results[1]);
+ assertEquals(-1234.432, results[2]);
+ assertEquals(42.42, results[3]);
+ assertEquals(Double.MIN_NORMAL, results[4]);
+ assertEquals(Double.MIN_VALUE, results[5]);
+ assertEquals(Double.NEGATIVE_INFINITY, results[6]);
+ assertEquals(Double.NaN, results[7]);
+ assertEquals(Double.POSITIVE_INFINITY, results[8]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1234.432);
+ testReadCompat(42.42);
+ testReadCompat(Double.MIN_NORMAL);
+ testReadCompat(Double.MIN_VALUE);
+ testReadCompat(Double.NEGATIVE_INFINITY);
+ testReadCompat(Double.NaN);
+ testReadCompat(Double.POSITIVE_INFINITY);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(double val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_DOUBLE;
+ final long fieldId = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.doubleField = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ double result = 0.0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readDouble(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.doubleField, result);
+ }
+
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_DOUBLE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+ final long fieldId9 = fieldFlags | ((long) 9 & 0x0ffffffffL);
+ final long fieldId10 = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x09,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x19,
+ (byte) 0x7d, (byte) 0x3f, (byte) 0x35, (byte) 0x5e,
+ (byte) 0xba, (byte) 0x49, (byte) 0x93, (byte) 0xc0,
+ // 4 -> 42.42
+ (byte) 0x21,
+ (byte) 0xf6, (byte) 0x28, (byte) 0x5c, (byte) 0x8f,
+ (byte) 0xc2, (byte) 0x35, (byte) 0x45, (byte) 0x40,
+ // 5 -> Double.MIN_NORMAL
+ (byte) 0x29,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Double.NEGATIVE_INFINITY
+ (byte) 0x39,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0xff,
+ // 8 -> Double.NaN
+ (byte) 0x41,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf8, (byte) 0x7f,
+ // 9 -> Double.POSITIVE_INFINITY
+ (byte) 0x49,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x7f,
+ // 10 -> 1
+ (byte) 0x51,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x09,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x19,
+ (byte) 0x7d, (byte) 0x3f, (byte) 0x35, (byte) 0x5e,
+ (byte) 0xba, (byte) 0x49, (byte) 0x93, (byte) 0xc0,
+ // 4 -> 42.42
+ (byte) 0x21,
+ (byte) 0xf6, (byte) 0x28, (byte) 0x5c, (byte) 0x8f,
+ (byte) 0xc2, (byte) 0x35, (byte) 0x45, (byte) 0x40,
+ // 5 -> Double.MIN_NORMAL
+ (byte) 0x29,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Double.NEGATIVE_INFINITY
+ (byte) 0x39,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0xff,
+ // 8 -> Double.NaN
+ (byte) 0x41,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf8, (byte) 0x7f,
+ // 9 -> Double.POSITIVE_INFINITY
+ (byte) 0x49,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ double[][] results = new double[9][2];
+ int[] indices = new int[9];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readDouble(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readDouble(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readDouble(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readDouble(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readDouble(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readDouble(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readDouble(fieldId7);
+ break;
+ case (int) fieldId8:
+ results[7][indices[7]++] = pi.readDouble(fieldId8);
+ break;
+ case (int) fieldId9:
+ results[8][indices[8]++] = pi.readDouble(fieldId9);
+ break;
+ case (int) fieldId10:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+ assertEquals(0.0, results[0][0]);
+ assertEquals(0.0, results[0][1]);
+ assertEquals(1.0, results[1][0]);
+ assertEquals(1.0, results[1][1]);
+ assertEquals(-1234.432, results[2][0]);
+ assertEquals(-1234.432, results[2][1]);
+ assertEquals(42.42, results[3][0]);
+ assertEquals(42.42, results[3][1]);
+ assertEquals(Double.MIN_NORMAL, results[4][0]);
+ assertEquals(Double.MIN_NORMAL, results[4][1]);
+ assertEquals(Double.MIN_VALUE, results[5][0]);
+ assertEquals(Double.MIN_VALUE, results[5][1]);
+ assertEquals(Double.NEGATIVE_INFINITY, results[6][0]);
+ assertEquals(Double.NEGATIVE_INFINITY, results[6][1]);
+ assertEquals(Double.NaN, results[7][0]);
+ assertEquals(Double.NaN, results[7][1]);
+ assertEquals(Double.POSITIVE_INFINITY, results[8][0]);
+ assertEquals(Double.POSITIVE_INFINITY, results[8][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new double[0]);
+ testRepeatedCompat(new double[]{0, 1, -1234.432, 42.42,
+ Double.MIN_NORMAL, Double.MIN_VALUE, Double.NEGATIVE_INFINITY, Double.NaN,
+ Double.POSITIVE_INFINITY,
+ });
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(double[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_DOUBLE;
+ final long fieldId = fieldFlags | ((long) 11 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.doubleFieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ double[] result = new double[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readDouble(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.doubleFieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.doubleFieldRepeated[i], result[i]);
+ }
+ }
+
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_DOUBLE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+ final long fieldId9 = fieldFlags | ((long) 9 & 0x0ffffffffL);
+ final long fieldId10 = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ // 10 -> 1
+ (byte) 0x52,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x1a,
+ (byte) 0x10,
+ (byte) 0x7d, (byte) 0x3f, (byte) 0x35, (byte) 0x5e,
+ (byte) 0xba, (byte) 0x49, (byte) 0x93, (byte) 0xc0,
+ (byte) 0x7d, (byte) 0x3f, (byte) 0x35, (byte) 0x5e,
+ (byte) 0xba, (byte) 0x49, (byte) 0x93, (byte) 0xc0,
+ // 4 -> 42.42
+ (byte) 0x22,
+ (byte) 0x10,
+ (byte) 0xf6, (byte) 0x28, (byte) 0x5c, (byte) 0x8f,
+ (byte) 0xc2, (byte) 0x35, (byte) 0x45, (byte) 0x40,
+ (byte) 0xf6, (byte) 0x28, (byte) 0x5c, (byte) 0x8f,
+ (byte) 0xc2, (byte) 0x35, (byte) 0x45, (byte) 0x40,
+ // 5 -> Double.MIN_NORMAL
+ (byte) 0x2a,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x10, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x10,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Double.NEGATIVE_INFINITY
+ (byte) 0x3a,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0xff,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0xff,
+ // 8 -> Double.NaN
+ (byte) 0x42,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf8, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf8, (byte) 0x7f,
+ // 9 -> Double.POSITIVE_INFINITY
+ (byte) 0x4a,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0xf0, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ double[][] results = new double[9][2];
+ int[] indices = new int[9];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readDouble(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readDouble(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readDouble(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readDouble(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readDouble(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readDouble(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readDouble(fieldId7);
+ break;
+ case (int) fieldId8:
+ results[7][indices[7]++] = pi.readDouble(fieldId8);
+ break;
+ case (int) fieldId9:
+ results[8][indices[8]++] = pi.readDouble(fieldId9);
+ break;
+ case (int) fieldId10:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+ assertEquals(0.0, results[0][0]);
+ assertEquals(0.0, results[0][1]);
+ assertEquals(1.0, results[1][0]);
+ assertEquals(1.0, results[1][1]);
+ assertEquals(-1234.432, results[2][0]);
+ assertEquals(-1234.432, results[2][1]);
+ assertEquals(42.42, results[3][0]);
+ assertEquals(42.42, results[3][1]);
+ assertEquals(Double.MIN_NORMAL, results[4][0]);
+ assertEquals(Double.MIN_NORMAL, results[4][1]);
+ assertEquals(Double.MIN_VALUE, results[5][0]);
+ assertEquals(Double.MIN_VALUE, results[5][1]);
+ assertEquals(Double.NEGATIVE_INFINITY, results[6][0]);
+ assertEquals(Double.NEGATIVE_INFINITY, results[6][1]);
+ assertEquals(Double.NaN, results[7][0]);
+ assertEquals(Double.NaN, results[7][1]);
+ assertEquals(Double.POSITIVE_INFINITY, results[8][0]);
+ assertEquals(Double.POSITIVE_INFINITY, results[8][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new double[0]);
+ testPackedCompat(new double[]{0, 1, -1234.432, 42.42,
+ Double.MIN_NORMAL, Double.MIN_VALUE, Double.NEGATIVE_INFINITY, Double.NaN,
+ Double.POSITIVE_INFINITY,
+ });
+ }
+
+ /**
+ * Implementation of testPackedCompat with a given value.
+ */
+ private void testPackedCompat(double[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_DOUBLE;
+ final long fieldId = fieldFlags | ((long) 12 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.doubleFieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ double[] result = new double[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readDouble(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.doubleFieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.doubleFieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_DOUBLE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x09,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_DOUBLE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readDouble(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readDouble(fieldId2);
+ // don't fail, fixed64 is ok
+ break;
+ case (int) fieldId3:
+ pi.readDouble(fieldId3);
+ // don't fail, length delimited is ok (represents packed doubles)
+ break;
+ case (int) fieldId6:
+ pi.readDouble(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamEnumTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamEnumTest.java
new file mode 100644
index 000000000000..f55d95129588
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamEnumTest.java
@@ -0,0 +1,570 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamEnumTest extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_ENUM;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[] results = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(int val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_ENUM;
+ final long fieldId = fieldFlags | ((long) 160 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.outsideField = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+
+ int result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ // Nano proto drops values that are outside the range, so compare against val
+ assertEquals(val, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_ENUM;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new int[]{});
+ testRepeatedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_ENUM;
+ final long fieldId = fieldFlags | ((long) 161 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.outsideFieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ // Nano proto drops values that are outside the range, so compare against val
+ assertEquals(val.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(val[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_ENUM;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+
+ // 6 -> MAX_VALUE
+ (byte) 0x32,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x14,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 4 -> MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 5 -> MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new int[]{});
+ testPackedCompat(new int[]{0, 1});
+
+ // Nano proto has a bug. It gets the size with computeInt32SizeNoTag (correctly)
+ // but incorrectly uses writeRawVarint32 to write the value for negative numbers.
+ //testPackedCompat(new int[] { 0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE });
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_ENUM;
+ final long fieldId = fieldFlags | ((long) 162 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.outsideFieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ // Nano proto drops values that are outside the range, so compare against val
+ assertEquals(val.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(val[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_ENUM;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_ENUM;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readInt(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readInt(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readInt(fieldId3);
+ // don't fail, length delimited is ok (represents packed enums)
+ break;
+ case (int) fieldId6:
+ pi.readInt(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed32Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed32Test.java
new file mode 100644
index 000000000000..df68476f0c36
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed32Test.java
@@ -0,0 +1,547 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamFixed32Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> 1
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x25,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[] results = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(int val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED32;
+ final long fieldId = fieldFlags | ((long) 90 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.fixed32Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.fixed32Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x25,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 6 -> 1
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x25,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new int[0]);
+ testRepeatedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FIXED32;
+ final long fieldId = fieldFlags | ((long) 91 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.fixed32FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.fixed32FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.fixed32FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_FIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> 1
+ (byte) 0x32,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x08,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new int[0]);
+ testPackedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FIXED32;
+ final long fieldId = fieldFlags | ((long) 92 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.fixed32FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.fixed32FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.fixed32FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x0d,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x04,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readInt(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readInt(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readInt(fieldId3);
+ // don't fail, length delimited is ok (represents packed fixed32)
+ break;
+ case (int) fieldId6:
+ pi.readInt(fieldId6);
+ // don't fail, fixed32 is ok
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed64Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed64Test.java
new file mode 100644
index 000000000000..af4130b28cd8
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFixed64Test.java
@@ -0,0 +1,649 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamFixed64Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> 1
+ (byte) 0x41,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x19,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x21,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x29,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x39,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[] results = new long[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ assertEquals(Long.MIN_VALUE, results[5]);
+ assertEquals(Long.MAX_VALUE, results[6]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ testReadCompat(Long.MIN_VALUE);
+ testReadCompat(Long.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(long val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED64;
+ final long fieldId = fieldFlags | ((long) 100 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.fixed64Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.fixed64Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x09,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x19,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x21,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x29,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x39,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 8 -> 1
+ (byte) 0x41,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x09,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x19,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x21,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x29,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x39,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new long[0]);
+ testRepeatedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FIXED64;
+ final long fieldId = fieldFlags | ((long) 101 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.fixed64FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.fixed64FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.fixed64FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_FIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x10,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 8 -> 1
+ (byte) 0x42,
+ (byte) 0x10,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x10,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x10,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x3a,
+ (byte) 0x10,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new long[0]);
+ testPackedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FIXED64;
+ final long fieldId = fieldFlags | ((long) 102 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.fixed64FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.fixed64FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.fixed64FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x09,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readLong(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readLong(fieldId2);
+ // don't fail, fixed64 is ok
+ break;
+ case (int) fieldId3:
+ pi.readLong(fieldId3);
+ // don't fail, length delimited is ok (represents packed fixed64)
+ break;
+ case (int) fieldId6:
+ pi.readLong(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFloatTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFloatTest.java
new file mode 100644
index 000000000000..9bc07dc513e1
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamFloatTest.java
@@ -0,0 +1,679 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamFloatTest extends TestCase {
+
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FLOAT;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+ final long fieldId9 = fieldFlags | ((long) 9 & 0x0ffffffffL);
+ final long fieldId10 = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ // 10 -> 1
+ (byte) 0x55,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x1d,
+ (byte) 0xd3, (byte) 0x4d, (byte) 0x9a, (byte) 0xc4,
+ // 4 -> 42.42
+ (byte) 0x25,
+ (byte) 0x14, (byte) 0xae, (byte) 0x29, (byte) 0x42,
+ // 5 -> Float.MIN_NORMAL
+ (byte) 0x2d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Float.NEGATIVE_INFINITY
+ (byte) 0x3d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0xff,
+ // 8 -> Float.NaN
+ (byte) 0x45,
+ (byte) 0x00, (byte) 0x00, (byte) 0xc0, (byte) 0x7f,
+ // 9 -> Float.POSITIVE_INFINITY
+ (byte) 0x4d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ float[] results = new float[9];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readFloat(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readFloat(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readFloat(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readFloat(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readFloat(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readFloat(fieldId7);
+ break;
+ case (int) fieldId8:
+ results[7] = pi.readFloat(fieldId8);
+ break;
+ case (int) fieldId9:
+ results[8] = pi.readFloat(fieldId9);
+ break;
+ case (int) fieldId10:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+ assertEquals(0.0f, results[0]);
+ assertEquals(1.0f, results[1]);
+ assertEquals(-1234.432f, results[2]);
+ assertEquals(42.42f, results[3]);
+ assertEquals(Float.MIN_NORMAL, results[4]);
+ assertEquals(Float.MIN_VALUE, results[5]);
+ assertEquals(Float.NEGATIVE_INFINITY, results[6]);
+ assertEquals(Float.NaN, results[7]);
+ assertEquals(Float.POSITIVE_INFINITY, results[8]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1234.432f);
+ testReadCompat(42.42f);
+ testReadCompat(Float.MIN_NORMAL);
+ testReadCompat(Float.MIN_VALUE);
+ testReadCompat(Float.NEGATIVE_INFINITY);
+ testReadCompat(Float.NaN);
+ testReadCompat(Float.POSITIVE_INFINITY);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(float val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FLOAT;
+ final long fieldId = fieldFlags | ((long) 20 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.floatField = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ float result = 0.0f; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readFloat(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.floatField, result);
+ }
+
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FLOAT;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+ final long fieldId9 = fieldFlags | ((long) 9 & 0x0ffffffffL);
+ final long fieldId10 = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x1d,
+ (byte) 0xd3, (byte) 0x4d, (byte) 0x9a, (byte) 0xc4,
+ // 4 -> 42.42
+ (byte) 0x25,
+ (byte) 0x14, (byte) 0xae, (byte) 0x29, (byte) 0x42,
+ // 5 -> Float.MIN_NORMAL
+ (byte) 0x2d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Float.NEGATIVE_INFINITY
+ (byte) 0x3d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0xff,
+ // 8 -> Float.NaN
+ (byte) 0x45,
+ (byte) 0x00, (byte) 0x00, (byte) 0xc0, (byte) 0x7f,
+ // 9 -> Float.POSITIVE_INFINITY
+ (byte) 0x4d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x7f,
+
+ // 10 -> 1
+ (byte) 0x55,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x1d,
+ (byte) 0xd3, (byte) 0x4d, (byte) 0x9a, (byte) 0xc4,
+ // 4 -> 42.42
+ (byte) 0x25,
+ (byte) 0x14, (byte) 0xae, (byte) 0x29, (byte) 0x42,
+ // 5 -> Float.MIN_NORMAL
+ (byte) 0x2d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Float.NEGATIVE_INFINITY
+ (byte) 0x3d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0xff,
+ // 8 -> Float.NaN
+ (byte) 0x45,
+ (byte) 0x00, (byte) 0x00, (byte) 0xc0, (byte) 0x7f,
+ // 9 -> Float.POSITIVE_INFINITY
+ (byte) 0x4d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ float[][] results = new float[9][2];
+ int[] indices = new int[9];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readFloat(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readFloat(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readFloat(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readFloat(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readFloat(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readFloat(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readFloat(fieldId7);
+ break;
+ case (int) fieldId8:
+ results[7][indices[7]++] = pi.readFloat(fieldId8);
+ break;
+ case (int) fieldId9:
+ results[8][indices[8]++] = pi.readFloat(fieldId9);
+ break;
+ case (int) fieldId10:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+ assertEquals(0.0f, results[0][0]);
+ assertEquals(0.0f, results[0][1]);
+ assertEquals(1.0f, results[1][0]);
+ assertEquals(1.0f, results[1][1]);
+ assertEquals(-1234.432f, results[2][0]);
+ assertEquals(-1234.432f, results[2][1]);
+ assertEquals(42.42f, results[3][0]);
+ assertEquals(42.42f, results[3][1]);
+ assertEquals(Float.MIN_NORMAL, results[4][0]);
+ assertEquals(Float.MIN_NORMAL, results[4][1]);
+ assertEquals(Float.MIN_VALUE, results[5][0]);
+ assertEquals(Float.MIN_VALUE, results[5][1]);
+ assertEquals(Float.NEGATIVE_INFINITY, results[6][0]);
+ assertEquals(Float.NEGATIVE_INFINITY, results[6][1]);
+ assertEquals(Float.NaN, results[7][0]);
+ assertEquals(Float.NaN, results[7][1]);
+ assertEquals(Float.POSITIVE_INFINITY, results[8][0]);
+ assertEquals(Float.POSITIVE_INFINITY, results[8][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new float[0]);
+ testRepeatedCompat(new float[]{0, 1, -1234.432f, 42.42f,
+ Float.MIN_NORMAL, Float.MIN_VALUE, Float.NEGATIVE_INFINITY, Float.NaN,
+ Float.POSITIVE_INFINITY,
+ });
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(float[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_FLOAT;
+ final long fieldId = fieldFlags | ((long) 21 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.floatFieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ float[] result = new float[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readFloat(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.floatFieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.floatFieldRepeated[i], result[i]);
+ }
+ }
+
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_FLOAT;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+ final long fieldId9 = fieldFlags | ((long) 9 & 0x0ffffffffL);
+ final long fieldId10 = fieldFlags | ((long) 10 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ // 10 -> 1
+ (byte) 0x52,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x3f,
+ // 3 -> -1234.432
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0xd3, (byte) 0x4d, (byte) 0x9a, (byte) 0xc4,
+ (byte) 0xd3, (byte) 0x4d, (byte) 0x9a, (byte) 0xc4,
+ // 4 -> 42.42
+ (byte) 0x22,
+ (byte) 0x08,
+ (byte) 0x14, (byte) 0xae, (byte) 0x29, (byte) 0x42,
+ (byte) 0x14, (byte) 0xae, (byte) 0x29, (byte) 0x42,
+ // 5 -> Float.MIN_NORMAL
+ (byte) 0x2a,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x00,
+ // 6 -> DOUBLE.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 7 -> Float.NEGATIVE_INFINITY
+ (byte) 0x3a,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0xff,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0xff,
+ // 8 -> Float.NaN
+ (byte) 0x42,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0xc0, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0xc0, (byte) 0x7f,
+ // 9 -> Float.POSITIVE_INFINITY
+ (byte) 0x4a,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x80, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ float[][] results = new float[9][2];
+ int[] indices = new int[9];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readFloat(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readFloat(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readFloat(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readFloat(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readFloat(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readFloat(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readFloat(fieldId7);
+ break;
+ case (int) fieldId8:
+ results[7][indices[7]++] = pi.readFloat(fieldId8);
+ break;
+ case (int) fieldId9:
+ results[8][indices[8]++] = pi.readFloat(fieldId9);
+ break;
+ case (int) fieldId10:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+ assertEquals(0.0f, results[0][0]);
+ assertEquals(0.0f, results[0][1]);
+ assertEquals(1.0f, results[1][0]);
+ assertEquals(1.0f, results[1][1]);
+ assertEquals(-1234.432f, results[2][0]);
+ assertEquals(-1234.432f, results[2][1]);
+ assertEquals(42.42f, results[3][0]);
+ assertEquals(42.42f, results[3][1]);
+ assertEquals(Float.MIN_NORMAL, results[4][0]);
+ assertEquals(Float.MIN_NORMAL, results[4][1]);
+ assertEquals(Float.MIN_VALUE, results[5][0]);
+ assertEquals(Float.MIN_VALUE, results[5][1]);
+ assertEquals(Float.NEGATIVE_INFINITY, results[6][0]);
+ assertEquals(Float.NEGATIVE_INFINITY, results[6][1]);
+ assertEquals(Float.NaN, results[7][0]);
+ assertEquals(Float.NaN, results[7][1]);
+ assertEquals(Float.POSITIVE_INFINITY, results[8][0]);
+ assertEquals(Float.POSITIVE_INFINITY, results[8][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new float[0]);
+ testPackedCompat(new float[]{0, 1, -1234.432f, 42.42f,
+ Float.MIN_NORMAL, Float.MIN_VALUE, Float.NEGATIVE_INFINITY, Float.NaN,
+ Float.POSITIVE_INFINITY,
+ });
+ }
+
+ /**
+ * Implementation of testPackedCompat with a given value.
+ */
+ private void testPackedCompat(float[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_FLOAT;
+ final long fieldId = fieldFlags | ((long) 22 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.floatFieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ float[] result = new float[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readFloat(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.floatFieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.floatFieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FLOAT;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x0d,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_FLOAT;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x04,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readFloat(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readFloat(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readFloat(fieldId3);
+ // don't fail, length delimited is ok (represents packed floats)
+ break;
+ case (int) fieldId6:
+ pi.readFloat(fieldId6);
+ // don't fail, fixed32 is ok
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt32Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt32Test.java
new file mode 100644
index 000000000000..0065870486f2
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt32Test.java
@@ -0,0 +1,565 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamInt32Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[] results = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(int val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT32;
+ final long fieldId = fieldFlags | ((long) 30 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.int32Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.int32Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_INT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new int[0]);
+ testRepeatedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_INT32;
+ final long fieldId = fieldFlags | ((long) 31 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.int32FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.int32FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.int32FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_INT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+
+ // 6 -> MAX_VALUE
+ (byte) 0x32,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x14,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 4 -> MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 5 -> MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new int[0]);
+ testPackedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_INT32;
+ final long fieldId = fieldFlags | ((long) 32 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.int32FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.int32FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.int32FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readInt(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readInt(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readInt(fieldId3);
+ // don't fail, length delimited is ok (represents packed int32)
+ break;
+ case (int) fieldId6:
+ pi.readInt(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt64Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt64Test.java
new file mode 100644
index 000000000000..4d6d105e60b0
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamInt64Test.java
@@ -0,0 +1,645 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamInt64Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 8 -> Long.MAX_VALUE
+ (byte) 0x40,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[] results = new long[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ assertEquals(Long.MIN_VALUE, results[5]);
+ assertEquals(Long.MAX_VALUE, results[6]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ testReadCompat(Long.MIN_VALUE);
+ testReadCompat(Long.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(long val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT64;
+ final long fieldId = fieldFlags | ((long) 40 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.int64Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.int64Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_INT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 8 -> Long.MAX_VALUE
+ (byte) 0x40,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new long[0]);
+ testRepeatedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_INT64;
+ final long fieldId = fieldFlags | ((long) 41 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.int64FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.int64FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.int64FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_INT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+
+ // 8 -> Long.MAX_VALUE
+ (byte) 0x42,
+ (byte) 0x12,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x14,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x3a,
+ (byte) 0x12,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new long[0]);
+ testPackedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_INT64;
+ final long fieldId = fieldFlags | ((long) 42 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.int64FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.int64FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.int64FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_INT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readLong(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readLong(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readLong(fieldId3);
+ // don't fail, length delimited is ok (represents packed int64)
+ break;
+ case (int) fieldId6:
+ pi.readLong(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamObjectTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamObjectTest.java
new file mode 100644
index 000000000000..5e49eeafb8af
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamObjectTest.java
@@ -0,0 +1,507 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamObjectTest extends TestCase {
+
+
+ class SimpleObject {
+ public char mChar;
+ public char mLargeChar;
+ public String mString;
+ public SimpleObject mNested;
+
+ void parseProto(ProtoInputStream pi) throws IOException {
+ final long uintFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+ final long stringFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_STRING;
+ final long messageFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+ final long charId = uintFieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long largeCharId = uintFieldFlags | ((long) 5000 & 0x0ffffffffL);
+ final long stringId = stringFieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long nestedId = messageFieldFlags | ((long) 5 & 0x0ffffffffL);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) charId:
+ mChar = (char) pi.readInt(charId);
+ break;
+ case (int) largeCharId:
+ mLargeChar = (char) pi.readInt(largeCharId);
+ break;
+ case (int) stringId:
+ mString = pi.readString(stringId);
+ break;
+ case (int) nestedId:
+ long token = pi.start(nestedId);
+ mNested = new SimpleObject();
+ mNested.parseProto(pi);
+ pi.end(token);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Test reading an object with one char in it.
+ */
+ public void testObjectOneChar() throws IOException {
+ testObjectOneChar(0);
+ testObjectOneChar(1);
+ testObjectOneChar(5);
+ }
+
+ /**
+ * Implementation of testObjectOneChar for a given chunkSize.
+ */
+ private void testObjectOneChar(int chunkSize) throws IOException {
+ final long messageFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+
+ final long messageId1 = messageFieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long messageId2 = messageFieldFlags | ((long) 2 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // Message 2 : { char 2 : 'c' }
+ (byte) 0x12, (byte) 0x02, (byte) 0x10, (byte) 0x63,
+ // Message 1 : { char 2 : 'b' }
+ (byte) 0x0a, (byte) 0x02, (byte) 0x10, (byte) 0x62,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+
+ SimpleObject result = null;
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) messageId1:
+ final long token = pi.start(messageId1);
+ result = new SimpleObject();
+ result.parseProto(pi);
+ pi.end(token);
+ break;
+ case (int) messageId2:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertNotNull(result);
+ assertEquals('b', result.mChar);
+ }
+
+ /**
+ * Test reading an object with one multibyte unicode char in it.
+ */
+ public void testObjectOneLargeChar() throws IOException {
+ testObjectOneLargeChar(0);
+ testObjectOneLargeChar(1);
+ testObjectOneLargeChar(5);
+ }
+
+ /**
+ * Implementation of testObjectOneLargeChar for a given chunkSize.
+ */
+ private void testObjectOneLargeChar(int chunkSize) throws IOException {
+ final long messageFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+
+ final long messageId1 = messageFieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long messageId2 = messageFieldFlags | ((long) 2 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // Message 2 : { char 5000 : '\u3110' }
+ (byte) 0x12, (byte) 0x05, (byte) 0xc0, (byte) 0xb8,
+ (byte) 0x02, (byte) 0x90, (byte) 0x62,
+ // Message 1 : { char 5000 : '\u3110' }
+ (byte) 0x0a, (byte) 0x05, (byte) 0xc0, (byte) 0xb8,
+ (byte) 0x02, (byte) 0x90, (byte) 0x62,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+
+ SimpleObject result = null;
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) messageId1:
+ final long token = pi.start(messageId1);
+ result = new SimpleObject();
+ result.parseProto(pi);
+ pi.end(token);
+ break;
+ case (int) messageId2:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertNotNull(result);
+ assertEquals('\u3110', result.mLargeChar);
+ }
+
+ /**
+ * Test reading a char, then an object, then a char.
+ */
+ public void testObjectAndTwoChars() throws IOException {
+ testObjectAndTwoChars(0);
+ testObjectAndTwoChars(1);
+ testObjectAndTwoChars(5);
+ }
+
+ /**
+ * Implementation of testObjectAndTwoChars for a given chunkSize.
+ */
+ private void testObjectAndTwoChars(int chunkSize) throws IOException {
+ final long uintFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+ final long messageFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+
+ final long charId1 = uintFieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long messageId2 = messageFieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long charId4 = uintFieldFlags | ((long) 4 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 'a'
+ (byte) 0x08, (byte) 0x61,
+ // Message 1 : { char 2 : 'b' }
+ (byte) 0x12, (byte) 0x02, (byte) 0x10, (byte) 0x62,
+ // 4 -> 'c'
+ (byte) 0x20, (byte) 0x63,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+
+ SimpleObject obj = null;
+ char char1 = '\0';
+ char char4 = '\0';
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) charId1:
+ char1 = (char) pi.readInt(charId1);
+ break;
+ case (int) messageId2:
+ final long token = pi.start(messageId2);
+ obj = new SimpleObject();
+ obj.parseProto(pi);
+ pi.end(token);
+ break;
+ case (int) charId4:
+ char4 = (char) pi.readInt(charId4);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals('a', char1);
+ assertNotNull(obj);
+ assertEquals('b', obj.mChar);
+ assertEquals('c', char4);
+ }
+
+ /**
+ * Test reading a char, then an object with an int and a string in it, then a char.
+ */
+ public void testComplexObject() throws IOException {
+ testComplexObject(0);
+ testComplexObject(1);
+ testComplexObject(5);
+ }
+
+ /**
+ * Implementation of testComplexObject for a given chunkSize.
+ */
+ private void testComplexObject(int chunkSize) throws IOException {
+ final long uintFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+ final long messageFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+
+ final long charId1 = uintFieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long messageId2 = messageFieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long charId4 = uintFieldFlags | ((long) 4 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 'x'
+ (byte) 0x08, (byte) 0x78,
+ // begin object 2
+ (byte) 0x12, (byte) 0x10,
+ // 2 -> 'y'
+ (byte) 0x10, (byte) 0x79,
+ // 4 -> "abcdefghijkl"
+ (byte) 0x22, (byte) 0x0c,
+ (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66,
+ (byte) 0x67, (byte) 0x68, (byte) 0x69, (byte) 0x6a, (byte) 0x6b, (byte) 0x6c,
+ // 4 -> 'z'
+ (byte) 0x20, (byte) 0x7a,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+
+ SimpleObject obj = null;
+ char char1 = '\0';
+ char char4 = '\0';
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) charId1:
+ char1 = (char) pi.readInt(charId1);
+ break;
+ case (int) messageId2:
+ final long token = pi.start(messageId2);
+ obj = new SimpleObject();
+ obj.parseProto(pi);
+ pi.end(token);
+ break;
+ case (int) charId4:
+ char4 = (char) pi.readInt(charId4);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals('x', char1);
+ assertNotNull(obj);
+ assertEquals('y', obj.mChar);
+ assertEquals("abcdefghijkl", obj.mString);
+ assertEquals('z', char4);
+ }
+
+ /**
+ * Test reading 3 levels deep of objects.
+ */
+ public void testDeepObjects() throws IOException {
+ testDeepObjects(0);
+ testDeepObjects(1);
+ testDeepObjects(5);
+ }
+
+ /**
+ * Implementation of testDeepObjects for a given chunkSize.
+ */
+ private void testDeepObjects(int chunkSize) throws IOException {
+ final long messageFieldFlags =
+ ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+ final long messageId2 = messageFieldFlags | ((long) 2 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // begin object id 2
+ (byte) 0x12, (byte) 0x1a,
+ // 2 -> 'a'
+ (byte) 0x10, (byte) 0x61,
+ // begin nested object id 5
+ (byte) 0x2a, (byte) 0x15,
+ // 5000 -> '\u3110'
+ (byte) 0xc0, (byte) 0xb8,
+ (byte) 0x02, (byte) 0x90, (byte) 0x62,
+ // begin nested object id 5
+ (byte) 0x2a, (byte) 0x0e,
+ // 4 -> "abcdefghijkl"
+ (byte) 0x22, (byte) 0x0c,
+ (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64, (byte) 0x65, (byte) 0x66,
+ (byte) 0x67, (byte) 0x68, (byte) 0x69, (byte) 0x6a, (byte) 0x6b, (byte) 0x6c,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+
+ SimpleObject obj = null;
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) messageId2:
+ final long token = pi.start(messageId2);
+ obj = new SimpleObject();
+ obj.parseProto(pi);
+ pi.end(token);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertNotNull(obj);
+ assertEquals('a', obj.mChar);
+ assertNotNull(obj.mNested);
+ assertEquals('\u3110', obj.mNested.mLargeChar);
+ assertNotNull(obj.mNested.mNested);
+ assertEquals("abcdefghijkl", obj.mNested.mNested.mString);
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> {1}
+ (byte) 0x0a,
+ (byte) 0x01,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_MESSAGE;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readBytes(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readBytes(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readBytes(fieldId3);
+ // don't fail, length delimited is ok
+ break;
+ case (int) fieldId6:
+ pi.readBytes(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed32Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed32Test.java
new file mode 100644
index 000000000000..75c88a44614b
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed32Test.java
@@ -0,0 +1,547 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamSFixed32Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> 1
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x25,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[] results = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(int val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED32;
+ final long fieldId = fieldFlags | ((long) 110 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sfixed32Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sfixed32Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SFIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x25,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 6 -> 1
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0d,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x15,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x25,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2d,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new int[0]);
+ testRepeatedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SFIXED32;
+ final long fieldId = fieldFlags | ((long) 111 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sfixed32FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sfixed32FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sfixed32FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_SFIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> 1
+ (byte) 0x32,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x08,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new int[0]);
+ testPackedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SFIXED32;
+ final long fieldId = fieldFlags | ((long) 112 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sfixed32FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sfixed32FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sfixed32FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x04,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readInt(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readInt(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readInt(fieldId3);
+ // don't fail, length delimited is ok (represents packed sfixed32)
+ break;
+ case (int) fieldId6:
+ pi.readInt(fieldId6);
+ // don't fail, fixed32 is ok
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed64Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed64Test.java
new file mode 100644
index 000000000000..4c65cf49318d
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSFixed64Test.java
@@ -0,0 +1,648 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamSFixed64Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 8 -> 1
+ (byte) 0x41,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x19,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x21,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x29,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x39,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[] results = new long[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ assertEquals(Long.MIN_VALUE, results[5]);
+ assertEquals(Long.MAX_VALUE, results[6]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ testReadCompat(Long.MIN_VALUE);
+ testReadCompat(Long.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(long val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED64;
+ final long fieldId = fieldFlags | ((long) 120 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sfixed64Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sfixed64Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SFIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x09,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x19,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x21,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x29,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x39,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 8 -> 1
+ (byte) 0x41,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x09,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x19,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x21,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x29,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x31,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x39,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new long[0]);
+ testRepeatedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SFIXED64;
+ final long fieldId = fieldFlags | ((long) 121 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sfixed64FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sfixed64FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sfixed64FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_SFIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x10,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 8 -> 1
+ (byte) 0x42,
+ (byte) 0x10,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x10,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x10,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x80,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x3a,
+ (byte) 0x10,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new long[0]);
+ testPackedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SFIXED64;
+ final long fieldId = fieldFlags | ((long) 122 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sfixed64FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sfixed64FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sfixed64FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SFIXED64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readLong(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readLong(fieldId2);
+ // don't fail, fixed32 is ok
+ break;
+ case (int) fieldId3:
+ pi.readLong(fieldId3);
+ // don't fail, length delimited is ok (represents packed sfixed64)
+ break;
+ case (int) fieldId6:
+ pi.readLong(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt32Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt32Test.java
new file mode 100644
index 000000000000..6854cd8aad28
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt32Test.java
@@ -0,0 +1,547 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamSInt32Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x02,
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[] results = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(int val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT32;
+ final long fieldId = fieldFlags | ((long) 70 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sint32Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sint32Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x02,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x02,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new int[0]);
+ testRepeatedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SINT32;
+ final long fieldId = fieldFlags | ((long) 71 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sint32FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sint32FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sint32FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_SINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x02,
+ (byte) 0x02,
+ // 6 -> MAX_VALUE
+ (byte) 0x32,
+ (byte) 0x0a,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new int[0]);
+ testPackedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SINT32;
+ final long fieldId = fieldFlags | ((long) 72 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sint32FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sint32FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sint32FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readInt(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readInt(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readInt(fieldId3);
+ // don't fail, length delimited is ok (represents packed sint32)
+ break;
+ case (int) fieldId6:
+ pi.readInt(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt64Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt64Test.java
new file mode 100644
index 000000000000..c53e9d72562a
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamSInt64Test.java
@@ -0,0 +1,622 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamSInt64Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x02,
+ // 8 -> Integer.MAX_VALUE
+ (byte) 0x40,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[] results = new long[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ assertEquals(Long.MIN_VALUE, results[5]);
+ assertEquals(Long.MAX_VALUE, results[6]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ testReadCompat(Long.MIN_VALUE);
+ testReadCompat(Long.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(long val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT64;
+ final long fieldId = fieldFlags | ((long) 80 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sint64Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sint64Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x02,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 8 -> Integer.MAX_VALUE
+ (byte) 0x40,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x02,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new long[0]);
+ testRepeatedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SINT64;
+ final long fieldId = fieldFlags | ((long) 81 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sint64FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sint64FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sint64FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_SINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x02,
+ (byte) 0x02,
+ // 8 -> Integer.MAX_VALUE
+ (byte) 0x42,
+ (byte) 0x0a,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x14,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x3a,
+ (byte) 0x14,
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xfe, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new long[0]);
+ testPackedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_SINT64;
+ final long fieldId = fieldFlags | ((long) 82 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.sint64FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.sint64FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.sint64FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_SINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readLong(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readLong(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readLong(fieldId3);
+ // don't fail, length delimited is ok (represents packed sint64)
+ break;
+ case (int) fieldId6:
+ pi.readLong(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamStringTest.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamStringTest.java
new file mode 100644
index 000000000000..816d5f900a3d
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamStringTest.java
@@ -0,0 +1,404 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamStringTest extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_STRING;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> null - default value, not written
+ // 2 -> "" - default value, not written
+ // 3 -> "abcd\u3110!"
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64,
+ (byte) 0xe3, (byte) 0x84, (byte) 0x90, (byte) 0x21,
+ // 5 -> "Hi"
+ (byte) 0x2a,
+ (byte) 0x02,
+ (byte) 0x48, (byte) 0x69,
+ // 4 -> "Hi"
+ (byte) 0x22,
+ (byte) 0x02,
+ (byte) 0x48, (byte) 0x69,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ String[] results = new String[4];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0] = pi.readString(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readString(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readString(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readString(fieldId4);
+ break;
+ case (int) fieldId5:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertNull(results[0]);
+ assertNull(results[1]);
+ assertEquals("abcd\u3110!", results[2]);
+ assertEquals("Hi", results[3]);
+ }
+
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat("");
+ testReadCompat("abcd\u3110!");
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(String val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_STRING;
+ final long fieldId = fieldFlags | ((long) 140 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.stringField = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ String result = "";
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readString(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.stringField, result);
+ }
+
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_STRING;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> null - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x00,
+ // 2 -> "" - default value, written when repeated
+ (byte) 0x12,
+ (byte) 0x00,
+ // 3 -> "abcd\u3110!"
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64,
+ (byte) 0xe3, (byte) 0x84, (byte) 0x90, (byte) 0x21,
+ // 4 -> "Hi"
+ (byte) 0x22,
+ (byte) 0x02,
+ (byte) 0x48, (byte) 0x69,
+
+ // 5 -> "Hi"
+ (byte) 0x2a,
+ (byte) 0x02,
+ (byte) 0x48, (byte) 0x69,
+
+ // 1 -> null - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x00,
+ // 2 -> "" - default value, written when repeated
+ (byte) 0x12,
+ (byte) 0x00,
+ // 3 -> "abcd\u3110!"
+ (byte) 0x1a,
+ (byte) 0x08,
+ (byte) 0x61, (byte) 0x62, (byte) 0x63, (byte) 0x64,
+ (byte) 0xe3, (byte) 0x84, (byte) 0x90, (byte) 0x21,
+ // 4 -> "Hi"
+ (byte) 0x22,
+ (byte) 0x02,
+ (byte) 0x48, (byte) 0x69,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ String[][] results = new String[4][2];
+ int[] indices = new int[4];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readString(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readString(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readString(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readString(fieldId4);
+ break;
+ case (int) fieldId5:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals("", results[0][0]);
+ assertEquals("", results[0][1]);
+ assertEquals("", results[1][0]);
+ assertEquals("", results[1][1]);
+ assertEquals("abcd\u3110!", results[2][0]);
+ assertEquals("abcd\u3110!", results[2][1]);
+ assertEquals("Hi", results[3][0]);
+ assertEquals("Hi", results[3][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new String[0]);
+ testRepeatedCompat(new String[]{"", "abcd\u3110!", "Hi"});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(String[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_STRING;
+ final long fieldId = fieldFlags | ((long) 141 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.stringFieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ String[] result = new String[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readString(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.stringFieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.stringFieldRepeated[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_STRING;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> {1}
+ (byte) 0x0a,
+ (byte) 0x01,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_STRING;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readString(fieldId1);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId2:
+ pi.readString(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readString(fieldId3);
+ // don't fail, length delimited is ok (represents packed booleans)
+ break;
+ case (int) fieldId6:
+ pi.readString(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt32Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt32Test.java
new file mode 100644
index 000000000000..50fc537767a4
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt32Test.java
@@ -0,0 +1,564 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamUInt32Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[] results = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(int val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+ final long fieldId = fieldFlags | ((long) 50 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.uint32Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.uint32Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_UINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 6 -> MAX_VALUE
+ (byte) 0x30,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new int[0]);
+ testRepeatedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_UINT32;
+ final long fieldId = fieldFlags | ((long) 51 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.uint32FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.uint32FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.uint32FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_UINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+
+ // 6 -> MAX_VALUE
+ (byte) 0x32,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x14,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 4 -> MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 5 -> MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ int[][] results = new int[5][2];
+ int[] indices = new int[5];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readInt(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readInt(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readInt(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readInt(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readInt(fieldId5);
+ break;
+ case (int) fieldId6:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new int[0]);
+ testPackedCompat(new int[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(int[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_UINT32;
+ final long fieldId = fieldFlags | ((long) 52 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.uint32FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ int[] result = new int[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readInt(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.uint32FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.uint32FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readLong(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT32;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readInt(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readInt(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readInt(fieldId3);
+ // don't fail, length delimited is ok (represents packed uint32)
+ break;
+ case (int) fieldId6:
+ pi.readInt(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt64Test.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt64Test.java
new file mode 100644
index 000000000000..20969e9056a9
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoInputStreamUInt64Test.java
@@ -0,0 +1,641 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoStream;
+import android.util.proto.WireTypeMismatchException;
+
+import com.android.test.protoinputstream.nano.Test;
+
+import com.google.protobuf.nano.MessageNano;
+
+import junit.framework.TestCase;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+public class ProtoInputStreamUInt64Test extends TestCase {
+
+ public void testRead() throws IOException {
+ testRead(0);
+ testRead(1);
+ testRead(5);
+ }
+
+ private void testRead(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, not written
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 8 -> Integer.MAX_VALUE
+ (byte) 0x40,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[] results = new long[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ fail("Should never reach this");
+ break;
+ case (int) fieldId2:
+ results[1] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0]);
+ assertEquals(1, results[1]);
+ assertEquals(-1, results[2]);
+ assertEquals(Integer.MIN_VALUE, results[3]);
+ assertEquals(Integer.MAX_VALUE, results[4]);
+ assertEquals(Long.MIN_VALUE, results[5]);
+ assertEquals(Long.MAX_VALUE, results[6]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testReadCompat() throws Exception {
+ testReadCompat(0);
+ testReadCompat(1);
+ testReadCompat(-1);
+ testReadCompat(Integer.MIN_VALUE);
+ testReadCompat(Integer.MAX_VALUE);
+ testReadCompat(Long.MIN_VALUE);
+ testReadCompat(Long.MAX_VALUE);
+ }
+
+ /**
+ * Implementation of testReadCompat with a given value.
+ */
+ private void testReadCompat(long val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT64;
+ final long fieldId = fieldFlags | ((long) 60 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.uint64Field = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long result = 0; // start off with default value
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.uint64Field, result);
+ }
+
+ public void testRepeated() throws IOException {
+ testRepeated(0);
+ testRepeated(1);
+ testRepeated(5);
+ }
+
+ private void testRepeated(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_UINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ // 8 -> Integer.MAX_VALUE
+ (byte) 0x40,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x08,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x10,
+ (byte) 0x01,
+ // 3 -> -1
+ (byte) 0x18,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x20,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x28,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x30,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x38,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testRepeatedCompat() throws Exception {
+ testRepeatedCompat(new long[0]);
+ testRepeatedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testRepeatedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_UINT64;
+ final long fieldId = fieldFlags | ((long) 61 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.uint64FieldRepeated = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.uint64FieldRepeated.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.uint64FieldRepeated[i], result[i]);
+ }
+ }
+
+ public void testPacked() throws IOException {
+ testPacked(0);
+ testPacked(1);
+ testPacked(5);
+ }
+
+ private void testPacked(int chunkSize) throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_PACKED | ProtoStream.FIELD_TYPE_UINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId4 = fieldFlags | ((long) 4 & 0x0ffffffffL);
+ final long fieldId5 = fieldFlags | ((long) 5 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+ final long fieldId7 = fieldFlags | ((long) 7 & 0x0ffffffffL);
+ final long fieldId8 = fieldFlags | ((long) 8 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 0 - default value, written when repeated
+ (byte) 0x0a,
+ (byte) 0x02,
+ (byte) 0x00,
+ (byte) 0x00,
+ // 2 -> 1
+ (byte) 0x12,
+ (byte) 0x02,
+ (byte) 0x01,
+ (byte) 0x01,
+
+ // 8 -> Integer.MAX_VALUE
+ (byte) 0x42,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 3 -> -1
+ (byte) 0x1a,
+ (byte) 0x14,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 4 -> Integer.MIN_VALUE
+ (byte) 0x22,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0xf8,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01,
+
+ // 5 -> Integer.MAX_VALUE
+ (byte) 0x2a,
+ (byte) 0x0a,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x07,
+
+ // 6 -> Long.MIN_VALUE
+ (byte) 0x32,
+ (byte) 0x14,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80,
+ (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x80, (byte) 0x01,
+
+ // 7 -> Long.MAX_VALUE
+ (byte) 0x3a,
+ (byte) 0x12,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x7f,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream, chunkSize);
+ long[][] results = new long[7][2];
+ int[] indices = new int[7];
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ results[0][indices[0]++] = pi.readLong(fieldId1);
+ break;
+ case (int) fieldId2:
+ results[1][indices[1]++] = pi.readLong(fieldId2);
+ break;
+ case (int) fieldId3:
+ results[2][indices[2]++] = pi.readLong(fieldId3);
+ break;
+ case (int) fieldId4:
+ results[3][indices[3]++] = pi.readLong(fieldId4);
+ break;
+ case (int) fieldId5:
+ results[4][indices[4]++] = pi.readLong(fieldId5);
+ break;
+ case (int) fieldId6:
+ results[5][indices[5]++] = pi.readLong(fieldId6);
+ break;
+ case (int) fieldId7:
+ results[6][indices[6]++] = pi.readLong(fieldId7);
+ break;
+ case (int) fieldId8:
+ // Intentionally don't read the data. Parse should continue normally
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+ stream.close();
+
+ assertEquals(0, results[0][0]);
+ assertEquals(0, results[0][1]);
+ assertEquals(1, results[1][0]);
+ assertEquals(1, results[1][1]);
+ assertEquals(-1, results[2][0]);
+ assertEquals(-1, results[2][1]);
+ assertEquals(Integer.MIN_VALUE, results[3][0]);
+ assertEquals(Integer.MIN_VALUE, results[3][1]);
+ assertEquals(Integer.MAX_VALUE, results[4][0]);
+ assertEquals(Integer.MAX_VALUE, results[4][1]);
+ assertEquals(Long.MIN_VALUE, results[5][0]);
+ assertEquals(Long.MIN_VALUE, results[5][1]);
+ assertEquals(Long.MAX_VALUE, results[6][0]);
+ assertEquals(Long.MAX_VALUE, results[6][1]);
+ }
+
+ /**
+ * Test that reading with ProtoInputStream matches, and can read the output of standard proto.
+ */
+ public void testPackedCompat() throws Exception {
+ testPackedCompat(new long[0]);
+ testPackedCompat(new long[]{0, 1, -1, Integer.MIN_VALUE, Integer.MAX_VALUE});
+ }
+
+ /**
+ * Implementation of testRepeatedCompat with a given value.
+ */
+ private void testPackedCompat(long[] val) throws Exception {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_REPEATED | ProtoStream.FIELD_TYPE_UINT64;
+ final long fieldId = fieldFlags | ((long) 62 & 0x0ffffffffL);
+
+ final Test.All all = new Test.All();
+ all.uint64FieldPacked = val;
+
+ final byte[] proto = MessageNano.toByteArray(all);
+
+ final ProtoInputStream pi = new ProtoInputStream(proto);
+ final Test.All readback = Test.All.parseFrom(proto);
+
+ long[] result = new long[val.length];
+ int index = 0;
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId:
+ result[index++] = pi.readLong(fieldId);
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ }
+
+ assertEquals(readback.uint64FieldPacked.length, result.length);
+ for (int i = 0; i < result.length; i++) {
+ assertEquals(readback.uint64FieldPacked[i], result[i]);
+ }
+ }
+
+ /**
+ * Test that using the wrong read method throws an exception
+ */
+ public void testBadReadType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ };
+
+ ProtoInputStream pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readFloat(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readDouble(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readInt(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBoolean(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readBytes(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+
+ pi = new ProtoInputStream(protobuf);
+ pi.isNextField(fieldId1);
+ try {
+ pi.readString(fieldId1);
+ fail("Should have throw IllegalArgumentException");
+ } catch (IllegalArgumentException iae) {
+ // good
+ }
+ }
+
+ /**
+ * Test that unexpected wrong wire types will throw an exception
+ */
+ public void testBadWireType() throws IOException {
+ final long fieldFlags = ProtoStream.FIELD_COUNT_SINGLE | ProtoStream.FIELD_TYPE_UINT64;
+
+ final long fieldId1 = fieldFlags | ((long) 1 & 0x0ffffffffL);
+ final long fieldId2 = fieldFlags | ((long) 2 & 0x0ffffffffL);
+ final long fieldId3 = fieldFlags | ((long) 3 & 0x0ffffffffL);
+ final long fieldId6 = fieldFlags | ((long) 6 & 0x0ffffffffL);
+
+ final byte[] protobuf = new byte[]{
+ // 1 : varint -> 1
+ (byte) 0x08,
+ (byte) 0x01,
+ // 2 : fixed64 -> 0x1
+ (byte) 0x11,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ // 3 : length delimited -> { 1 }
+ (byte) 0x1a,
+ (byte) 0x01,
+ (byte) 0x01,
+ // 6 : fixed32
+ (byte) 0x35,
+ (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ };
+
+ InputStream stream = new ByteArrayInputStream(protobuf);
+ final ProtoInputStream pi = new ProtoInputStream(stream);
+
+ while (pi.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+ try {
+ switch (pi.getFieldNumber()) {
+ case (int) fieldId1:
+ pi.readLong(fieldId1);
+ // don't fail, varint is ok
+ break;
+ case (int) fieldId2:
+ pi.readLong(fieldId2);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ case (int) fieldId3:
+ pi.readLong(fieldId3);
+ // don't fail, length delimited is ok (represents packed uint64)
+ break;
+ case (int) fieldId6:
+ pi.readLong(fieldId6);
+ fail("Should have thrown a WireTypeMismatchException");
+ break;
+ default:
+ fail("Unexpected field id " + pi.getFieldNumber());
+ }
+ } catch (WireTypeMismatchException wtme) {
+ // good
+ }
+ }
+ stream.close();
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoTests.java b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoTests.java
new file mode 100644
index 000000000000..cdf6ae20f370
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/ProtoTests.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test.protoinputstream;
+
+import junit.framework.TestSuite;
+
+public class ProtoTests {
+ public static TestSuite suite() {
+ TestSuite suite = new TestSuite(ProtoTests.class.getName());
+
+ suite.addTestSuite(ProtoInputStreamDoubleTest.class);
+ suite.addTestSuite(ProtoInputStreamFloatTest.class);
+ suite.addTestSuite(ProtoInputStreamInt32Test.class);
+ suite.addTestSuite(ProtoInputStreamInt64Test.class);
+ suite.addTestSuite(ProtoInputStreamUInt32Test.class);
+ suite.addTestSuite(ProtoInputStreamUInt64Test.class);
+ suite.addTestSuite(ProtoInputStreamSInt32Test.class);
+ suite.addTestSuite(ProtoInputStreamSInt64Test.class);
+ suite.addTestSuite(ProtoInputStreamFixed32Test.class);
+ suite.addTestSuite(ProtoInputStreamFixed64Test.class);
+ suite.addTestSuite(ProtoInputStreamSFixed32Test.class);
+ suite.addTestSuite(ProtoInputStreamSFixed64Test.class);
+ suite.addTestSuite(ProtoInputStreamBoolTest.class);
+ suite.addTestSuite(ProtoInputStreamStringTest.class);
+ suite.addTestSuite(ProtoInputStreamBytesTest.class);
+ suite.addTestSuite(ProtoInputStreamEnumTest.class);
+ suite.addTestSuite(ProtoInputStreamObjectTest.class);
+
+ return suite;
+ }
+}
diff --git a/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/test.proto b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/test.proto
new file mode 100644
index 000000000000..9ff1d7e2d19a
--- /dev/null
+++ b/tests/ProtoInputStreamTests/src/com/android/test/protoinputstream/test.proto
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+syntax = "proto2";
+
+package com.android.test.protoinputstream;
+
+/**
+ * Enum that outside the scope of any classes.
+ */
+enum Outside {
+ OUTSIDE_0 = 0;
+ OUTSIDE_1 = 1;
+};
+
+/**
+ * Message that is recursive.
+ */
+message Nested {
+ optional int32 data = 10001;
+ optional Nested nested = 10002;
+};
+
+/**
+ * Message with all of the field types.
+ */
+message All {
+ /**
+ * Enum that is inside the scope of a class.
+ */
+ enum Inside {
+ option allow_alias = true;
+ INSIDE_0 = 0;
+ INSIDE_1 = 1;
+ INSIDE_1A = 1;
+ };
+
+ optional double double_field = 10;
+ repeated double double_field_repeated = 11;
+ repeated double double_field_packed = 12 [packed=true];
+
+ optional float float_field = 20;
+ repeated float float_field_repeated = 21;
+ repeated float float_field_packed = 22 [packed=true];
+
+ optional int32 int32_field = 30;
+ repeated int32 int32_field_repeated = 31;
+ repeated int32 int32_field_packed = 32 [packed=true];
+
+ optional int64 int64_field = 40;
+ repeated int64 int64_field_repeated = 41;
+ repeated int64 int64_field_packed = 42 [packed=true];
+
+ optional uint32 uint32_field = 50;
+ repeated uint32 uint32_field_repeated = 51;
+ repeated uint32 uint32_field_packed = 52 [packed=true];
+
+ optional uint64 uint64_field = 60;
+ repeated uint64 uint64_field_repeated = 61;
+ repeated uint64 uint64_field_packed = 62 [packed=true];
+
+ optional sint32 sint32_field = 70;
+ repeated sint32 sint32_field_repeated = 71;
+ repeated sint32 sint32_field_packed = 72 [packed=true];
+
+ optional sint64 sint64_field = 80;
+ repeated sint64 sint64_field_repeated = 81;
+ repeated sint64 sint64_field_packed = 82 [packed=true];
+
+ optional fixed32 fixed32_field = 90;
+ repeated fixed32 fixed32_field_repeated = 91;
+ repeated fixed32 fixed32_field_packed = 92 [packed=true];
+
+ optional fixed64 fixed64_field = 100;
+ repeated fixed64 fixed64_field_repeated = 101;
+ repeated fixed64 fixed64_field_packed = 102 [packed=true];
+
+ optional sfixed32 sfixed32_field = 110;
+ repeated sfixed32 sfixed32_field_repeated = 111;
+ repeated sfixed32 sfixed32_field_packed = 112 [packed=true];
+
+ optional sfixed64 sfixed64_field = 120;
+ repeated sfixed64 sfixed64_field_repeated = 121;
+ repeated sfixed64 sfixed64_field_packed = 122 [packed=true];
+
+ optional bool bool_field = 130;
+ repeated bool bool_field_repeated = 131;
+ repeated bool bool_field_packed = 132 [packed=true];
+
+ optional string string_field = 140;
+ repeated string string_field_repeated = 141;
+
+ optional bytes bytes_field = 150;
+ repeated bytes bytes_field_repeated = 151;
+
+ optional Outside outside_field = 160;
+ repeated Outside outside_field_repeated = 161;
+ repeated Outside outside_field_packed = 162 [packed=true];
+
+ optional Nested nested_field = 170;
+ repeated Nested nested_field_repeated = 171;
+};
diff --git a/tests/net/Android.bp b/tests/net/Android.bp
index 70b408949dea..c8ef82ec9acc 100644
--- a/tests/net/Android.bp
+++ b/tests/net/Android.bp
@@ -4,6 +4,7 @@
java_defaults {
name: "FrameworksNetTests-jni-defaults",
static_libs: [
+ "FrameworksNetCommonTests",
"frameworks-base-testutils",
"framework-protos",
"androidx.test.rules",
diff --git a/tests/net/common/Android.bp b/tests/net/common/Android.bp
new file mode 100644
index 000000000000..0a1ac75aac80
--- /dev/null
+++ b/tests/net/common/Android.bp
@@ -0,0 +1,29 @@
+//
+// Copyright (C) 2019 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.
+//
+
+// Tests in this folder are included both in unit tests and CTS.
+// They must be fast and stable, and exercise public or test APIs.
+java_library {
+ name: "FrameworksNetCommonTests",
+ srcs: ["java/**/*.java"],
+ static_libs: [
+ "androidx.test.rules",
+ "junit",
+ ],
+ libs: [
+ "android.test.base.stubs",
+ ],
+} \ No newline at end of file
diff --git a/tests/net/java/android/net/IpPrefixTest.java b/tests/net/common/java/android/net/IpPrefixTest.java
index abf019afed44..719960d48604 100644
--- a/tests/net/java/android/net/IpPrefixTest.java
+++ b/tests/net/common/java/android/net/IpPrefixTest.java
@@ -39,7 +39,7 @@ import java.util.Random;
@SmallTest
public class IpPrefixTest {
- private static InetAddress Address(String addr) {
+ private static InetAddress address(String addr) {
return InetAddress.parseNumericAddress(addr);
}
@@ -58,59 +58,59 @@ public class IpPrefixTest {
try {
p = new IpPrefix((byte[]) null, 9);
fail("Expected NullPointerException: null byte array");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
try {
p = new IpPrefix((InetAddress) null, 10);
fail("Expected NullPointerException: null InetAddress");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
try {
p = new IpPrefix((String) null);
fail("Expected NullPointerException: null String");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
try {
byte[] b2 = {1, 2, 3, 4, 5};
p = new IpPrefix(b2, 29);
fail("Expected IllegalArgumentException: invalid array length");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("1.2.3.4");
fail("Expected IllegalArgumentException: no prefix length");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("1.2.3.4/");
fail("Expected IllegalArgumentException: empty prefix length");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("foo/32");
fail("Expected IllegalArgumentException: invalid address");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("1/32");
fail("Expected IllegalArgumentException: deprecated IPv4 format");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("1.2.3.256/32");
fail("Expected IllegalArgumentException: invalid IPv4 address");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("foo/32");
fail("Expected IllegalArgumentException: non-address");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
try {
p = new IpPrefix("f00:::/32");
fail("Expected IllegalArgumentException: invalid IPv6 address");
- } catch(IllegalArgumentException expected) {}
+ } catch (IllegalArgumentException expected) { }
}
@Test
@@ -132,17 +132,17 @@ public class IpPrefixTest {
try {
p = new IpPrefix(IPV4_BYTES, 33);
fail("Expected IllegalArgumentException: invalid prefix length");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
try {
p = new IpPrefix(IPV4_BYTES, 128);
fail("Expected IllegalArgumentException: invalid prefix length");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
try {
p = new IpPrefix(IPV4_BYTES, -1);
fail("Expected IllegalArgumentException: negative prefix length");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
p = new IpPrefix(IPV6_BYTES, 128);
assertEquals("2001:db8:dead:beef:f00::a0/128", p.toString());
@@ -162,12 +162,12 @@ public class IpPrefixTest {
try {
p = new IpPrefix(IPV6_BYTES, -1);
fail("Expected IllegalArgumentException: negative prefix length");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
try {
p = new IpPrefix(IPV6_BYTES, 129);
fail("Expected IllegalArgumentException: negative prefix length");
- } catch(RuntimeException expected) {}
+ } catch (RuntimeException expected) { }
}
@@ -226,28 +226,28 @@ public class IpPrefixTest {
@Test
public void testContainsInetAddress() {
IpPrefix p = new IpPrefix("2001:db8:f00::ace:d00d/127");
- assertTrue(p.contains(Address("2001:db8:f00::ace:d00c")));
- assertTrue(p.contains(Address("2001:db8:f00::ace:d00d")));
- assertFalse(p.contains(Address("2001:db8:f00::ace:d00e")));
- assertFalse(p.contains(Address("2001:db8:f00::bad:d00d")));
- assertFalse(p.contains(Address("2001:4868:4860::8888")));
- assertFalse(p.contains(Address("8.8.8.8")));
+ assertTrue(p.contains(address("2001:db8:f00::ace:d00c")));
+ assertTrue(p.contains(address("2001:db8:f00::ace:d00d")));
+ assertFalse(p.contains(address("2001:db8:f00::ace:d00e")));
+ assertFalse(p.contains(address("2001:db8:f00::bad:d00d")));
+ assertFalse(p.contains(address("2001:4868:4860::8888")));
+ assertFalse(p.contains(address("8.8.8.8")));
p = new IpPrefix("192.0.2.0/23");
- assertTrue(p.contains(Address("192.0.2.43")));
- assertTrue(p.contains(Address("192.0.3.21")));
- assertFalse(p.contains(Address("192.0.0.21")));
- assertFalse(p.contains(Address("8.8.8.8")));
- assertFalse(p.contains(Address("2001:4868:4860::8888")));
+ assertTrue(p.contains(address("192.0.2.43")));
+ assertTrue(p.contains(address("192.0.3.21")));
+ assertFalse(p.contains(address("192.0.0.21")));
+ assertFalse(p.contains(address("8.8.8.8")));
+ assertFalse(p.contains(address("2001:4868:4860::8888")));
IpPrefix ipv6Default = new IpPrefix("::/0");
- assertTrue(ipv6Default.contains(Address("2001:db8::f00")));
- assertFalse(ipv6Default.contains(Address("192.0.2.1")));
+ assertTrue(ipv6Default.contains(address("2001:db8::f00")));
+ assertFalse(ipv6Default.contains(address("192.0.2.1")));
IpPrefix ipv4Default = new IpPrefix("0.0.0.0/0");
- assertTrue(ipv4Default.contains(Address("255.255.255.255")));
- assertTrue(ipv4Default.contains(Address("192.0.2.1")));
- assertFalse(ipv4Default.contains(Address("2001:db8::f00")));
+ assertTrue(ipv4Default.contains(address("255.255.255.255")));
+ assertTrue(ipv4Default.contains(address("192.0.2.1")));
+ assertFalse(ipv4Default.contains(address("2001:db8::f00")));
}
@Test
@@ -315,10 +315,10 @@ public class IpPrefixTest {
p = new IpPrefix(b, random.nextInt(129));
}
if (p.equals(oldP)) {
- assertEquals(p.hashCode(), oldP.hashCode());
+ assertEquals(p.hashCode(), oldP.hashCode());
}
if (p.hashCode() != oldP.hashCode()) {
- assertNotEquals(p, oldP);
+ assertNotEquals(p, oldP);
}
}
}
@@ -332,9 +332,9 @@ public class IpPrefixTest {
new IpPrefix("0.0.0.0/0"),
};
for (int i = 0; i < prefixes.length; i++) {
- for (int j = i + 1; j < prefixes.length; j++) {
- assertNotEquals(prefixes[i].hashCode(), prefixes[j].hashCode());
- }
+ for (int j = i + 1; j < prefixes.length; j++) {
+ assertNotEquals(prefixes[i].hashCode(), prefixes[j].hashCode());
+ }
}
}
@@ -371,8 +371,8 @@ public class IpPrefixTest {
}
public void assertParcelingIsLossless(IpPrefix p) {
- IpPrefix p2 = passThroughParcel(p);
- assertEquals(p, p2);
+ IpPrefix p2 = passThroughParcel(p);
+ assertEquals(p, p2);
}
@Test
diff --git a/tests/net/java/android/net/NetworkStackTest.java b/tests/net/java/android/net/NetworkStackTest.java
new file mode 100644
index 000000000000..f7c6c99ba622
--- /dev/null
+++ b/tests/net/java/android/net/NetworkStackTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.net;
+
+import static android.Manifest.permission.NETWORK_STACK;
+import static android.content.pm.PackageManager.PERMISSION_DENIED;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
+import static android.net.NetworkStack.checkNetworkStackPermission;
+import static android.net.NetworkStack.checkNetworkStackPermissionOr;
+
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class NetworkStackTest {
+ private static final String [] OTHER_PERMISSION = {"otherpermission1", "otherpermission2"};
+
+ @Mock Context mCtx;
+
+ @Before public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testCheckNetworkStackPermission() throws Exception {
+ when(mCtx.checkCallingOrSelfPermission(eq(NETWORK_STACK))).thenReturn(PERMISSION_GRANTED);
+ when(mCtx.checkCallingOrSelfPermission(eq(PERMISSION_MAINLINE_NETWORK_STACK)))
+ .thenReturn(PERMISSION_DENIED);
+ checkNetworkStackPermission(mCtx);
+ checkNetworkStackPermissionOr(mCtx, OTHER_PERMISSION);
+
+ when(mCtx.checkCallingOrSelfPermission(eq(NETWORK_STACK))).thenReturn(PERMISSION_DENIED);
+ when(mCtx.checkCallingOrSelfPermission(eq(PERMISSION_MAINLINE_NETWORK_STACK)))
+ .thenReturn(PERMISSION_GRANTED);
+ checkNetworkStackPermission(mCtx);
+ checkNetworkStackPermissionOr(mCtx, OTHER_PERMISSION);
+
+ when(mCtx.checkCallingOrSelfPermission(any())).thenReturn(PERMISSION_DENIED);
+
+ try {
+ checkNetworkStackPermissionOr(mCtx, OTHER_PERMISSION);
+ } catch (SecurityException e) {
+ // Expect to get a SecurityException
+ return;
+ }
+
+ fail("Expect fail but permission granted.");
+ }
+}
diff --git a/tests/net/java/android/net/netlink/InetDiagSocketTest.java b/tests/net/java/android/net/netlink/InetDiagSocketTest.java
index b6038aba089c..2adbb06babf1 100644
--- a/tests/net/java/android/net/netlink/InetDiagSocketTest.java
+++ b/tests/net/java/android/net/netlink/InetDiagSocketTest.java
@@ -45,6 +45,7 @@ import androidx.test.runner.AndroidJUnit4;
import libcore.util.HexEncoding;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -189,6 +190,7 @@ public class InetDiagSocketTest {
udp.close();
}
+ @Ignore
@Test
public void testGetConnectionOwnerUid() throws Exception {
checkGetConnectionOwnerUid("::", null);
diff --git a/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java b/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java
index 68ff777a0160..22a2c94fc194 100644
--- a/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java
+++ b/tests/net/java/com/android/server/IpSecServiceRefcountedResourceTest.java
@@ -18,6 +18,7 @@ package com.android.server;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Matchers.eq;
@@ -134,11 +135,11 @@ public class IpSecServiceRefcountedResourceTest {
IBinder binderMock = mock(IBinder.class);
doThrow(new RemoteException()).when(binderMock).linkToDeath(anyObject(), anyInt());
- RefcountedResource<IResource> refcountedResource = getTestRefcountedResource(binderMock);
-
- // Verify that cleanup is performed (Spy limitations prevent verification of method calls
- // for binder death scenario; check refcount to determine if cleanup was performed.)
- assertEquals(-1, refcountedResource.mRefCount);
+ try {
+ getTestRefcountedResource(binderMock);
+ fail("Expected exception to propogate when binder fails to link to death");
+ } catch (RuntimeException expected) {
+ }
}
@Test
diff --git a/tests/net/java/com/android/server/IpSecServiceTest.java b/tests/net/java/com/android/server/IpSecServiceTest.java
index b5c3e9287467..4a35015044ff 100644
--- a/tests/net/java/com/android/server/IpSecServiceTest.java
+++ b/tests/net/java/com/android/server/IpSecServiceTest.java
@@ -156,10 +156,21 @@ public class IpSecServiceTest {
@Test
public void testOpenAndCloseUdpEncapsulationSocket() throws Exception {
- int localport = findUnusedPort();
+ int localport = -1;
+ IpSecUdpEncapResponse udpEncapResp = null;
+
+ for (int i = 0; i < IpSecService.MAX_PORT_BIND_ATTEMPTS; i++) {
+ localport = findUnusedPort();
+
+ udpEncapResp = mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
+ assertNotNull(udpEncapResp);
+ if (udpEncapResp.status == IpSecManager.Status.OK) {
+ break;
+ }
+
+ // Else retry to reduce possibility for port-bind failures.
+ }
- IpSecUdpEncapResponse udpEncapResp =
- mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
assertNotNull(udpEncapResp);
assertEquals(IpSecManager.Status.OK, udpEncapResp.status);
assertEquals(localport, udpEncapResp.port);
@@ -204,12 +215,11 @@ public class IpSecServiceTest {
@Test
public void testOpenUdpEncapsulationSocketAfterClose() throws Exception {
- int localport = findUnusedPort();
IpSecUdpEncapResponse udpEncapResp =
- mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
+ mIpSecService.openUdpEncapsulationSocket(0, new Binder());
assertNotNull(udpEncapResp);
assertEquals(IpSecManager.Status.OK, udpEncapResp.status);
- assertEquals(localport, udpEncapResp.port);
+ int localport = udpEncapResp.port;
mIpSecService.closeUdpEncapsulationSocket(udpEncapResp.resourceId);
udpEncapResp.fileDescriptor.close();
@@ -226,12 +236,11 @@ public class IpSecServiceTest {
*/
@Test
public void testUdpEncapPortNotReleased() throws Exception {
- int localport = findUnusedPort();
IpSecUdpEncapResponse udpEncapResp =
- mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
+ mIpSecService.openUdpEncapsulationSocket(0, new Binder());
assertNotNull(udpEncapResp);
assertEquals(IpSecManager.Status.OK, udpEncapResp.status);
- assertEquals(localport, udpEncapResp.port);
+ int localport = udpEncapResp.port;
udpEncapResp.fileDescriptor.close();
@@ -273,14 +282,11 @@ public class IpSecServiceTest {
@Test
public void testOpenUdpEncapsulationSocketTwice() throws Exception {
- int localport = findUnusedPort();
-
IpSecUdpEncapResponse udpEncapResp =
- mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
+ mIpSecService.openUdpEncapsulationSocket(0, new Binder());
assertNotNull(udpEncapResp);
assertEquals(IpSecManager.Status.OK, udpEncapResp.status);
- assertEquals(localport, udpEncapResp.port);
- mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
+ int localport = udpEncapResp.port;
IpSecUdpEncapResponse testUdpEncapResp =
mIpSecService.openUdpEncapsulationSocket(localport, new Binder());
diff --git a/tests/utils/testutils/java/com/android/internal/util/test/BidirectionalAsyncChannelServer.java b/tests/utils/testutils/java/com/android/internal/util/test/BidirectionalAsyncChannelServer.java
index 49c833228b6c..ecf271601b6b 100644
--- a/tests/utils/testutils/java/com/android/internal/util/test/BidirectionalAsyncChannelServer.java
+++ b/tests/utils/testutils/java/com/android/internal/util/test/BidirectionalAsyncChannelServer.java
@@ -27,6 +27,7 @@ import com.android.internal.util.AsyncChannel;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
/**
* Provides an interface for the server side implementation of a bidirectional channel as described
@@ -83,4 +84,8 @@ public class BidirectionalAsyncChannelServer {
return mMessenger;
}
+ public Set<Messenger> getClientMessengers() {
+ return mClients.keySet();
+ }
+
}
diff --git a/tools/aapt2/link/TableMerger.cpp b/tools/aapt2/link/TableMerger.cpp
index a24e0d2f93d0..c0802e60103a 100644
--- a/tools/aapt2/link/TableMerger.cpp
+++ b/tools/aapt2/link/TableMerger.cpp
@@ -138,17 +138,29 @@ static bool MergeEntry(IAaptContext* context, const Source& src,
if (src_entry->overlayable_item) {
if (dst_entry->overlayable_item) {
- // Do not allow a resource with an overlayable declaration to have that overlayable
- // declaration redefined
- context->GetDiagnostics()->Error(DiagMessage(src_entry->overlayable_item.value().source)
- << "duplicate overlayable declaration for resource '"
- << src_entry->name << "'");
- context->GetDiagnostics()->Error(DiagMessage(dst_entry->overlayable_item.value().source)
- << "previous declaration here");
- return false;
- } else {
- dst_entry->overlayable_item = std::move(src_entry->overlayable_item);
+ CHECK(src_entry->overlayable_item.value().overlayable != nullptr);
+ Overlayable* src_overlayable = src_entry->overlayable_item.value().overlayable.get();
+
+ CHECK(dst_entry->overlayable_item.value().overlayable != nullptr);
+ Overlayable* dst_overlayable = dst_entry->overlayable_item.value().overlayable.get();
+
+ if (src_overlayable->name != dst_overlayable->name
+ || src_overlayable->actor != dst_overlayable->actor
+ || src_entry->overlayable_item.value().policies !=
+ dst_entry->overlayable_item.value().policies) {
+
+ // Do not allow a resource with an overlayable declaration to have that overlayable
+ // declaration redefined.
+ context->GetDiagnostics()->Error(DiagMessage(src_entry->overlayable_item.value().source)
+ << "duplicate overlayable declaration for resource '"
+ << src_entry->name << "'");
+ context->GetDiagnostics()->Error(DiagMessage(dst_entry->overlayable_item.value().source)
+ << "previous declaration here");
+ return false;
+ }
}
+
+ dst_entry->overlayable_item = std::move(src_entry->overlayable_item);
}
return true;
diff --git a/tools/aapt2/link/TableMerger_test.cpp b/tools/aapt2/link/TableMerger_test.cpp
index ad3674e16774..9dd31e682937 100644
--- a/tools/aapt2/link/TableMerger_test.cpp
+++ b/tools/aapt2/link/TableMerger_test.cpp
@@ -521,6 +521,35 @@ TEST_F(TableMergerTest, SameResourceDifferentNameFail) {
.Build();
auto overlayable_second = std::make_shared<Overlayable>("ThemeResources",
+ "overlay://customization");
+ OverlayableItem overlayable_item_second(overlayable_second);
+ overlayable_item_second.policies |= OverlayableItem::Policy::kProduct;
+ std::unique_ptr<ResourceTable> table_b =
+ test::ResourceTableBuilder()
+ .SetPackageId("com.app.a", 0x7f)
+ .SetOverlayable("bool/foo", overlayable_item_second)
+ .Build();
+
+ ResourceTable final_table;
+ TableMergerOptions options;
+ options.auto_add_overlay = true;
+ TableMerger merger(context_.get(), &final_table, options);
+ ASSERT_TRUE(merger.Merge({}, table_a.get(), false /*overlay*/));
+ ASSERT_FALSE(merger.Merge({}, table_b.get(), false /*overlay*/));
+}
+
+TEST_F(TableMergerTest, SameResourceDifferentActorFail) {
+ auto overlayable_first = std::make_shared<Overlayable>("CustomizableResources",
+ "overlay://customization");
+ OverlayableItem overlayable_item_first(overlayable_first);
+ overlayable_item_first.policies |= OverlayableItem::Policy::kProduct;
+ std::unique_ptr<ResourceTable> table_a =
+ test::ResourceTableBuilder()
+ .SetPackageId("com.app.a", 0x7f)
+ .SetOverlayable("bool/foo", overlayable_item_first)
+ .Build();
+
+ auto overlayable_second = std::make_shared<Overlayable>("CustomizableResources",
"overlay://theme");
OverlayableItem overlayable_item_second(overlayable_second);
overlayable_item_second.policies |= OverlayableItem::Policy::kProduct;
@@ -538,7 +567,36 @@ TEST_F(TableMergerTest, SameResourceDifferentNameFail) {
ASSERT_FALSE(merger.Merge({}, table_b.get(), false /*overlay*/));
}
-TEST_F(TableMergerTest, SameResourceSameNameFail) {
+TEST_F(TableMergerTest, SameResourceDifferentPoliciesFail) {
+ auto overlayable_first = std::make_shared<Overlayable>("CustomizableResources",
+ "overlay://customization");
+ OverlayableItem overlayable_item_first(overlayable_first);
+ overlayable_item_first.policies |= OverlayableItem::Policy::kProduct;
+ std::unique_ptr<ResourceTable> table_a =
+ test::ResourceTableBuilder()
+ .SetPackageId("com.app.a", 0x7f)
+ .SetOverlayable("bool/foo", overlayable_item_first)
+ .Build();
+
+ auto overlayable_second = std::make_shared<Overlayable>("CustomizableResources",
+ "overlay://customization");
+ OverlayableItem overlayable_item_second(overlayable_second);
+ overlayable_item_second.policies |= OverlayableItem::Policy::kSignature;
+ std::unique_ptr<ResourceTable> table_b =
+ test::ResourceTableBuilder()
+ .SetPackageId("com.app.a", 0x7f)
+ .SetOverlayable("bool/foo", overlayable_item_second)
+ .Build();
+
+ ResourceTable final_table;
+ TableMergerOptions options;
+ options.auto_add_overlay = true;
+ TableMerger merger(context_.get(), &final_table, options);
+ ASSERT_TRUE(merger.Merge({}, table_a.get(), false /*overlay*/));
+ ASSERT_FALSE(merger.Merge({}, table_b.get(), false /*overlay*/));
+}
+
+TEST_F(TableMergerTest, SameResourceSameOverlayable) {
auto overlayable = std::make_shared<Overlayable>("CustomizableResources",
"overlay://customization");
@@ -551,7 +609,7 @@ TEST_F(TableMergerTest, SameResourceSameNameFail) {
.Build();
OverlayableItem overlayable_item_second(overlayable);
- overlayable_item_second.policies |= OverlayableItem::Policy::kSystem;
+ overlayable_item_second.policies |= OverlayableItem::Policy::kProduct;
std::unique_ptr<ResourceTable> table_b =
test::ResourceTableBuilder()
.SetPackageId("com.app.a", 0x7f)
@@ -563,7 +621,7 @@ TEST_F(TableMergerTest, SameResourceSameNameFail) {
options.auto_add_overlay = true;
TableMerger merger(context_.get(), &final_table, options);
ASSERT_TRUE(merger.Merge({}, table_a.get(), false /*overlay*/));
- ASSERT_FALSE(merger.Merge({}, table_b.get(), false /*overlay*/));
+ ASSERT_TRUE(merger.Merge({}, table_b.get(), false /*overlay*/));
}
} // namespace aapt
diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp
index 4e6d07303b02..1aad4be5d66f 100644
--- a/tools/stats_log_api_gen/main.cpp
+++ b/tools/stats_log_api_gen/main.cpp
@@ -1177,7 +1177,7 @@ static int write_java_method_for_module(
// Initialize the buffer with list data type.
fprintf(out, " buff[pos] = LIST_TYPE;\n");
- fprintf(out, " buff[pos + 1] = %lu;\n", signature.size() + 2);
+ fprintf(out, " buff[pos + 1] = %zu;\n", signature.size() + 2);
fprintf(out, " pos += LIST_TYPE_OVERHEAD;\n");
// Write timestamp.
diff --git a/wifi/java/android/net/wifi/aware/ConfigRequest.java b/wifi/java/android/net/wifi/aware/ConfigRequest.java
index 1e46d1b16feb..b07d8edde3d4 100644
--- a/wifi/java/android/net/wifi/aware/ConfigRequest.java
+++ b/wifi/java/android/net/wifi/aware/ConfigRequest.java
@@ -213,7 +213,7 @@ public final class ConfigRequest implements Parcelable {
* Builder used to build {@link ConfigRequest} objects.
*/
public static final class Builder {
- private boolean mSupport5gBand = false;
+ private boolean mSupport5gBand = true;
private int mMasterPreference = 0;
private int mClusterLow = CLUSTER_ID_MIN;
private int mClusterHigh = CLUSTER_ID_MAX;
diff --git a/wifi/java/android/net/wifi/aware/PublishConfig.java b/wifi/java/android/net/wifi/aware/PublishConfig.java
index f0c7967d653b..1886b7ef4c8d 100644
--- a/wifi/java/android/net/wifi/aware/PublishConfig.java
+++ b/wifi/java/android/net/wifi/aware/PublishConfig.java
@@ -172,8 +172,9 @@ public final class PublishConfig implements Parcelable {
@Override
public int hashCode() {
- return Objects.hash(mServiceName, mServiceSpecificInfo, mMatchFilter, mPublishType, mTtlSec,
- mEnableTerminateNotification, mEnableRanging);
+ return Objects.hash(Arrays.hashCode(mServiceName), Arrays.hashCode(mServiceSpecificInfo),
+ Arrays.hashCode(mMatchFilter), mPublishType, mTtlSec, mEnableTerminateNotification,
+ mEnableRanging);
}
/**
diff --git a/wifi/java/android/net/wifi/aware/SubscribeConfig.java b/wifi/java/android/net/wifi/aware/SubscribeConfig.java
index f47749039a26..f0f758170bf2 100644
--- a/wifi/java/android/net/wifi/aware/SubscribeConfig.java
+++ b/wifi/java/android/net/wifi/aware/SubscribeConfig.java
@@ -205,8 +205,10 @@ public final class SubscribeConfig implements Parcelable {
@Override
public int hashCode() {
- int result = Objects.hash(mServiceName, mServiceSpecificInfo, mMatchFilter, mSubscribeType,
- mTtlSec, mEnableTerminateNotification, mMinDistanceMmSet, mMaxDistanceMmSet);
+ int result = Objects.hash(Arrays.hashCode(mServiceName),
+ Arrays.hashCode(mServiceSpecificInfo), Arrays.hashCode(mMatchFilter),
+ mSubscribeType, mTtlSec, mEnableTerminateNotification, mMinDistanceMmSet,
+ mMaxDistanceMmSet);
if (mMinDistanceMmSet) {
result = Objects.hash(result, mMinDistanceMm);
diff --git a/wifi/java/android/net/wifi/aware/WifiAwareManager.java b/wifi/java/android/net/wifi/aware/WifiAwareManager.java
index c9b0b12fa87c..41a412b1d134 100644
--- a/wifi/java/android/net/wifi/aware/WifiAwareManager.java
+++ b/wifi/java/android/net/wifi/aware/WifiAwareManager.java
@@ -406,7 +406,7 @@ public class WifiAwareManager {
if (!WifiAwareUtils.isLegacyVersion(mContext, Build.VERSION_CODES.Q)) {
throw new UnsupportedOperationException(
- "API not deprecated - use WifiAwareNetworkSpecifier.Builder");
+ "API deprecated - use WifiAwareNetworkSpecifier.Builder");
}
if (role != WIFI_AWARE_DATA_PATH_ROLE_INITIATOR
diff --git a/wifi/tests/src/android/net/wifi/WifiManagerTest.java b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
index fa17db1e956c..b75a1acf87c9 100644
--- a/wifi/tests/src/android/net/wifi/WifiManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
@@ -36,6 +36,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyList;
@@ -53,6 +54,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.pm.ApplicationInfo;
+import android.net.DhcpInfo;
import android.net.wifi.WifiManager.LocalOnlyHotspotCallback;
import android.net.wifi.WifiManager.LocalOnlyHotspotObserver;
import android.net.wifi.WifiManager.LocalOnlyHotspotReservation;
@@ -62,6 +64,7 @@ import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback;
import android.net.wifi.WifiManager.OnWifiUsabilityStatsListener;
import android.net.wifi.WifiManager.SoftApCallback;
import android.net.wifi.WifiManager.TrafficStateCallback;
+import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -92,6 +95,7 @@ public class WifiManagerTest {
private static final int ERROR_NOT_SET = -1;
private static final int ERROR_TEST_REASON = 5;
private static final int TEST_UID = 14553;
+ private static final int TEST_NETWORK_ID = 143;
private static final String TEST_PACKAGE_NAME = "TestPackage";
private static final String TEST_COUNTRY_CODE = "US";
private static final String[] TEST_MAC_ADDRESSES = {"da:a1:19:0:0:0"};
@@ -118,6 +122,7 @@ public class WifiManagerTest {
MockitoAnnotations.initMocks(this);
mLooper = new TestLooper();
mHandler = spy(new Handler(mLooper.getLooper()));
+ mApplicationInfo.targetSdkVersion = Build.VERSION_CODES.Q;
when(mContext.getApplicationInfo()).thenReturn(mApplicationInfo);
when(mContext.getOpPackageName()).thenReturn(TEST_PACKAGE_NAME);
@@ -1438,4 +1443,200 @@ i * Verify that a call to cancel WPS immediately returns a failure.
.thenReturn(new Long(~WifiManager.WIFI_FEATURE_DPP));
assertFalse(mWifiManager.isEasyConnectSupported());
}
+
+ /**
+ * Test behavior of {@link WifiManager#addNetwork(WifiConfiguration)}
+ * @throws Exception
+ */
+ @Test
+ public void testAddNetwork() throws Exception {
+ WifiConfiguration configuration = new WifiConfiguration();
+ when(mWifiService.addOrUpdateNetwork(any(), anyString()))
+ .thenReturn(TEST_NETWORK_ID);
+
+ assertEquals(mWifiManager.addNetwork(configuration), TEST_NETWORK_ID);
+ verify(mWifiService).addOrUpdateNetwork(configuration, mContext.getOpPackageName());
+
+ // send a null config
+ assertEquals(mWifiManager.addNetwork(null), -1);
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#addNetwork(WifiConfiguration)}
+ * @throws Exception
+ */
+ @Test
+ public void testUpdateNetwork() throws Exception {
+ WifiConfiguration configuration = new WifiConfiguration();
+ when(mWifiService.addOrUpdateNetwork(any(), anyString()))
+ .thenReturn(TEST_NETWORK_ID);
+
+ configuration.networkId = TEST_NETWORK_ID;
+ assertEquals(mWifiManager.updateNetwork(configuration), TEST_NETWORK_ID);
+ verify(mWifiService).addOrUpdateNetwork(configuration, mContext.getOpPackageName());
+
+ // config with invalid network ID
+ configuration.networkId = -1;
+ assertEquals(mWifiManager.updateNetwork(configuration), -1);
+
+ // send a null config
+ assertEquals(mWifiManager.updateNetwork(null), -1);
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#enableNetwork(int, boolean)}
+ * @throws Exception
+ */
+ @Test
+ public void testEnableNetwork() throws Exception {
+ when(mWifiService.enableNetwork(anyInt(), anyBoolean(), anyString()))
+ .thenReturn(true);
+ assertTrue(mWifiManager.enableNetwork(TEST_NETWORK_ID, true));
+ verify(mWifiService).enableNetwork(TEST_NETWORK_ID, true, mContext.getOpPackageName());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#disableNetwork(int)}
+ * @throws Exception
+ */
+ @Test
+ public void testDisableNetwork() throws Exception {
+ when(mWifiService.disableNetwork(anyInt(), anyString()))
+ .thenReturn(true);
+ assertTrue(mWifiManager.disableNetwork(TEST_NETWORK_ID));
+ verify(mWifiService).disableNetwork(TEST_NETWORK_ID, mContext.getOpPackageName());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#disconnect()}
+ * @throws Exception
+ */
+ @Test
+ public void testDisconnect() throws Exception {
+ when(mWifiService.disconnect(anyString())).thenReturn(true);
+ assertTrue(mWifiManager.disconnect());
+ verify(mWifiService).disconnect(mContext.getOpPackageName());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#reconnect()}
+ * @throws Exception
+ */
+ @Test
+ public void testReconnect() throws Exception {
+ when(mWifiService.reconnect(anyString())).thenReturn(true);
+ assertTrue(mWifiManager.reconnect());
+ verify(mWifiService).reconnect(mContext.getOpPackageName());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#reassociate()}
+ * @throws Exception
+ */
+ @Test
+ public void testReassociate() throws Exception {
+ when(mWifiService.reassociate(anyString())).thenReturn(true);
+ assertTrue(mWifiManager.reassociate());
+ verify(mWifiService).reassociate(mContext.getOpPackageName());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#getSupportedFeatures()}
+ * @throws Exception
+ */
+ @Test
+ public void testGetSupportedFeatures() throws Exception {
+ long supportedFeatures =
+ WifiManager.WIFI_FEATURE_SCANNER
+ | WifiManager.WIFI_FEATURE_PASSPOINT
+ | WifiManager.WIFI_FEATURE_P2P;
+ when(mWifiService.getSupportedFeatures())
+ .thenReturn(Long.valueOf(supportedFeatures));
+
+ assertTrue(mWifiManager.isWifiScannerSupported());
+ assertTrue(mWifiManager.isPasspointSupported());
+ assertTrue(mWifiManager.isP2pSupported());
+ assertFalse(mWifiManager.isPortableHotspotSupported());
+ assertFalse(mWifiManager.is5GHzBandSupported());
+ assertFalse(mWifiManager.isDeviceToDeviceRttSupported());
+ assertFalse(mWifiManager.isDeviceToApRttSupported());
+ assertFalse(mWifiManager.isPreferredNetworkOffloadSupported());
+ assertFalse(mWifiManager.isAdditionalStaSupported());
+ assertFalse(mWifiManager.isTdlsSupported());
+ assertFalse(mWifiManager.isOffChannelTdlsSupported());
+ assertFalse(mWifiManager.isEnhancedPowerReportingSupported());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#getControllerActivityEnergyInfo()}
+ * @throws Exception
+ */
+ @Test
+ public void testGetControllerActivityEnergyInfo() throws Exception {
+ WifiActivityEnergyInfo activityEnergyInfo =
+ new WifiActivityEnergyInfo(5, 3, 3, new long[]{5L, 5L, 5L}, 5, 5, 5, 5);
+ when(mWifiService.reportActivityInfo()).thenReturn(activityEnergyInfo);
+
+ assertEquals(activityEnergyInfo, mWifiManager.getControllerActivityEnergyInfo());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#getConnectionInfo()}
+ * @throws Exception
+ */
+ @Test
+ public void testGetConnectionInfo() throws Exception {
+ WifiInfo wifiInfo = new WifiInfo();
+ when(mWifiService.getConnectionInfo(anyString())).thenReturn(wifiInfo);
+
+ assertEquals(wifiInfo, mWifiManager.getConnectionInfo());
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#isDualModeSupported()} ()}
+ * @throws Exception
+ */
+ @Test
+ public void testIsDualModeSupported() throws Exception {
+ when(mWifiService.needs5GHzToAnyApBandConversion()).thenReturn(true);
+ assertTrue(mWifiManager.isDualModeSupported());
+ verify(mWifiService).needs5GHzToAnyApBandConversion();
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#isDualBandSupported()}
+ * @throws Exception
+ */
+ @Test
+ public void testIsDualBandSupported() throws Exception {
+ when(mWifiService.isDualBandSupported()).thenReturn(true);
+ assertTrue(mWifiManager.isDualBandSupported());
+ verify(mWifiService).isDualBandSupported();
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#getDhcpInfo()}
+ * @throws Exception
+ */
+ @Test
+ public void testGetDhcpInfo() throws Exception {
+ DhcpInfo dhcpInfo = new DhcpInfo();
+
+ when(mWifiService.getDhcpInfo()).thenReturn(dhcpInfo);
+ assertEquals(dhcpInfo, mWifiManager.getDhcpInfo());
+ verify(mWifiService).getDhcpInfo();
+ }
+
+ /**
+ * Test behavior of {@link WifiManager#setWifiEnabled(boolean)}
+ * @throws Exception
+ */
+ @Test
+ public void testSetWifiEnabled() throws Exception {
+ when(mWifiService.setWifiEnabled(anyString(), anyBoolean())).thenReturn(true);
+ assertTrue(mWifiManager.setWifiEnabled(true));
+ verify(mWifiService).setWifiEnabled(mContext.getOpPackageName(), true);
+ assertTrue(mWifiManager.setWifiEnabled(false));
+ verify(mWifiService).setWifiEnabled(mContext.getOpPackageName(), false);
+ }
}
diff --git a/wifi/tests/src/android/net/wifi/WifiScannerTest.java b/wifi/tests/src/android/net/wifi/WifiScannerTest.java
index 76bfff065f4d..dd05b47fbd4f 100644
--- a/wifi/tests/src/android/net/wifi/WifiScannerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiScannerTest.java
@@ -18,10 +18,16 @@ package android.net.wifi;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.validateMockitoUsage;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
@@ -29,7 +35,10 @@ import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.PnoSettings.PnoNetwork;
import android.net.wifi.WifiScanner.ScanData;
import android.net.wifi.WifiScanner.ScanSettings;
+import android.os.Bundle;
import android.os.Handler;
+import android.os.Message;
+import android.os.Messenger;
import android.os.Parcel;
import android.os.test.TestLooper;
@@ -40,6 +49,7 @@ import com.android.internal.util.test.BidirectionalAsyncChannelServer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -71,6 +81,7 @@ public class WifiScannerTest {
private WifiScanner mWifiScanner;
private TestLooper mLooper;
private Handler mHandler;
+ private BidirectionalAsyncChannelServer mBidirectionalAsyncChannelServer;
/**
* Setup before tests.
@@ -79,10 +90,10 @@ public class WifiScannerTest {
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mLooper = new TestLooper();
- mHandler = mock(Handler.class);
- BidirectionalAsyncChannelServer server = new BidirectionalAsyncChannelServer(
+ mHandler = spy(new Handler(mLooper.getLooper()));
+ mBidirectionalAsyncChannelServer = new BidirectionalAsyncChannelServer(
mContext, mLooper.getLooper(), mHandler);
- when(mService.getMessenger()).thenReturn(server.getMessenger());
+ when(mService.getMessenger()).thenReturn(mBidirectionalAsyncChannelServer.getMessenger());
mWifiScanner = new WifiScanner(mContext, mService, mLooper.getLooper());
mLooper.dispatchAll();
}
@@ -230,4 +241,208 @@ public class WifiScannerTest {
parcel.setDataPosition(0); // Rewind data position back to the beginning for read.
return ScanData.CREATOR.createFromParcel(parcel);
}
+
+
+ /**
+ * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStartScan() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+
+ mWifiScanner.startScan(scanSettings, scanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message message = messageArgumentCaptor.getValue();
+ assertNotNull(message);
+
+ assertEquals(WifiScanner.CMD_START_SINGLE_SCAN, message.what);
+ assertTrue(message.obj instanceof Bundle);
+ Bundle messageBundle = (Bundle) message.obj;
+ assertEquals(scanSettings,
+ messageBundle.getParcelable(WifiScanner.SCAN_PARAMS_SCAN_SETTINGS_KEY));
+ assertNull(messageBundle.getParcelable(WifiScanner.SCAN_PARAMS_WORK_SOURCE_KEY));
+ assertEquals(mContext.getOpPackageName(),
+ messageBundle.getParcelable(WifiScanner.REQUEST_PACKAGE_NAME_KEY));
+
+ }
+
+ /**
+ * Test behavior of {@link WifiScanner#stopScan(WifiScanner.ScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStopScan() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+
+ mWifiScanner.startScan(scanSettings, scanListener);
+ mLooper.dispatchAll();
+
+ mWifiScanner.stopScan(scanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler, times(2)).handleMessage(messageArgumentCaptor.capture());
+ Message message = messageArgumentCaptor.getValue();
+ assertNotNull(message);
+
+ assertEquals(WifiScanner.CMD_STOP_SINGLE_SCAN, message.what);
+ assertTrue(message.obj instanceof Bundle);
+ Bundle messageBundle = (Bundle) message.obj;
+ assertEquals(mContext.getOpPackageName(),
+ messageBundle.getParcelable(WifiScanner.REQUEST_PACKAGE_NAME_KEY));
+
+ }
+
+ /**
+ * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStartScanListenerOnSuccess() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+
+ mWifiScanner.startScan(scanSettings, scanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message sentMessage = messageArgumentCaptor.getValue();
+ assertNotNull(sentMessage);
+
+ assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
+ Messenger scannerMessenger =
+ mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();
+
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_OP_SUCCEEDED;
+ responseMessage.arg2 = sentMessage.arg2;
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+
+ verify(scanListener).onSuccess();
+ }
+
+ /**
+ * Test behavior of {@link WifiScanner#startScan(ScanSettings, WifiScanner.ScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStartScanListenerOnResults() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ WifiScanner.ScanListener scanListener = mock(WifiScanner.ScanListener.class);
+
+ mWifiScanner.startScan(scanSettings, scanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message sentMessage = messageArgumentCaptor.getValue();
+ assertNotNull(sentMessage);
+
+ assertEquals(1, mBidirectionalAsyncChannelServer.getClientMessengers().size());
+ Messenger scannerMessenger =
+ mBidirectionalAsyncChannelServer.getClientMessengers().iterator().next();
+
+ ScanResult scanResult = new ScanResult();
+ ScanData scanDatas[] = new ScanData[]{new ScanData(0, 0 , new ScanResult[] {scanResult})};
+ Message responseMessage = Message.obtain();
+ responseMessage.what = WifiScanner.CMD_SCAN_RESULT;
+ responseMessage.arg2 = sentMessage.arg2;
+ responseMessage.obj = new WifiScanner.ParcelableScanData(scanDatas);
+ scannerMessenger.send(responseMessage);
+ mLooper.dispatchAll();
+
+ verify(scanListener).onResults(scanDatas);
+ }
+
+ /**
+ * Test behavior of {@link WifiScanner#startDisconnectedPnoScan(ScanSettings, PnoSettings,
+ * WifiScanner.PnoScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStartDisconnectedPnoScan() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ PnoSettings pnoSettings = new PnoSettings();
+ WifiScanner.PnoScanListener pnoScanListener = mock(WifiScanner.PnoScanListener.class);
+
+ mWifiScanner.startDisconnectedPnoScan(scanSettings, pnoSettings, pnoScanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message message = messageArgumentCaptor.getValue();
+ assertNotNull(message);
+
+ assertEquals(WifiScanner.CMD_START_PNO_SCAN, message.what);
+ assertTrue(message.obj instanceof Bundle);
+ Bundle messageBundle = (Bundle) message.obj;
+ assertEquals(scanSettings,
+ messageBundle.getParcelable(WifiScanner.PNO_PARAMS_SCAN_SETTINGS_KEY));
+ assertTrue(scanSettings.isPnoScan);
+ assertFalse(pnoSettings.isConnected);
+ assertEquals(pnoSettings,
+ messageBundle.getParcelable(WifiScanner.PNO_PARAMS_PNO_SETTINGS_KEY));
+ }
+
+ /**
+ * Test behavior of {@link WifiScanner#startConnectedPnoScan(ScanSettings, PnoSettings,
+ * WifiScanner.PnoScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStartConnectedPnoScan() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ PnoSettings pnoSettings = new PnoSettings();
+ WifiScanner.PnoScanListener pnoScanListener = mock(WifiScanner.PnoScanListener.class);
+
+ mWifiScanner.startConnectedPnoScan(scanSettings, pnoSettings, pnoScanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler).handleMessage(messageArgumentCaptor.capture());
+ Message message = messageArgumentCaptor.getValue();
+ assertNotNull(message);
+
+ assertEquals(WifiScanner.CMD_START_PNO_SCAN, message.what);
+ assertTrue(message.obj instanceof Bundle);
+ Bundle messageBundle = (Bundle) message.obj;
+ assertEquals(scanSettings,
+ messageBundle.getParcelable(WifiScanner.PNO_PARAMS_SCAN_SETTINGS_KEY));
+ assertTrue(scanSettings.isPnoScan);
+ assertTrue(pnoSettings.isConnected);
+ assertEquals(pnoSettings,
+ messageBundle.getParcelable(WifiScanner.PNO_PARAMS_PNO_SETTINGS_KEY));
+ }
+
+ /**
+ * Test behavior of {@link WifiScanner#stopPnoScan(WifiScanner.ScanListener)}
+ * WifiScanner.PnoScanListener)}
+ * @throws Exception
+ */
+ @Test
+ public void testStopPnoScan() throws Exception {
+ ScanSettings scanSettings = new ScanSettings();
+ PnoSettings pnoSettings = new PnoSettings();
+ WifiScanner.PnoScanListener pnoScanListener = mock(WifiScanner.PnoScanListener.class);
+
+ mWifiScanner.startDisconnectedPnoScan(scanSettings, pnoSettings, pnoScanListener);
+ mLooper.dispatchAll();
+ mWifiScanner.stopPnoScan(pnoScanListener);
+ mLooper.dispatchAll();
+
+ ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);
+ verify(mHandler, times(2)).handleMessage(messageArgumentCaptor.capture());
+ Message message = messageArgumentCaptor.getValue();
+ assertNotNull(message);
+
+ assertEquals(WifiScanner.CMD_STOP_PNO_SCAN, message.what);
+ }
}
diff --git a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java
index 905540e081ed..db8220b41910 100644
--- a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java
@@ -576,7 +576,7 @@ public class WifiAwareManagerTest {
equalTo(configRequest.mClusterLow));
collector.checkThat("mMasterPreference", 0,
equalTo(configRequest.mMasterPreference));
- collector.checkThat("mSupport5gBand", false, equalTo(configRequest.mSupport5gBand));
+ collector.checkThat("mSupport5gBand", true, equalTo(configRequest.mSupport5gBand));
collector.checkThat("mDiscoveryWindowInterval.length", 2,
equalTo(configRequest.mDiscoveryWindowInterval.length));
collector.checkThat("mDiscoveryWindowInterval[2.4GHz]", ConfigRequest.DW_INTERVAL_NOT_INIT,
@@ -709,6 +709,7 @@ public class WifiAwareManagerTest {
ConfigRequest rereadConfigRequest = ConfigRequest.CREATOR.createFromParcel(parcelR);
assertEquals(configRequest, rereadConfigRequest);
+ assertEquals(configRequest.hashCode(), rereadConfigRequest.hashCode());
}
/*
@@ -801,6 +802,7 @@ public class WifiAwareManagerTest {
SubscribeConfig rereadSubscribeConfig = SubscribeConfig.CREATOR.createFromParcel(parcelR);
assertEquals(subscribeConfig, rereadSubscribeConfig);
+ assertEquals(subscribeConfig.hashCode(), rereadSubscribeConfig.hashCode());
}
@Test(expected = IllegalArgumentException.class)
@@ -892,6 +894,7 @@ public class WifiAwareManagerTest {
PublishConfig rereadPublishConfig = PublishConfig.CREATOR.createFromParcel(parcelR);
assertEquals(publishConfig, rereadPublishConfig);
+ assertEquals(publishConfig.hashCode(), rereadPublishConfig.hashCode());
}
@Test(expected = IllegalArgumentException.class)