summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apct-tests/perftests/core/src/android/libcore/AdditionPerfTest.java115
-rw-r--r--apct-tests/perftests/core/src/android/libcore/ArrayCopyPerfTest.java77
-rw-r--r--apct-tests/perftests/core/src/android/libcore/ArrayIterationPerfTest.java80
-rw-r--r--apct-tests/perftests/core/src/android/libcore/ArrayListIterationPerfTest.java70
-rw-r--r--apct-tests/perftests/core/src/android/libcore/OWNERS2
-rw-r--r--apex/jobscheduler/framework/java/android/app/AlarmManager.java13
-rw-r--r--apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java171
-rw-r--r--core/java/android/inputmethodservice/NavigationBarController.java27
-rw-r--r--core/java/android/net/Ikev2VpnProfile.java285
-rw-r--r--core/java/android/util/FeatureFlagUtils.java2
-rw-r--r--core/java/android/util/SparseSetArray.java21
-rw-r--r--core/java/android/view/RemoteAnimationTarget.java10
-rw-r--r--core/java/android/view/WindowManagerGlobal.java10
-rw-r--r--core/java/android/window/WindowContextController.java7
-rw-r--r--core/java/com/android/internal/app/AppLocaleStore.java72
-rw-r--r--core/java/com/android/internal/app/LocalePickerWithRegion.java37
-rw-r--r--core/java/com/android/internal/app/LocaleStore.java5
-rw-r--r--core/java/com/android/internal/app/SuggestedLocaleAdapter.java67
-rw-r--r--core/java/com/android/internal/net/VpnProfile.java62
-rw-r--r--core/java/com/android/server/SystemConfig.java10
-rw-r--r--core/jni/android_media_AudioTrack.cpp47
-rw-r--r--core/jni/android_media_JNIUtils.h68
-rw-r--r--core/res/res/drawable/ic_check_24dp.xml24
-rw-r--r--core/res/res/layout/app_language_picker_current_locale_item.xml44
-rw-r--r--core/res/res/layout/app_language_picker_system_current.xml45
-rw-r--r--core/res/res/values-night/colors.xml5
-rw-r--r--core/res/res/values/colors.xml16
-rw-r--r--core/res/res/values/config.xml2
-rw-r--r--core/res/res/values/symbols.xml5
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/apppairs/AppPair.java11
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java11
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java7
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java7
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java133
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java7
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java7
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt42
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java35
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/SplitScreenController.java3
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java17
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java2
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java23
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java2
-rw-r--r--packages/CompanionDeviceManager/res/values-ar/strings.xml9
-rw-r--r--packages/CompanionDeviceManager/res/values-ta/strings.xml11
-rw-r--r--packages/CompanionDeviceManager/res/values-ur/strings.xml9
-rw-r--r--packages/PackageInstaller/res/values-te/strings.xml2
-rw-r--r--packages/PrintSpooler/res/values-te/strings.xml4
-rw-r--r--packages/SettingsLib/SettingsSpinner/res/values-v31/styles.xml6
-rw-r--r--packages/SettingsLib/res/layout/user_preference.xml45
-rw-r--r--packages/SettingsLib/res/values-af/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-am/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ar/strings.xml27
-rw-r--r--packages/SettingsLib/res/values-as/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-az/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-be/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-bg/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-bn/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-bs/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ca/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-cs/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-de/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-el/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-en-rAU/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-en-rCA/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-en-rGB/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-en-rIN/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-en-rXC/strings.xml9
-rw-r--r--packages/SettingsLib/res/values-es-rUS/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-es/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-et/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-eu/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-fa/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-fi/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-fr-rCA/strings.xml5
-rw-r--r--packages/SettingsLib/res/values-fr/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-gl/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-gu/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-hi/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-hr/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-hu/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-hy/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-in/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-is/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-it/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-iw/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ja/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ka/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-kk/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-km/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-kn/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-ko/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ky/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-lo/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-lt/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-lv/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-mk/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-ml/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-mn/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-mr/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ms/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-my/strings.xml25
-rw-r--r--packages/SettingsLib/res/values-nb/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ne/strings.xml20
-rw-r--r--packages/SettingsLib/res/values-nl/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-or/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-pl/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-pt-rPT/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-pt/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ro/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ru/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-si/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-sk/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-sl/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-sq/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-sr/strings.xml14
-rw-r--r--packages/SettingsLib/res/values-sv/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-sw/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ta/strings.xml30
-rw-r--r--packages/SettingsLib/res/values-te/strings.xml16
-rw-r--r--packages/SettingsLib/res/values-th/strings.xml3
-rw-r--r--packages/SettingsLib/res/values-tl/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-tr/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-uk/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-ur/strings.xml30
-rw-r--r--packages/SettingsLib/res/values-uz/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-vi/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-zh-rHK/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/strings.xml12
-rw-r--r--packages/SettingsLib/res/values-zu/strings.xml12
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtils.java22
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtilsTest.java42
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt3
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/RemoteTransitionAdapter.kt4
-rw-r--r--packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt74
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java3
-rw-r--r--packages/SystemUI/res-keyguard/layout/footer_actions.xml2
-rw-r--r--packages/SystemUI/res/layout/media_session_view.xml38
-rw-r--r--packages/SystemUI/res/values-af/strings.xml76
-rw-r--r--packages/SystemUI/res/values-am/strings.xml76
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml90
-rw-r--r--packages/SystemUI/res/values-as/strings.xml55
-rw-r--r--packages/SystemUI/res/values-az/strings.xml78
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml84
-rw-r--r--packages/SystemUI/res/values-be/strings.xml80
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml82
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml78
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml91
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml76
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml61
-rw-r--r--packages/SystemUI/res/values-da/strings.xml76
-rw-r--r--packages/SystemUI/res/values-de/strings.xml78
-rw-r--r--packages/SystemUI/res/values-el/strings.xml57
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml6
-rw-r--r--packages/SystemUI/res/values-en-rCA/strings.xml6
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml6
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml6
-rw-r--r--packages/SystemUI/res/values-en-rXC/strings.xml6
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml82
-rw-r--r--packages/SystemUI/res/values-es/strings.xml76
-rw-r--r--packages/SystemUI/res/values-et/strings.xml78
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml82
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml78
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml82
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml76
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml86
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml80
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml82
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml90
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml81
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml82
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml78
-rw-r--r--packages/SystemUI/res/values-in/strings.xml76
-rw-r--r--packages/SystemUI/res/values-is/strings.xml76
-rw-r--r--packages/SystemUI/res/values-it/strings.xml80
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml76
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml64
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml79
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml90
-rw-r--r--packages/SystemUI/res/values-km/strings.xml75
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml76
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml78
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml86
-rw-r--r--packages/SystemUI/res/values-land/config.xml3
-rw-r--r--packages/SystemUI/res/values-land/dimens.xml2
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml76
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml75
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml76
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml75
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml54
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml54
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml78
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml78
-rw-r--r--packages/SystemUI/res/values-my/strings.xml78
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml76
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml84
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml86
-rw-r--r--packages/SystemUI/res/values-or/strings.xml76
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml78
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml84
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml58
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml87
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml58
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml76
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml78
-rw-r--r--packages/SystemUI/res/values-si/strings.xml76
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml67
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml69
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml78
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml84
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml76
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml80
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml80
-rw-r--r--packages/SystemUI/res/values-te/strings.xml84
-rw-r--r--packages/SystemUI/res/values-th/strings.xml59
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml54
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml78
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml82
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml80
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml78
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml78
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml76
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml81
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml76
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml76
-rw-r--r--packages/SystemUI/res/values/dimens.xml1
-rw-r--r--packages/SystemUI/res/values/styles.xml6
-rw-r--r--packages/SystemUI/res/xml/media_session_collapsed.xml10
-rw-r--r--packages/SystemUI/res/xml/media_session_expanded.xml25
-rw-r--r--packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt30
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java14
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java7
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/LockIconView.java3
-rw-r--r--packages/SystemUI/src/com/android/keyguard/LockIconViewController.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/CoreStartable.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/Dumpable.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/ScreenDecorations.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/SystemUIApplication.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/SystemUIService.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/broadcast/ActionReceiver.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/clipboardoverlay/EditTextActivity.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt34
-rw-r--r--packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeLog.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/dump/DumpHandler.kt26
-rw-r--r--packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/dump/SystemUIAuxiliaryDumpService.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelper.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/log/SessionTracker.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java202
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaViewHolder.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt19
-rw-r--r--packages/SystemUI/src/com/android/systemui/model/SysUiState.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/power/PowerUI.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSFragment.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/Recents.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/AbstractLockscreenShadeTransitionController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/GestureRecorder.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SmartReplyController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java54
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescer.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/VisualStabilityManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt60
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHideIconsForBouncerManager.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialogManager.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt36
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt6
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/toast/ToastFactory.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/leak/LeakDetector.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeComponent.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt56
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java14
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/dump/DumpHandlerTest.kt27
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelperTest.java21
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/ScreenLifecycleTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt117
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt30
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt36
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java19
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt20
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java30
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakDetectorTest.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakReporterTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java3
-rw-r--r--services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java105
-rw-r--r--services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java3
-rw-r--r--services/core/java/android/content/pm/PackageManagerInternal.java5
-rw-r--r--services/core/java/com/android/server/accounts/AccountManagerService.java10
-rw-r--r--services/core/java/com/android/server/accounts/TokenCache.java9
-rw-r--r--services/core/java/com/android/server/am/AppRestrictionController.java8
-rw-r--r--services/core/java/com/android/server/am/BroadcastDispatcher.java5
-rw-r--r--services/core/java/com/android/server/am/BroadcastRecord.java4
-rw-r--r--services/core/java/com/android/server/connectivity/Vpn.java7
-rw-r--r--services/core/java/com/android/server/dreams/DreamManagerService.java13
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java6
-rw-r--r--services/core/java/com/android/server/location/gnss/GnssLocationProvider.java1
-rw-r--r--services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java29
-rw-r--r--services/core/java/com/android/server/logcat/LogAccessDialogActivity.java89
-rw-r--r--services/core/java/com/android/server/logcat/LogcatManagerService.java58
-rw-r--r--services/core/java/com/android/server/pm/AppsFilterImpl.java (renamed from services/core/java/com/android/server/pm/AppsFilter.java)270
-rw-r--r--services/core/java/com/android/server/pm/AppsFilterSnapshot.java86
-rw-r--r--services/core/java/com/android/server/pm/ComputerEngine.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerInternalBase.java5
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java7
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerServiceInjector.java6
-rw-r--r--services/core/java/com/android/server/utils/WatchedArrayList.java7
-rw-r--r--services/core/java/com/android/server/utils/WatchedSparseBooleanMatrix.java20
-rw-r--r--services/core/java/com/android/server/utils/WatchedSparseSetArray.java177
-rw-r--r--services/core/java/com/android/server/vibrator/VibrationSettings.java3
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java36
-rw-r--r--services/core/java/com/android/server/wm/AppTaskImpl.java12
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java15
-rw-r--r--services/core/java/com/android/server/wm/WindowContainer.java4
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java21
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfaceController.java5
-rw-r--r--services/tests/PackageManagerComponentOverrideTests/src/com/android/server/pm/test/override/PackageManagerComponentLabelIconOverrideTest.kt7
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java70
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt2
-rw-r--r--services/tests/servicestests/res/xml/test_account_type1_authenticator.xml1
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java17
-rw-r--r--services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java65
-rw-r--r--services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java64
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java16
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/AppsFilterImplTest.java (renamed from services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java)215
-rw-r--r--services/tests/servicestests/src/com/android/server/utils/WatcherTest.java61
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java110
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java14
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java (renamed from services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerHelperTests.java)60
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java4
-rw-r--r--tests/TrustTests/src/android/trust/test/lib/utils.kt2
494 files changed, 6447 insertions, 6270 deletions
diff --git a/apct-tests/perftests/core/src/android/libcore/AdditionPerfTest.java b/apct-tests/perftests/core/src/android/libcore/AdditionPerfTest.java
new file mode 100644
index 000000000000..ea3d172b2e5f
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/libcore/AdditionPerfTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.libcore;
+
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * What do various kinds of addition cost?
+ */
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class AdditionPerfTest {
+
+ @Rule
+ public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+ @Test
+ public int timeAddConstantToLocalInt() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ int result = 0;
+ while (state.keepRunning()) {
+ result += 123;
+ }
+ return result;
+ }
+ @Test
+ public int timeAddTwoLocalInts() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ int result = 0;
+ int constant = 123;
+ while (state.keepRunning()) {
+ result += constant;
+ }
+ return result;
+ }
+ @Test
+ public long timeAddConstantToLocalLong() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ long result = 0;
+ while (state.keepRunning()) {
+ result += 123L;
+ }
+ return result;
+ }
+ @Test
+ public long timeAddTwoLocalLongs() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ long result = 0;
+ long constant = 123L;
+ while (state.keepRunning()) {
+ result += constant;
+ }
+ return result;
+ }
+ @Test
+ public float timeAddConstantToLocalFloat() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ float result = 0.0f;
+ while (state.keepRunning()) {
+ result += 123.0f;
+ }
+ return result;
+ }
+ @Test
+ public float timeAddTwoLocalFloats() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ float result = 0.0f;
+ float constant = 123.0f;
+ while (state.keepRunning()) {
+ result += constant;
+ }
+ return result;
+ }
+ @Test
+ public double timeAddConstantToLocalDouble() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ double result = 0.0;
+ while (state.keepRunning()) {
+ result += 123.0;
+ }
+ return result;
+ }
+ @Test
+ public double timeAddTwoLocalDoubles() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ double result = 0.0;
+ double constant = 123.0;
+ while (state.keepRunning()) {
+ result += constant;
+ }
+ return result;
+ }
+}
diff --git a/apct-tests/perftests/core/src/android/libcore/ArrayCopyPerfTest.java b/apct-tests/perftests/core/src/android/libcore/ArrayCopyPerfTest.java
new file mode 100644
index 000000000000..97ab6c7cd6b4
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/libcore/ArrayCopyPerfTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.libcore;
+
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class ArrayCopyPerfTest {
+
+ @Rule
+ public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+ @Test
+ public void timeManualArrayCopy() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ char[] src = new char[8192];
+ while (state.keepRunning()) {
+ char[] dst = new char[8192];
+ for (int i = 0; i < 8192; ++i) {
+ dst[i] = src[i];
+ }
+ }
+ }
+
+ @Test
+ public void time_System_arrayCopy() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ char[] src = new char[8192];
+ while (state.keepRunning()) {
+ char[] dst = new char[8192];
+ System.arraycopy(src, 0, dst, 0, 8192);
+ }
+ }
+
+ @Test
+ public void time_Arrays_copyOf() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ char[] src = new char[8192];
+ while (state.keepRunning()) {
+ char[] dst = Arrays.copyOf(src, 8192);
+ }
+ }
+
+ @Test
+ public void time_Arrays_copyOfRange() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ char[] src = new char[8192];
+ while (state.keepRunning()) {
+ char[] dst = Arrays.copyOfRange(src, 0, 8192);
+ }
+ }
+}
diff --git a/apct-tests/perftests/core/src/android/libcore/ArrayIterationPerfTest.java b/apct-tests/perftests/core/src/android/libcore/ArrayIterationPerfTest.java
new file mode 100644
index 000000000000..bb452d394d47
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/libcore/ArrayIterationPerfTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.libcore;
+
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * How do various ways of iterating through an array compare?
+ */
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class ArrayIterationPerfTest {
+
+ public class Foo {
+ int mSplat;
+ }
+
+ @Rule
+ public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+ Foo[] mArray = new Foo[27];
+ {
+ for (int i = 0; i < mArray.length; ++i) mArray[i] = new Foo();
+ }
+ @Test
+ public void timeArrayIteration() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ int sum = 0;
+ for (int i = 0; i < mArray.length; i++) {
+ sum += mArray[i].mSplat;
+ }
+ }
+ }
+ @Test
+ public void timeArrayIterationCached() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ int sum = 0;
+ Foo[] localArray = mArray;
+ int len = localArray.length;
+
+ for (int i = 0; i < len; i++) {
+ sum += localArray[i].mSplat;
+ }
+ }
+ }
+ @Test
+ public void timeArrayIterationForEach() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ int sum = 0;
+ for (Foo a: mArray) {
+ sum += a.mSplat;
+ }
+ }
+ }
+}
diff --git a/apct-tests/perftests/core/src/android/libcore/ArrayListIterationPerfTest.java b/apct-tests/perftests/core/src/android/libcore/ArrayListIterationPerfTest.java
new file mode 100644
index 000000000000..ff6d46f6db7f
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/libcore/ArrayListIterationPerfTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.libcore;
+
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+
+/**
+ * Is a hand-coded counted loop through an ArrayList cheaper than enhanced for?
+ */
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class ArrayListIterationPerfTest {
+
+ public class Foo {
+ int mSplat;
+ }
+ @Rule
+ public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+ ArrayList<Foo> mList = new ArrayList<Foo>();
+ {
+ for (int i = 0; i < 27; ++i) mList.add(new Foo());
+ }
+ @Test
+ public void timeArrayListIterationIndexed() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ int sum = 0;
+ ArrayList<Foo> list = mList;
+ int len = list.size();
+ for (int i = 0; i < len; ++i) {
+ sum += list.get(i).mSplat;
+ }
+ }
+ }
+ @Test
+ public void timeArrayListIterationForEach() {
+ BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+ while (state.keepRunning()) {
+ int sum = 0;
+ for (Foo a : mList) {
+ sum += a.mSplat;
+ }
+ }
+ }
+}
diff --git a/apct-tests/perftests/core/src/android/libcore/OWNERS b/apct-tests/perftests/core/src/android/libcore/OWNERS
new file mode 100644
index 000000000000..2d365747473a
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/libcore/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include platform/libcore:/OWNERS
diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java
index 61424ae0e158..1b9cf2648a3f 100644
--- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java
+++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java
@@ -27,6 +27,7 @@ import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
@@ -280,6 +281,18 @@ public class AlarmManager {
@EnabledSince(targetSdkVersion = Build.VERSION_CODES.TIRAMISU)
public static final long ENABLE_USE_EXACT_ALARM = 218533173L;
+ /**
+ * For apps targeting {@link Build.VERSION_CODES#TIRAMISU} or above, the permission
+ * {@link Manifest.permission#SCHEDULE_EXACT_ALARM} will be denied, unless the user explicitly
+ * allows it from Settings.
+ *
+ * TODO (b/226439802): change to EnabledSince(T) after SDK finalization.
+ * @hide
+ */
+ @ChangeId
+ @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.S_V2)
+ public static final long SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT = 226439802L;
+
@UnsupportedAppUsage
private final IAlarmManager mService;
private final Context mContext;
diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
index f67e8d2baa11..881453fe237d 100644
--- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java
@@ -66,6 +66,7 @@ import android.app.IAlarmListener;
import android.app.IAlarmManager;
import android.app.PendingIntent;
import android.app.compat.CompatChanges;
+import android.app.role.RoleManager;
import android.app.usage.UsageStatsManager;
import android.app.usage.UsageStatsManagerInternal;
import android.content.BroadcastReceiver;
@@ -164,6 +165,7 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.TimeZone;
@@ -224,6 +226,7 @@ public class AlarmManagerService extends SystemService {
private ActivityManagerInternal mActivityManagerInternal;
private final EconomyManagerInternal mEconomyManagerInternal;
private PackageManagerInternal mPackageManagerInternal;
+ private RoleManager mRoleManager;
private volatile PermissionManagerServiceInternal mLocalPermissionManager;
final Object mLock = new Object();
@@ -562,6 +565,9 @@ public class AlarmManagerService extends SystemService {
@VisibleForTesting
static final String KEY_KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED =
"kill_on_schedule_exact_alarm_revoked";
+ @VisibleForTesting
+ static final String KEY_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT =
+ "schedule_exact_alarm_denied_by_default";
private static final long DEFAULT_MIN_FUTURITY = 5 * 1000;
private static final long DEFAULT_MIN_INTERVAL = 60 * 1000;
@@ -606,6 +612,9 @@ public class AlarmManagerService extends SystemService {
private static final boolean DEFAULT_KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED = true;
+ // TODO(b/226439802): Flip to true.
+ private static final boolean DEFAULT_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT = false;
+
// Minimum futurity of a new alarm
public long MIN_FUTURITY = DEFAULT_MIN_FUTURITY;
@@ -693,6 +702,14 @@ public class AlarmManagerService extends SystemService {
public boolean KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED =
DEFAULT_KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED;
+ /**
+ * When this is {@code true}, apps with the change
+ * {@link AlarmManager#SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT} enabled will not get
+ * {@link Manifest.permission#SCHEDULE_EXACT_ALARM} unless the user grants it to them.
+ */
+ public volatile boolean SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT =
+ DEFAULT_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT;
+
public boolean USE_TARE_POLICY = Settings.Global.DEFAULT_ENABLE_TARE == 1;
private long mLastAllowWhileIdleWhitelistDuration = -1;
@@ -876,6 +893,15 @@ public class AlarmManagerService extends SystemService {
KEY_KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED,
DEFAULT_KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED);
break;
+ case KEY_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT:
+ final boolean oldValue = SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT;
+
+ SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT = properties.getBoolean(
+ KEY_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT,
+ DEFAULT_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT);
+ handleScheduleExactAlarmDeniedByDefaultChange(oldValue,
+ SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT);
+ break;
default:
if (name.startsWith(KEY_PREFIX_STANDBY_QUOTA) && !standbyQuotaUpdated) {
// The quotas need to be updated in order, so we can't just rely
@@ -946,6 +972,15 @@ public class AlarmManagerService extends SystemService {
}
}
+ private void handleScheduleExactAlarmDeniedByDefaultChange(boolean oldValue,
+ boolean newValue) {
+ if (oldValue == newValue) {
+ return;
+ }
+ mHandler.obtainMessage(AlarmHandler.CHECK_EXACT_ALARM_PERMISSION_ON_FEATURE_TOGGLE,
+ newValue).sendToTarget();
+ }
+
private void migrateAlarmsToNewStoreLocked() {
final AlarmStore newStore = LAZY_BATCHING ? new LazyAlarmStore()
: new BatchingAlarmStore();
@@ -1122,6 +1157,9 @@ public class AlarmManagerService extends SystemService {
pw.print(KEY_KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED,
KILL_ON_SCHEDULE_EXACT_ALARM_REVOKED);
pw.println();
+ pw.print(KEY_SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT,
+ SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT);
+ pw.println();
pw.print(Settings.Global.ENABLE_TARE, USE_TARE_POLICY);
pw.println();
@@ -1892,11 +1930,10 @@ public class AlarmManagerService extends SystemService {
if (hasUseExactAlarmInternal(packageName, uid)) {
return;
}
-
- final boolean requested = mExactAlarmCandidates.contains(
- UserHandle.getAppId(uid));
- final boolean denyListed =
- mConstants.EXACT_ALARM_DENY_LIST.contains(packageName);
+ if (!mExactAlarmCandidates.contains(UserHandle.getAppId(uid))) {
+ // Permission not requested, app op doesn't matter.
+ return;
+ }
final int newMode = mAppOps.checkOpNoThrow(
AppOpsManager.OP_SCHEDULE_EXACT_ALARM, uid, packageName);
@@ -1913,11 +1950,24 @@ public class AlarmManagerService extends SystemService {
mLastOpScheduleExactAlarm.setValueAt(index, newMode);
}
}
-
- final boolean hadPermission = getScheduleExactAlarmState(requested,
- denyListed, oldMode);
- final boolean hasPermission = getScheduleExactAlarmState(requested,
- denyListed, newMode);
+ if (oldMode == newMode) {
+ return;
+ }
+ final boolean allowedByDefault =
+ isScheduleExactAlarmAllowedByDefault(packageName, uid);
+
+ final boolean hadPermission;
+ if (oldMode != AppOpsManager.MODE_DEFAULT) {
+ hadPermission = (oldMode == AppOpsManager.MODE_ALLOWED);
+ } else {
+ hadPermission = allowedByDefault;
+ }
+ final boolean hasPermission;
+ if (newMode != AppOpsManager.MODE_DEFAULT) {
+ hasPermission = (newMode == AppOpsManager.MODE_ALLOWED);
+ } else {
+ hasPermission = allowedByDefault;
+ }
if (hadPermission && !hasPermission) {
mHandler.obtainMessage(AlarmHandler.REMOVE_EXACT_ALARMS,
@@ -1939,6 +1989,8 @@ public class AlarmManagerService extends SystemService {
LocalServices.getService(AppStandbyInternal.class);
appStandbyInternal.addListener(new AppStandbyTracker());
+ mRoleManager = getContext().getSystemService(RoleManager.class);
+
mMetricsHelper.registerPuller(() -> mAlarmStore);
}
}
@@ -2525,19 +2577,6 @@ public class AlarmManagerService extends SystemService {
}
}
- private static boolean getScheduleExactAlarmState(boolean requested, boolean denyListed,
- int appOpMode) {
- // This does not account for the state of the USE_EXACT_ALARM permission.
- // The caller should do that separately.
- if (!requested) {
- return false;
- }
- if (appOpMode == AppOpsManager.MODE_DEFAULT) {
- return !denyListed;
- }
- return appOpMode == AppOpsManager.MODE_ALLOWED;
- }
-
boolean hasUseExactAlarmInternal(String packageName, int uid) {
return isUseExactAlarmEnabled(packageName, UserHandle.getUserId(uid))
&& (PermissionChecker.checkPermissionForPreflight(getContext(),
@@ -2545,6 +2584,32 @@ public class AlarmManagerService extends SystemService {
packageName) == PermissionChecker.PERMISSION_GRANTED);
}
+ /**
+ * Returns whether SCHEDULE_EXACT_ALARM is allowed by default.
+ */
+ boolean isScheduleExactAlarmAllowedByDefault(String packageName, int uid) {
+ if (isScheduleExactAlarmDeniedByDefault(packageName, UserHandle.getUserId(uid))) {
+
+ // This is essentially like changing the protection level of the permission to
+ // (privileged|signature|role|appop), but have to implement this logic to maintain
+ // compatibility for older apps.
+ if (mPackageManagerInternal.isPlatformSigned(packageName)
+ || mPackageManagerInternal.isUidPrivileged(uid)) {
+ return true;
+ }
+ final long token = Binder.clearCallingIdentity();
+ try {
+ final List<String> wellbeingHolders = (mRoleManager != null)
+ ? mRoleManager.getRoleHolders(RoleManager.ROLE_SYSTEM_WELLBEING)
+ : Collections.emptyList();
+ return wellbeingHolders.contains(packageName);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ return !mConstants.EXACT_ALARM_DENY_LIST.contains(packageName);
+ }
+
boolean hasScheduleExactAlarmInternal(String packageName, int uid) {
final long start = mStatLogger.getTime();
@@ -2560,7 +2625,7 @@ public class AlarmManagerService extends SystemService {
final int mode = mAppOps.checkOpNoThrow(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, uid,
packageName);
if (mode == AppOpsManager.MODE_DEFAULT) {
- hasPermission = !mConstants.EXACT_ALARM_DENY_LIST.contains(packageName);
+ hasPermission = isScheduleExactAlarmAllowedByDefault(packageName, uid);
} else {
hasPermission = (mode == AppOpsManager.MODE_ALLOWED);
}
@@ -2860,6 +2925,13 @@ public class AlarmManagerService extends SystemService {
packageName, UserHandle.of(userId));
}
+ private boolean isScheduleExactAlarmDeniedByDefault(String packageName, int userId) {
+ return mConstants.SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT
+ && CompatChanges.isChangeEnabled(
+ AlarmManager.SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT, packageName,
+ UserHandle.of(userId));
+ }
+
@NeverCompile // Avoid size overhead of debugging code.
void dumpImpl(IndentingPrintWriter pw) {
synchronized (mLock) {
@@ -3769,26 +3841,27 @@ public class AlarmManagerService extends SystemService {
if (!isExactAlarmChangeEnabled(changedPackage, userId)) {
continue;
}
+ if (isScheduleExactAlarmDeniedByDefault(changedPackage, userId)) {
+ continue;
+ }
if (hasUseExactAlarmInternal(changedPackage, uid)) {
continue;
}
+ if (!mExactAlarmCandidates.contains(UserHandle.getAppId(uid))) {
+ // Permission isn't requested, deny list doesn't matter.
+ continue;
+ }
final int appOpMode;
synchronized (mLock) {
appOpMode = mLastOpScheduleExactAlarm.get(uid,
AppOpsManager.opToDefaultMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM));
}
- final boolean requested = mExactAlarmCandidates.contains(UserHandle.getAppId(uid));
-
- // added: true => package was added to the deny list
- // added: false => package was removed from the deny list
- final boolean hadPermission = getScheduleExactAlarmState(requested, !added,
- appOpMode);
- final boolean hasPermission = getScheduleExactAlarmState(requested, added,
- appOpMode);
-
- if (hadPermission == hasPermission) {
+ if (appOpMode != AppOpsManager.MODE_DEFAULT) {
+ // Deny list doesn't matter.
continue;
}
+ // added: true => package was added to the deny list
+ // added: false => package was removed from the deny list
if (added) {
synchronized (mLock) {
removeExactAlarmsOnPermissionRevokedLocked(uid,
@@ -4634,6 +4707,7 @@ public class AlarmManagerService extends SystemService {
public static final int REFRESH_EXACT_ALARM_CANDIDATES = 11;
public static final int TARE_AFFORDABILITY_CHANGED = 12;
public static final int CHECK_EXACT_ALARM_PERMISSION_ON_UPDATE = 13;
+ public static final int CHECK_EXACT_ALARM_PERMISSION_ON_FEATURE_TOGGLE = 14;
AlarmHandler() {
super(Looper.myLooper());
@@ -4759,6 +4833,35 @@ public class AlarmManagerService extends SystemService {
}
}
break;
+ case CHECK_EXACT_ALARM_PERMISSION_ON_FEATURE_TOGGLE:
+ final boolean defaultDenied = (Boolean) msg.obj;
+
+ final int[] startedUserIds = mActivityManagerInternal.getStartedUserIds();
+ for (int appId : mExactAlarmCandidates) {
+ for (int userId : startedUserIds) {
+ uid = UserHandle.getUid(userId, appId);
+
+ final AndroidPackage packageForUid =
+ mPackageManagerInternal.getPackage(uid);
+ if (packageForUid == null) {
+ continue;
+ }
+ final String pkg = packageForUid.getPackageName();
+ if (defaultDenied) {
+ if (!hasScheduleExactAlarmInternal(pkg, uid)
+ && !hasUseExactAlarmInternal(pkg, uid)) {
+ synchronized (mLock) {
+ removeExactAlarmsOnPermissionRevokedLocked(uid, pkg,
+ true);
+ }
+ }
+ } else if (hasScheduleExactAlarmInternal(pkg, uid)) {
+ sendScheduleExactAlarmPermissionStateChangedBroadcast(pkg,
+ UserHandle.getUserId(uid));
+ }
+ }
+ }
+ break;
default:
// nope, just ignore it
break;
diff --git a/core/java/android/inputmethodservice/NavigationBarController.java b/core/java/android/inputmethodservice/NavigationBarController.java
index 03d11515c0a8..dc38db2134f4 100644
--- a/core/java/android/inputmethodservice/NavigationBarController.java
+++ b/core/java/android/inputmethodservice/NavigationBarController.java
@@ -151,6 +151,8 @@ final class NavigationBarController {
private boolean mDrawLegacyNavigationBarBackground;
+ private final Rect mTempRect = new Rect();
+
Impl(@NonNull InputMethodService inputMethodService) {
mService = inputMethodService;
}
@@ -257,23 +259,22 @@ final class NavigationBarController {
switch (originalInsets.touchableInsets) {
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME:
if (inputFrame.getVisibility() == View.VISIBLE) {
- touchableRegion = new Region(inputFrame.getLeft(),
- inputFrame.getTop(), inputFrame.getRight(),
- inputFrame.getBottom());
+ inputFrame.getBoundsOnScreen(mTempRect);
+ touchableRegion = new Region(mTempRect);
}
break;
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_CONTENT:
if (inputFrame.getVisibility() == View.VISIBLE) {
- touchableRegion = new Region(inputFrame.getLeft(),
- originalInsets.contentTopInsets, inputFrame.getRight(),
- inputFrame.getBottom());
+ inputFrame.getBoundsOnScreen(mTempRect);
+ mTempRect.top = originalInsets.contentTopInsets;
+ touchableRegion = new Region(mTempRect);
}
break;
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_VISIBLE:
if (inputFrame.getVisibility() == View.VISIBLE) {
- touchableRegion = new Region(inputFrame.getLeft(),
- originalInsets.visibleTopInsets, inputFrame.getRight(),
- inputFrame.getBottom());
+ inputFrame.getBoundsOnScreen(mTempRect);
+ mTempRect.top = originalInsets.visibleTopInsets;
+ touchableRegion = new Region(mTempRect);
}
break;
case ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION:
@@ -281,13 +282,13 @@ final class NavigationBarController {
touchableRegion.set(originalInsets.touchableRegion);
break;
}
- final Rect navBarRect = new Rect(decor.getLeft(),
- decor.getBottom() - systemInsets.bottom,
+ // Hereafter "mTempRect" means a navigation bar rect.
+ mTempRect.set(decor.getLeft(), decor.getBottom() - systemInsets.bottom,
decor.getRight(), decor.getBottom());
if (touchableRegion == null) {
- touchableRegion = new Region(navBarRect);
+ touchableRegion = new Region(mTempRect);
} else {
- touchableRegion.union(navBarRect);
+ touchableRegion.union(mTempRect);
}
dest.touchableRegion.set(touchableRegion);
diff --git a/core/java/android/net/Ikev2VpnProfile.java b/core/java/android/net/Ikev2VpnProfile.java
index 3abe83bd3373..1b503b11816f 100644
--- a/core/java/android/net/Ikev2VpnProfile.java
+++ b/core/java/android/net/Ikev2VpnProfile.java
@@ -25,12 +25,6 @@ import static android.net.IpSecAlgorithm.AUTH_HMAC_SHA384;
import static android.net.IpSecAlgorithm.AUTH_HMAC_SHA512;
import static android.net.IpSecAlgorithm.CRYPT_AES_CBC;
import static android.net.IpSecAlgorithm.CRYPT_AES_CTR;
-import static android.net.eap.EapSessionConfig.EapMsChapV2Config;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthDigitalSignLocalConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthDigitalSignRemoteConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthEapConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthPskConfig;
import static com.android.internal.annotations.VisibleForTesting.Visibility;
import static com.android.internal.util.Preconditions.checkStringNotEmpty;
@@ -40,6 +34,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresFeature;
import android.content.pm.PackageManager;
+import android.net.ipsec.ike.IkeDerAsn1DnIdentification;
import android.net.ipsec.ike.IkeFqdnIdentification;
import android.net.ipsec.ike.IkeIdentification;
import android.net.ipsec.ike.IkeIpv4AddrIdentification;
@@ -119,8 +114,8 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
DEFAULT_ALGORITHMS = Collections.unmodifiableList(algorithms);
}
- @NonNull private final String mServerAddr;
- @NonNull private final String mUserIdentity;
+ @Nullable private final String mServerAddr;
+ @Nullable private final String mUserIdentity;
// PSK authentication
@Nullable private final byte[] mPresharedKey;
@@ -146,8 +141,8 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
private Ikev2VpnProfile(
int type,
- @NonNull String serverAddr,
- @NonNull String userIdentity,
+ @Nullable String serverAddr,
+ @Nullable String userIdentity,
@Nullable byte[] presharedKey,
@Nullable X509Certificate serverRootCaCert,
@Nullable String username,
@@ -165,8 +160,6 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
@Nullable IkeTunnelConnectionParams ikeTunConnParams) {
super(type, excludeLocalRoutes, requiresInternetValidation);
- checkNotNull(serverAddr, MISSING_PARAM_MSG_TMPL, "Server address");
- checkNotNull(userIdentity, MISSING_PARAM_MSG_TMPL, "User Identity");
checkNotNull(allowedAlgorithms, MISSING_PARAM_MSG_TMPL, "Allowed Algorithms");
mServerAddr = serverAddr;
@@ -191,18 +184,12 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
mIsMetered = isMetered;
mMaxMtu = maxMtu;
mIsRestrictedToTestNetworks = restrictToTestNetworks;
-
mIkeTunConnParams = ikeTunConnParams;
validate();
}
private void validate() {
- // Server Address not validated except to check an address was provided. This allows for
- // dual-stack servers and hostname based addresses.
- checkStringNotEmpty(mServerAddr, MISSING_PARAM_MSG_TMPL, "Server Address");
- checkStringNotEmpty(mUserIdentity, MISSING_PARAM_MSG_TMPL, "User Identity");
-
// IPv6 MTU is greater; since profiles may be started by the system on IPv4 and IPv6
// networks, the VPN must provide a link fulfilling the stricter of the two conditions
// (at least that of the IPv6 MTU).
@@ -210,6 +197,15 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
throw new IllegalArgumentException("Max MTU must be at least" + IPV6_MIN_MTU);
}
+ // Skip validating the other fields if mIkeTunConnParams is set because the required
+ // information should all come from the mIkeTunConnParams.
+ if (mIkeTunConnParams != null) return;
+
+ // Server Address not validated except to check an address was provided. This allows for
+ // dual-stack servers and hostname based addresses.
+ checkStringNotEmpty(mServerAddr, MISSING_PARAM_MSG_TMPL, "Server Address");
+ checkStringNotEmpty(mUserIdentity, MISSING_PARAM_MSG_TMPL, "User Identity");
+
switch (mType) {
case TYPE_IKEV2_IPSEC_USER_PASS:
checkNotNull(mUsername, MISSING_PARAM_MSG_TMPL, "Username");
@@ -286,22 +282,31 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
/** Retrieves the server address string. */
@NonNull
public String getServerAddr() {
- return mServerAddr;
+ if (mIkeTunConnParams == null) return mServerAddr;
+
+ final IkeSessionParams ikeSessionParams = mIkeTunConnParams.getIkeSessionParams();
+ return ikeSessionParams.getServerHostname();
}
/** Retrieves the user identity. */
@NonNull
public String getUserIdentity() {
- return mUserIdentity;
+ if (mIkeTunConnParams == null) return mUserIdentity;
+
+ final IkeSessionParams ikeSessionParams = mIkeTunConnParams.getIkeSessionParams();
+ return getUserIdentityFromIkeSession(ikeSessionParams);
}
/**
* Retrieves the pre-shared key.
*
- * <p>May be null if the profile is not using Pre-shared key authentication.
+ * <p>May be null if the profile is not using Pre-shared key authentication, or the profile is
+ * built from an {@link IkeTunnelConnectionParams}.
*/
@Nullable
public byte[] getPresharedKey() {
+ if (mIkeTunConnParams != null) return null;
+
return mPresharedKey == null ? null : Arrays.copyOf(mPresharedKey, mPresharedKey.length);
}
@@ -309,46 +314,62 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
* Retrieves the certificate for the server's root CA.
*
* <p>May be null if the profile is not using RSA Digital Signature Authentication or
- * Username/Password authentication
+ * Username/Password authentication, or the profile is built from an
+ * {@link IkeTunnelConnectionParams}.
*/
@Nullable
public X509Certificate getServerRootCaCert() {
+ if (mIkeTunConnParams != null) return null;
+
return mServerRootCaCert;
}
-
/**
* Retrieves the username.
*
- * <p>May be null if the profile is not using Username/Password authentication
+ * <p>May be null if the profile is not using Username/Password authentication, or the profile
+ * is built from an {@link IkeTunnelConnectionParams}.
*/
@Nullable
public String getUsername() {
+ if (mIkeTunConnParams != null) return null;
+
return mUsername;
}
/**
* Retrieves the password.
*
- * <p>May be null if the profile is not using Username/Password authentication
+ * <p>May be null if the profile is not using Username/Password authentication, or the profile
+ * is built from an {@link IkeTunnelConnectionParams}.
*/
@Nullable
public String getPassword() {
+ if (mIkeTunConnParams != null) return null;
+
return mPassword;
}
/**
* Retrieves the RSA private key.
*
- * <p>May be null if the profile is not using RSA Digital Signature authentication
+ * <p>May be null if the profile is not using RSA Digital Signature authentication, or the
+ * profile is built from an {@link IkeTunnelConnectionParams}.
*/
@Nullable
public PrivateKey getRsaPrivateKey() {
+ if (mIkeTunConnParams != null) return null;
+
return mRsaPrivateKey;
}
- /** Retrieves the user certificate, if any was set. */
+ /** Retrieves the user certificate, if any was set.
+ *
+ * <p>May be null if the profile is built from an {@link IkeTunnelConnectionParams}.
+ */
@Nullable
public X509Certificate getUserCert() {
+ if (mIkeTunConnParams != null) return null;
+
return mUserCert;
}
@@ -358,9 +379,14 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
return mProxyInfo;
}
- /** Returns all the algorithms allowed by this VPN profile. */
+ /** Returns all the algorithms allowed by this VPN profile.
+ *
+ * <p>May be an empty list if the profile is built from an {@link IkeTunnelConnectionParams}.
+ */
@NonNull
public List<String> getAllowedAlgorithms() {
+ if (mIkeTunConnParams != null) return new ArrayList<>();
+
return mAllowedAlgorithms;
}
@@ -455,18 +481,25 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
@NonNull
public VpnProfile toVpnProfile() throws IOException, GeneralSecurityException {
final VpnProfile profile = new VpnProfile("" /* Key; value unused by IKEv2VpnProfile(s) */,
- mIsRestrictedToTestNetworks, mExcludeLocalRoutes, mRequiresInternetValidation);
- profile.type = mType;
- profile.server = mServerAddr;
- profile.ipsecIdentifier = mUserIdentity;
+ mIsRestrictedToTestNetworks, mExcludeLocalRoutes, mRequiresInternetValidation,
+ mIkeTunConnParams);
+
+ profile.server = getServerAddr();
+ profile.ipsecIdentifier = getUserIdentity();
profile.proxy = mProxyInfo;
- profile.setAllowedAlgorithms(mAllowedAlgorithms);
profile.isBypassable = mIsBypassable;
profile.isMetered = mIsMetered;
profile.maxMtu = mMaxMtu;
profile.areAuthParamsInline = true;
profile.saveLogin = true;
+ // The other fields should come from mIkeTunConnParams if it's available.
+ if (mIkeTunConnParams != null) {
+ profile.type = VpnProfile.TYPE_IKEV2_FROM_IKE_TUN_CONN_PARAMS;
+ return profile;
+ }
+ profile.type = mType;
+ profile.setAllowedAlgorithms(mAllowedAlgorithms);
switch (mType) {
case TYPE_IKEV2_IPSEC_USER_PASS:
profile.username = mUsername;
@@ -516,10 +549,47 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
@NonNull
public static Ikev2VpnProfile fromVpnProfile(@NonNull VpnProfile profile)
throws GeneralSecurityException {
- // TODO: Build the VpnProfile from mIkeTunConnParams if it exists.
- final Builder builder = new Builder(profile.server, profile.ipsecIdentifier);
+ final Builder builder;
+ if (profile.ikeTunConnParams == null) {
+ builder = new Builder(profile.server, profile.ipsecIdentifier);
+ builder.setAllowedAlgorithms(profile.getAllowedAlgorithms());
+
+ switch (profile.type) {
+ case TYPE_IKEV2_IPSEC_USER_PASS:
+ builder.setAuthUsernamePassword(
+ profile.username,
+ profile.password,
+ certificateFromPemString(profile.ipsecCaCert));
+ break;
+ case TYPE_IKEV2_IPSEC_PSK:
+ builder.setAuthPsk(decodeFromIpsecSecret(profile.ipsecSecret));
+ break;
+ case TYPE_IKEV2_IPSEC_RSA:
+ final PrivateKey key;
+ if (profile.ipsecSecret.startsWith(PREFIX_KEYSTORE_ALIAS)) {
+ final String alias =
+ profile.ipsecSecret.substring(PREFIX_KEYSTORE_ALIAS.length());
+ key = getPrivateKeyFromAndroidKeystore(alias);
+ } else if (profile.ipsecSecret.startsWith(PREFIX_INLINE)) {
+ key = getPrivateKey(profile.ipsecSecret.substring(PREFIX_INLINE.length()));
+ } else {
+ throw new IllegalArgumentException("Invalid RSA private key prefix");
+ }
+
+ final X509Certificate userCert =
+ certificateFromPemString(profile.ipsecUserCert);
+ final X509Certificate serverRootCa =
+ certificateFromPemString(profile.ipsecCaCert);
+ builder.setAuthDigitalSignature(userCert, key, serverRootCa);
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid auth method set");
+ }
+ } else {
+ builder = new Builder(profile.ikeTunConnParams);
+ }
+
builder.setProxy(profile.proxy);
- builder.setAllowedAlgorithms(profile.getAllowedAlgorithms());
builder.setBypassable(profile.isBypassable);
builder.setMetered(profile.isMetered);
builder.setMaxMtu(profile.maxMtu);
@@ -527,36 +597,6 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
builder.restrictToTestNetworks();
}
- switch (profile.type) {
- case TYPE_IKEV2_IPSEC_USER_PASS:
- builder.setAuthUsernamePassword(
- profile.username,
- profile.password,
- certificateFromPemString(profile.ipsecCaCert));
- break;
- case TYPE_IKEV2_IPSEC_PSK:
- builder.setAuthPsk(decodeFromIpsecSecret(profile.ipsecSecret));
- break;
- case TYPE_IKEV2_IPSEC_RSA:
- final PrivateKey key;
- if (profile.ipsecSecret.startsWith(PREFIX_KEYSTORE_ALIAS)) {
- final String alias =
- profile.ipsecSecret.substring(PREFIX_KEYSTORE_ALIAS.length());
- key = getPrivateKeyFromAndroidKeystore(alias);
- } else if (profile.ipsecSecret.startsWith(PREFIX_INLINE)) {
- key = getPrivateKey(profile.ipsecSecret.substring(PREFIX_INLINE.length()));
- } else {
- throw new IllegalArgumentException("Invalid RSA private key prefix");
- }
-
- final X509Certificate userCert = certificateFromPemString(profile.ipsecUserCert);
- final X509Certificate serverRootCa = certificateFromPemString(profile.ipsecCaCert);
- builder.setAuthDigitalSignature(userCert, key, serverRootCa);
- break;
- default:
- throw new IllegalArgumentException("Invalid auth method set");
- }
-
if (profile.excludeLocalRoutes && !profile.isBypassable) {
Log.w(TAG, "ExcludeLocalRoutes should only be set in the bypassable VPN");
}
@@ -678,82 +718,13 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
}
private static void checkBuilderSetter(boolean constructedFromIkeTunConParams,
- @NonNull String message) {
+ @NonNull String field) {
if (constructedFromIkeTunConParams) {
- throw new IllegalArgumentException("Constructed using IkeTunnelConnectionParams "
- + "should not set " + message);
- }
- }
-
- private static int getTypeFromIkeSession(@NonNull IkeSessionParams params) {
- final IkeAuthConfig config = params.getLocalAuthConfig();
- if (config instanceof IkeAuthDigitalSignLocalConfig) {
- return TYPE_IKEV2_IPSEC_RSA;
- } else if (config instanceof IkeAuthEapConfig) {
- return TYPE_IKEV2_IPSEC_USER_PASS;
- } else if (config instanceof IkeAuthPskConfig) {
- return TYPE_IKEV2_IPSEC_PSK;
- } else {
- throw new IllegalStateException("Invalid local IkeAuthConfig");
+ throw new IllegalArgumentException(
+ field + " can't be set with IkeTunnelConnectionParams builder");
}
}
- @Nullable
- private static String getPasswordFromIkeSession(@NonNull IkeSessionParams params) {
- if (!(params.getLocalAuthConfig() instanceof IkeAuthEapConfig)) return null;
-
- final IkeAuthEapConfig ikeAuthEapConfig = (IkeAuthEapConfig) params.getLocalAuthConfig();
- final EapMsChapV2Config eapMsChapV2Config =
- ikeAuthEapConfig.getEapConfig().getEapMsChapV2Config();
- return (eapMsChapV2Config != null) ? eapMsChapV2Config.getPassword() : null;
- }
-
- @Nullable
- private static String getUsernameFromIkeSession(@NonNull IkeSessionParams params) {
- if (!(params.getLocalAuthConfig() instanceof IkeAuthEapConfig)) return null;
-
- final IkeAuthEapConfig ikeAuthEapConfig = (IkeAuthEapConfig) params.getLocalAuthConfig();
- final EapMsChapV2Config eapMsChapV2Config =
- ikeAuthEapConfig.getEapConfig().getEapMsChapV2Config();
- return (eapMsChapV2Config != null) ? eapMsChapV2Config.getUsername() : null;
- }
-
- @Nullable
- private static X509Certificate getUserCertFromIkeSession(@NonNull IkeSessionParams params) {
- if (!(params.getLocalAuthConfig() instanceof IkeAuthDigitalSignLocalConfig)) return null;
-
- final IkeAuthDigitalSignLocalConfig config =
- (IkeAuthDigitalSignLocalConfig) params.getLocalAuthConfig();
- return config.getClientEndCertificate();
- }
-
- @Nullable
- private static X509Certificate getServerRootCaCertFromIkeSession(
- @NonNull IkeSessionParams params) {
- if (!(params.getRemoteAuthConfig() instanceof IkeAuthDigitalSignRemoteConfig)) return null;
-
- final IkeAuthDigitalSignRemoteConfig config =
- (IkeAuthDigitalSignRemoteConfig) params.getRemoteAuthConfig();
- return config.getRemoteCaCert();
- }
-
- @Nullable
- private static PrivateKey getRsaPrivateKeyFromIkeSession(@NonNull IkeSessionParams params) {
- if (!(params.getLocalAuthConfig() instanceof IkeAuthDigitalSignLocalConfig)) return null;
-
- final IkeAuthDigitalSignLocalConfig config =
- (IkeAuthDigitalSignLocalConfig) params.getLocalAuthConfig();
- return config.getPrivateKey();
- }
-
- @Nullable
- private static byte[] getPresharedKeyFromIkeSession(@NonNull IkeSessionParams params) {
- if (!(params.getLocalAuthConfig() instanceof IkeAuthPskConfig)) return null;
-
- final IkeAuthPskConfig config = (IkeAuthPskConfig) params.getLocalAuthConfig();
- return config.getPsk();
- }
-
@NonNull
private static String getUserIdentityFromIkeSession(@NonNull IkeSessionParams params) {
final IkeIdentification ident = params.getLocalIdentification();
@@ -768,6 +739,8 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
return ((IkeIpv4AddrIdentification) ident).ipv4Address.getHostAddress();
} else if (ident instanceof IkeIpv6AddrIdentification) {
return ((IkeIpv6AddrIdentification) ident).ipv6Address.getHostAddress();
+ } else if (ident instanceof IkeDerAsn1DnIdentification) {
+ throw new IllegalArgumentException("Unspported ASN.1 encoded identities");
} else {
throw new IllegalArgumentException("Unknown IkeIdentification to get user identity");
}
@@ -776,8 +749,8 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
/** A incremental builder for IKEv2 VPN profiles */
public static final class Builder {
private int mType = -1;
- @NonNull private final String mServerAddr;
- @NonNull private final String mUserIdentity;
+ @Nullable private final String mServerAddr;
+ @Nullable private final String mUserIdentity;
// PSK authentication
@Nullable private byte[] mPresharedKey;
@@ -831,19 +804,8 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
checkNotNull(ikeTunConnParams, MISSING_PARAM_MSG_TMPL, "ikeTunConnParams");
mIkeTunConnParams = ikeTunConnParams;
-
- final IkeSessionParams ikeSessionParams = mIkeTunConnParams.getIkeSessionParams();
- mServerAddr = ikeSessionParams.getServerHostname();
-
- mType = getTypeFromIkeSession(ikeSessionParams);
- mUserCert = getUserCertFromIkeSession(ikeSessionParams);
- mServerRootCaCert = getServerRootCaCertFromIkeSession(ikeSessionParams);
- mRsaPrivateKey = getRsaPrivateKeyFromIkeSession(ikeSessionParams);
- mServerRootCaCert = getServerRootCaCertFromIkeSession(ikeSessionParams);
- mUsername = getUsernameFromIkeSession(ikeSessionParams);
- mPassword = getPasswordFromIkeSession(ikeSessionParams);
- mPresharedKey = getPresharedKeyFromIkeSession(ikeSessionParams);
- mUserIdentity = getUserIdentityFromIkeSession(ikeSessionParams);
+ mServerAddr = null;
+ mUserIdentity = null;
}
private void resetAuthParams() {
@@ -862,6 +824,10 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
* authentication method may be set. This method will overwrite any previously set
* authentication method.
*
+ * <p>It's not allowed to set this if this {@link Builder} is constructed from an
+ * {@link IkeTunnelConnectionParams}. This information should be retrieved from
+ * {@link IkeTunnelConnectionParams}
+ *
* @param user the username to be used for EAP-MSCHAPv2 authentication
* @param pass the password to be used for EAP-MSCHAPv2 authentication
* @param serverRootCa the root certificate to be used for verifying the identity of the
@@ -898,6 +864,10 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
* Only one authentication method may be set. This method will overwrite any previously set
* authentication method.
*
+ * <p>It's not allowed to set this if this {@link Builder} is constructed from an
+ * {@link IkeTunnelConnectionParams}. This information should be retrieved from
+ * {@link IkeTunnelConnectionParams}
+ *
* @param userCert the username to be used for RSA Digital signiture authentication
* @param key the PrivateKey instance associated with the user ceritificate, used for
* constructing the signature
@@ -936,6 +906,10 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
* authentication method may be set. This method will overwrite any previously set
* authentication method.
*
+ * <p>It's not allowed to set this if this {@link Builder} is constructed from an
+ * {@link IkeTunnelConnectionParams}. This information should be retrieved from
+ * {@link IkeTunnelConnectionParams}
+ *
* @param psk the key to be used for Pre-Shared Key authentication
* @return this {@link Builder} object to facilitate chaining of method calls
*/
@@ -1068,6 +1042,10 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
* Authentication, and one that provides Encryption. Authenticated Encryption with
* Associated Data (AEAD) algorithms provide both Authentication and Encryption.
*
+ * <p>It's not allowed to set this if this {@link Builder} is constructed from an
+ * {@link IkeTunnelConnectionParams}. This information should be retrieved from
+ * {@link IkeTunnelConnectionParams}
+ *
* <p>By default, this profile will use any algorithm defined in {@link IpSecAlgorithm},
* with the exception of those considered insecure (as described above).
*
@@ -1079,6 +1057,7 @@ public final class Ikev2VpnProfile extends PlatformVpnProfile {
@RequiresFeature(PackageManager.FEATURE_IPSEC_TUNNELS)
public Builder setAllowedAlgorithms(@NonNull List<String> algorithmNames) {
checkNotNull(algorithmNames, MISSING_PARAM_MSG_TMPL, "algorithmNames");
+ checkBuilderSetter(mIkeTunConnParams != null, "algorithmNames");
validateAllowedAlgorithms(algorithmNames);
mAllowedAlgorithms = algorithmNames;
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index fe6ae78ccf2d..3be4c3edc10e 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -98,7 +98,7 @@ public class FeatureFlagUtils {
DEFAULT_FLAGS.put("settings_search_always_expand", "true");
DEFAULT_FLAGS.put(SETTINGS_APP_LANGUAGE_SELECTION, "true");
DEFAULT_FLAGS.put(SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS, "true");
- DEFAULT_FLAGS.put(SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME, "false");
+ DEFAULT_FLAGS.put(SETTINGS_APP_ALLOW_DARK_THEME_ACTIVATION_AT_BEDTIME, "true");
DEFAULT_FLAGS.put(SETTINGS_HIDE_SECOND_LAYER_PAGE_NAVIGATE_UP_BUTTON_IN_TWO_PANE, "true");
}
diff --git a/core/java/android/util/SparseSetArray.java b/core/java/android/util/SparseSetArray.java
index f5025f7a9e99..f85280f0264b 100644
--- a/core/java/android/util/SparseSetArray.java
+++ b/core/java/android/util/SparseSetArray.java
@@ -15,15 +15,34 @@
*/
package android.util;
+import android.annotation.NonNull;
+
/**
* A sparse array of ArraySets, which is suitable to hold userid->packages association.
*
* @hide
*/
public class SparseSetArray<T> {
- private final SparseArray<ArraySet<T>> mData = new SparseArray<>();
+ private final SparseArray<ArraySet<T>> mData;
public SparseSetArray() {
+ mData = new SparseArray<>();
+ }
+
+ /**
+ * Copy constructor
+ */
+ public SparseSetArray(@NonNull SparseSetArray<T> src) {
+ final int arraySize = src.size();
+ mData = new SparseArray<>(arraySize);
+ for (int i = 0; i < arraySize; i++) {
+ final int key = src.keyAt(i);
+ final ArraySet<T> set = src.get(key);
+ final int setSize = set.size();
+ for (int j = 0; j < setSize; j++) {
+ add(key, set.valueAt(j));
+ }
+ }
}
/**
diff --git a/core/java/android/view/RemoteAnimationTarget.java b/core/java/android/view/RemoteAnimationTarget.java
index 2dac81c66d2a..e98d046e8c6c 100644
--- a/core/java/android/view/RemoteAnimationTarget.java
+++ b/core/java/android/view/RemoteAnimationTarget.java
@@ -33,6 +33,7 @@ import static android.view.RemoteAnimationTargetProto.TASK_ID;
import static android.view.RemoteAnimationTargetProto.WINDOW_CONFIGURATION;
import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE;
+import android.annotation.ColorInt;
import android.annotation.IntDef;
import android.app.ActivityManager;
import android.app.TaskInfo;
@@ -221,6 +222,12 @@ public class RemoteAnimationTarget implements Parcelable {
*/
public boolean hasAnimatingParent;
+ /**
+ * The background color of animation in case the task info is not available if the transition
+ * is activity level.
+ */
+ public @ColorInt int backgroundColor;
+
public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent,
Rect clipRect, Rect contentInsets, int prefixOrderIndex, Point position,
Rect localBounds, Rect screenSpaceBounds,
@@ -279,6 +286,7 @@ public class RemoteAnimationTarget implements Parcelable {
allowEnterPip = in.readBoolean();
windowType = in.readInt();
hasAnimatingParent = in.readBoolean();
+ backgroundColor = in.readInt();
}
@Override
@@ -307,6 +315,7 @@ public class RemoteAnimationTarget implements Parcelable {
dest.writeBoolean(allowEnterPip);
dest.writeInt(windowType);
dest.writeBoolean(hasAnimatingParent);
+ dest.writeInt(backgroundColor);
}
public void dump(PrintWriter pw, String prefix) {
@@ -327,6 +336,7 @@ public class RemoteAnimationTarget implements Parcelable {
pw.print(prefix); pw.print("allowEnterPip="); pw.println(allowEnterPip);
pw.print(prefix); pw.print("windowType="); pw.print(windowType);
pw.print(prefix); pw.print("hasAnimatingParent="); pw.print(hasAnimatingParent);
+ pw.print(prefix); pw.print("backgroundColor="); pw.print(backgroundColor);
}
public void dumpDebug(ProtoOutputStream proto, long fieldId) {
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 29a9926aeb9f..aae930edb729 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -216,10 +216,14 @@ public final class WindowManagerGlobal {
public String[] getViewRootNames() {
synchronized (mLock) {
final int numRoots = mRoots.size();
- String[] mViewRoots = new String[numRoots];
+ final int windowlessRoots = mWindowlessRoots.size();
+ String[] mViewRoots = new String[numRoots + windowlessRoots];
for (int i = 0; i < numRoots; ++i) {
mViewRoots[i] = getWindowName(mRoots.get(i));
}
+ for (int i = 0; i < windowlessRoots; ++i) {
+ mViewRoots[i + numRoots] = getWindowName(mWindowlessRoots.get(i));
+ }
return mViewRoots;
}
}
@@ -288,6 +292,10 @@ public final class WindowManagerGlobal {
final ViewRootImpl root = mRoots.get(i);
if (name.equals(getWindowName(root))) return root.getView();
}
+ for (int i = mWindowlessRoots.size() - 1; i >= 0; --i) {
+ final ViewRootImpl root = mWindowlessRoots.get(i);
+ if (name.equals(getWindowName(root))) return root.getView();
+ }
}
return null;
diff --git a/core/java/android/window/WindowContextController.java b/core/java/android/window/WindowContextController.java
index 5007df574ec1..4b9a957f541d 100644
--- a/core/java/android/window/WindowContextController.java
+++ b/core/java/android/window/WindowContextController.java
@@ -41,14 +41,13 @@ import java.lang.annotation.Retention;
* @hide
*/
public class WindowContextController {
- // TODO(220049234): Disable attach debug logging before shipping.
- private static final boolean DEBUG_ATTACH = true;
+ private static final boolean DEBUG_ATTACH = false;
private static final String TAG = "WindowContextController";
/**
- * {@link AttachStatus.STATUS_ATTACHED} to indicate that the {@code mToken} is associated with a
+ * {@link AttachStatus#STATUS_ATTACHED} to indicate that the {@code mToken} is associated with a
* {@link com.android.server.wm.DisplayArea}. Note that {@code mToken} is able to attach a
- * WindowToken after this flag sets to {@link AttachStatus.STATUS_ATTACHED}.
+ * WindowToken after this flag sets to {@link AttachStatus#STATUS_ATTACHED}.
*/
@VisibleForTesting
public int mAttachedToDisplayArea = AttachStatus.STATUS_INITIALIZED;
diff --git a/core/java/com/android/internal/app/AppLocaleStore.java b/core/java/com/android/internal/app/AppLocaleStore.java
index 76e58988eedf..f95838516927 100644
--- a/core/java/com/android/internal/app/AppLocaleStore.java
+++ b/core/java/com/android/internal/app/AppLocaleStore.java
@@ -16,6 +16,8 @@
package com.android.internal.app;
+import static com.android.internal.app.AppLocaleStore.AppLocaleResult.LocaleStatus;
+
import android.app.LocaleConfig;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -25,41 +27,43 @@ import android.util.Log;
import java.util.ArrayList;
import java.util.Locale;
-public class AppLocaleStore {
+class AppLocaleStore {
private static final String TAG = AppLocaleStore.class.getSimpleName();
- public static ArrayList<Locale> getAppSupportedLocales(Context context, String packageName) {
+ public static AppLocaleResult getAppSupportedLocales(
+ Context context, String packageName) {
+ LocaleConfig localeConfig = null;
+ AppLocaleResult.LocaleStatus localeStatus = LocaleStatus.UNKNOWN_FAILURE;
ArrayList<Locale> appSupportedLocales = new ArrayList<>();
- LocaleList packageLocaleList = getPackageLocales(context, packageName);
- if (packageLocaleList != null && packageLocaleList.size() > 0) {
- for (int i = 0; i < packageLocaleList.size(); i++) {
- appSupportedLocales.add(packageLocaleList.get(i));
- }
- Log.d(TAG, "getAppSupportedLocales from LocaleConfig. Size: "
- + appSupportedLocales.size());
- } else {
- String[] languages = getAssetLocales(context, packageName);
- for (String language : languages) {
- appSupportedLocales.add(Locale.forLanguageTag(language));
- }
- Log.d(TAG, "getAppSupportedLocales from asset. Size: "
- + appSupportedLocales.size());
+ try {
+ localeConfig = new LocaleConfig(context.createPackageContext(packageName, 0));
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(TAG, "Can not found the package name : " + packageName + " / " + e);
}
- return appSupportedLocales;
- }
- private static LocaleList getPackageLocales(Context context, String packageName) {
- try {
- LocaleConfig localeConfig =
- new LocaleConfig(context.createPackageContext(packageName, 0));
+ if (localeConfig != null) {
if (localeConfig.getStatus() == LocaleConfig.STATUS_SUCCESS) {
- return localeConfig.getSupportedLocales();
+ LocaleList packageLocaleList = localeConfig.getSupportedLocales();
+ if (packageLocaleList.size() > 0) {
+ localeStatus = LocaleStatus.GET_SUPPORTED_LANGUAGE_FROM_LOCAL_CONFIG;
+ for (int i = 0; i < packageLocaleList.size(); i++) {
+ appSupportedLocales.add(packageLocaleList.get(i));
+ }
+ } else {
+ localeStatus = LocaleStatus.NO_SUPPORTED_LANGUAGE;
+ }
+ } else if (localeConfig.getStatus() == LocaleConfig.STATUS_NOT_SPECIFIED) {
+ localeStatus = LocaleStatus.GET_SUPPORTED_LANGUAGE_FROM_ASSET;
+ String[] languages = getAssetLocales(context, packageName);
+ for (String language : languages) {
+ appSupportedLocales.add(Locale.forLanguageTag(language));
+ }
}
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, "Can not found the package name : " + packageName + " / " + e);
}
- return null;
+ Log.d(TAG, "getAppSupportedLocales(). status: " + localeStatus
+ + ", appSupportedLocales:" + appSupportedLocales.size());
+ return new AppLocaleResult(localeStatus, appSupportedLocales);
}
private static String[] getAssetLocales(Context context, String packageName) {
@@ -82,4 +86,20 @@ public class AppLocaleStore {
return new String[0];
}
+ static class AppLocaleResult {
+ enum LocaleStatus {
+ UNKNOWN_FAILURE,
+ NO_SUPPORTED_LANGUAGE,
+ GET_SUPPORTED_LANGUAGE_FROM_LOCAL_CONFIG,
+ GET_SUPPORTED_LANGUAGE_FROM_ASSET,
+ }
+
+ LocaleStatus mLocaleStatus;
+ ArrayList<Locale> mAppSupportedLocales;
+
+ public AppLocaleResult(LocaleStatus localeStatus, ArrayList<Locale> appSupportedLocales) {
+ this.mLocaleStatus = localeStatus;
+ this.mAppSupportedLocales = appSupportedLocales;
+ }
+ }
}
diff --git a/core/java/com/android/internal/app/LocalePickerWithRegion.java b/core/java/com/android/internal/app/LocalePickerWithRegion.java
index 52c74cf81508..213af26a436f 100644
--- a/core/java/com/android/internal/app/LocalePickerWithRegion.java
+++ b/core/java/com/android/internal/app/LocalePickerWithRegion.java
@@ -16,6 +16,8 @@
package com.android.internal.app;
+import static com.android.internal.app.AppLocaleStore.AppLocaleResult.LocaleStatus;
+
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.ListFragment;
@@ -158,30 +160,39 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O
if (appCurrentLocale != null && !isForCountryMode) {
mLocaleList.add(appCurrentLocale);
}
- filterTheLanguagesNotSupportedInApp(context, appPackageName);
- if (!isForCountryMode) {
- mLocaleList.add(LocaleStore.getSystemDefaultLocaleInfo());
+ AppLocaleStore.AppLocaleResult result =
+ AppLocaleStore.getAppSupportedLocales(context, appPackageName);
+ boolean shouldShowList =
+ result.mLocaleStatus == LocaleStatus.GET_SUPPORTED_LANGUAGE_FROM_LOCAL_CONFIG
+ || result.mLocaleStatus == LocaleStatus.GET_SUPPORTED_LANGUAGE_FROM_ASSET;
+
+ mLocaleList = filterTheLanguagesNotSupportedInApp(
+ shouldShowList, result.mAppSupportedLocales);
+
+ // Add "system language"
+ if (!isForCountryMode && shouldShowList) {
+ mLocaleList.add(LocaleStore.getSystemDefaultLocaleInfo(appCurrentLocale == null));
}
}
return true;
}
- private void filterTheLanguagesNotSupportedInApp(Context context, String appPackageName) {
- ArrayList<Locale> supportedLocales =
- AppLocaleStore.getAppSupportedLocales(context, appPackageName);
-
+ private Set<LocaleStore.LocaleInfo> filterTheLanguagesNotSupportedInApp(
+ boolean shouldShowList, ArrayList<Locale> supportedLocales) {
Set<LocaleStore.LocaleInfo> filteredList = new HashSet<>();
- for(LocaleStore.LocaleInfo li: mLocaleList) {
- for(Locale l: supportedLocales) {
- if(LocaleList.matchesLanguageAndScript(li.getLocale(), l)) {
- filteredList.add(li);
+ if (shouldShowList) {
+ for(LocaleStore.LocaleInfo li: mLocaleList) {
+ for(Locale l: supportedLocales) {
+ if(LocaleList.matchesLanguageAndScript(li.getLocale(), l)) {
+ filteredList.add(li);
+ }
}
}
+ Log.d(TAG, "mLocaleList after app-supported filter: " + filteredList.size());
}
- Log.d(TAG, "mLocaleList after app-supported filter: " + filteredList.size());
- mLocaleList = filteredList;
+ return filteredList;
}
private void returnToParentFrame() {
diff --git a/core/java/com/android/internal/app/LocaleStore.java b/core/java/com/android/internal/app/LocaleStore.java
index cea8eaa3ee7f..eb11b9b8b138 100644
--- a/core/java/com/android/internal/app/LocaleStore.java
+++ b/core/java/com/android/internal/app/LocaleStore.java
@@ -281,9 +281,12 @@ public class LocaleStore {
* The "system default" is special case for per-app picker. Intentionally keep the locale
* empty to let activity know "system default" been selected.
*/
- public static LocaleInfo getSystemDefaultLocaleInfo() {
+ public static LocaleInfo getSystemDefaultLocaleInfo(boolean hasAppLanguage) {
LocaleInfo systemDefaultInfo = new LocaleInfo("");
systemDefaultInfo.mSuggestionFlags |= LocaleInfo.SUGGESTION_TYPE_SYSTEM_LANGUAGE;
+ if (hasAppLanguage) {
+ systemDefaultInfo.mSuggestionFlags |= LocaleInfo.SUGGESTION_TYPE_CURRENT;
+ }
systemDefaultInfo.mIsTranslated = true;
return systemDefaultInfo;
}
diff --git a/core/java/com/android/internal/app/SuggestedLocaleAdapter.java b/core/java/com/android/internal/app/SuggestedLocaleAdapter.java
index 2eb104ed215a..68b8968fe399 100644
--- a/core/java/com/android/internal/app/SuggestedLocaleAdapter.java
+++ b/core/java/com/android/internal/app/SuggestedLocaleAdapter.java
@@ -27,6 +27,7 @@ import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
+import android.widget.FrameLayout;
import android.widget.TextView;
import com.android.internal.R;
@@ -54,7 +55,11 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
private static final int TYPE_HEADER_ALL_OTHERS = 1;
private static final int TYPE_LOCALE = 2;
private static final int TYPE_SYSTEM_LANGUAGE_FOR_APP_LANGUAGE_PICKER = 3;
+ private static final int TYPE_CURRENT_LOCALE = 4;
private static final int MIN_REGIONS_FOR_SUGGESTIONS = 6;
+ private static final int APP_LANGUAGE_PICKER_TYPE_COUNT = 5;
+ private static final int SYSTEM_LANGUAGE_TYPE_COUNT = 3;
+ private static final int SYSTEM_LANGUAGE_WITHOUT_HEADER_TYPE_COUNT = 1;
private ArrayList<LocaleStore.LocaleInfo> mLocaleOptions;
private ArrayList<LocaleStore.LocaleInfo> mOriginalLocaleOptions;
@@ -93,7 +98,8 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
@Override
public boolean isEnabled(int position) {
return getItemViewType(position) == TYPE_LOCALE
- || getItemViewType(position) == TYPE_SYSTEM_LANGUAGE_FOR_APP_LANGUAGE_PICKER;
+ || getItemViewType(position) == TYPE_SYSTEM_LANGUAGE_FOR_APP_LANGUAGE_PICKER
+ || getItemViewType(position) == TYPE_CURRENT_LOCALE;
}
@Override
@@ -112,6 +118,9 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
if (item.isSystemLocale()) {
return TYPE_SYSTEM_LANGUAGE_FOR_APP_LANGUAGE_PICKER;
}
+ if (item.isAppCurrentLocale()) {
+ return TYPE_CURRENT_LOCALE;
+ }
return TYPE_LOCALE;
}
}
@@ -119,11 +128,13 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
@Override
public int getViewTypeCount() {
if (!TextUtils.isEmpty(mAppPackageName) && showHeaders()) {
- return 4; // Two headers and 1 for "System language"
+ // Two headers, 1 "System language", 1 current locale
+ return APP_LANGUAGE_PICKER_TYPE_COUNT;
} else if (showHeaders()) {
- return 3; // Two headers in addition to the locales
+ // Two headers in addition to the locales
+ return SYSTEM_LANGUAGE_TYPE_COUNT;
} else {
- return 1; // Locales items only
+ return SYSTEM_LANGUAGE_WITHOUT_HEADER_TYPE_COUNT; // Locales items only
}
}
@@ -204,11 +215,15 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
textView.setTextLocale(
mDisplayLocale != null ? mDisplayLocale : Locale.getDefault());
break;
-
case TYPE_SYSTEM_LANGUAGE_FOR_APP_LANGUAGE_PICKER:
if (!(convertView instanceof ViewGroup)) {
- convertView = mInflater.inflate(
- R.layout.app_language_picker_system_default, parent, false);
+ if (((LocaleStore.LocaleInfo)getItem(position)).isAppCurrentLocale()) {
+ convertView = mInflater.inflate(
+ R.layout.app_language_picker_system_current, parent, false);
+ } else {
+ convertView = mInflater.inflate(
+ R.layout.app_language_picker_system_default, parent, false);
+ }
}
Locale defaultLocale = Locale.getDefault();
@@ -219,25 +234,20 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
subtitle.setText(defaultLocale.getDisplayName());
subtitle.setTextLocale(defaultLocale);
break;
+ case TYPE_CURRENT_LOCALE:
+ if (!(convertView instanceof ViewGroup)) {
+ convertView = mInflater.inflate(
+ R.layout.app_language_picker_current_locale_item, parent, false);
+ }
+ updateTextView(
+ convertView, convertView.findViewById(R.id.language_picker_item), position);
+ break;
default:
// Covers both null, and "reusing" a wrong kind of view
if (!(convertView instanceof ViewGroup)) {
convertView = mInflater.inflate(R.layout.language_picker_item, parent, false);
}
-
- TextView text = (TextView) convertView.findViewById(R.id.locale);
- LocaleStore.LocaleInfo item = (LocaleStore.LocaleInfo) getItem(position);
- text.setText(item.getLabel(mCountryMode));
- text.setTextLocale(item.getLocale());
- text.setContentDescription(item.getContentDescription(mCountryMode));
- if (mCountryMode) {
- int layoutDir = TextUtils.getLayoutDirectionFromLocale(item.getParent());
- //noinspection ResourceType
- convertView.setLayoutDirection(layoutDir);
- text.setTextDirection(layoutDir == View.LAYOUT_DIRECTION_RTL
- ? View.TEXT_DIRECTION_RTL
- : View.TEXT_DIRECTION_LTR);
- }
+ updateTextView(convertView, convertView.findViewById(R.id.locale), position);
}
return convertView;
}
@@ -348,4 +358,19 @@ public class SuggestedLocaleAdapter extends BaseAdapter implements Filterable {
public Filter getFilter() {
return new FilterByNativeAndUiNames();
}
+
+ private void updateTextView(View convertView, TextView text, int position) {
+ LocaleStore.LocaleInfo item = (LocaleStore.LocaleInfo) getItem(position);
+ text.setText(item.getLabel(mCountryMode));
+ text.setTextLocale(item.getLocale());
+ text.setContentDescription(item.getContentDescription(mCountryMode));
+ if (mCountryMode) {
+ int layoutDir = TextUtils.getLayoutDirectionFromLocale(item.getParent());
+ //noinspection ResourceType
+ convertView.setLayoutDirection(layoutDir);
+ text.setTextDirection(layoutDir == View.LAYOUT_DIRECTION_RTL
+ ? View.TEXT_DIRECTION_RTL
+ : View.TEXT_DIRECTION_LTR);
+ }
+ }
}
diff --git a/core/java/com/android/internal/net/VpnProfile.java b/core/java/com/android/internal/net/VpnProfile.java
index 576860d6a50f..b334e9172729 100644
--- a/core/java/com/android/internal/net/VpnProfile.java
+++ b/core/java/com/android/internal/net/VpnProfile.java
@@ -22,12 +22,17 @@ import android.net.Ikev2VpnProfile;
import android.net.PlatformVpnProfile;
import android.net.ProxyInfo;
import android.net.Uri;
+import android.net.ipsec.ike.IkeTunnelConnectionParams;
+import android.net.vcn.persistablebundleutils.TunnelConnectionParamsUtils;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
+import android.os.PersistableBundle;
import android.text.TextUtils;
+import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.HexDump;
import com.android.net.module.util.ProxyUtils;
import java.io.UnsupportedEncodingException;
@@ -69,7 +74,8 @@ public final class VpnProfile implements Cloneable, Parcelable {
public static final int TYPE_IKEV2_IPSEC_USER_PASS = 6;
public static final int TYPE_IKEV2_IPSEC_PSK = 7;
public static final int TYPE_IKEV2_IPSEC_RSA = 8;
- public static final int TYPE_MAX = 8;
+ public static final int TYPE_IKEV2_FROM_IKE_TUN_CONN_PARAMS = 9;
+ public static final int TYPE_MAX = 9;
// Match these constants with R.array.vpn_proxy_settings.
public static final int PROXY_NONE = 0;
@@ -145,25 +151,27 @@ public final class VpnProfile implements Cloneable, Parcelable {
public final boolean excludeLocalRoutes; // 25
public final boolean requiresInternetValidation; // 26
+ public final IkeTunnelConnectionParams ikeTunConnParams; // 27
// Helper fields.
@UnsupportedAppUsage
public transient boolean saveLogin = false;
public VpnProfile(String key) {
- this(key, false, false, false);
+ this(key, false, false, false, null);
}
public VpnProfile(String key, boolean isRestrictedToTestNetworks) {
- this(key, isRestrictedToTestNetworks, false, false);
+ this(key, isRestrictedToTestNetworks, false, false, null);
}
public VpnProfile(String key, boolean isRestrictedToTestNetworks, boolean excludeLocalRoutes,
- boolean requiresInternetValidation) {
+ boolean requiresInternetValidation, IkeTunnelConnectionParams ikeTunConnParams) {
this.key = key;
this.isRestrictedToTestNetworks = isRestrictedToTestNetworks;
this.excludeLocalRoutes = excludeLocalRoutes;
this.requiresInternetValidation = requiresInternetValidation;
+ this.ikeTunConnParams = ikeTunConnParams;
}
@UnsupportedAppUsage
@@ -195,6 +203,10 @@ public final class VpnProfile implements Cloneable, Parcelable {
isRestrictedToTestNetworks = in.readBoolean();
excludeLocalRoutes = in.readBoolean();
requiresInternetValidation = in.readBoolean();
+ final PersistableBundle bundle =
+ in.readParcelable(PersistableBundle.class.getClassLoader());
+ ikeTunConnParams = (bundle == null) ? null
+ : TunnelConnectionParamsUtils.fromPersistableBundle(bundle);
}
/**
@@ -244,6 +256,8 @@ public final class VpnProfile implements Cloneable, Parcelable {
out.writeBoolean(isRestrictedToTestNetworks);
out.writeBoolean(excludeLocalRoutes);
out.writeBoolean(requiresInternetValidation);
+ out.writeParcelable(ikeTunConnParams == null ? null
+ : TunnelConnectionParamsUtils.toPersistableBundle(ikeTunConnParams), flags);
}
/**
@@ -259,15 +273,17 @@ public final class VpnProfile implements Cloneable, Parcelable {
}
String[] values = new String(value, StandardCharsets.UTF_8).split(VALUE_DELIMITER, -1);
+
// Acceptable numbers of values are:
// 14-19: Standard profile, with option for serverCert, proxy
// 24: Standard profile with serverCert, proxy and platform-VPN parameters
// 25: Standard profile with platform-VPN parameters and isRestrictedToTestNetworks
// 26: ...and excludeLocalRoutes
- // (26 can only be found on dogfood devices)
// 27: ...and requiresInternetValidation
+ // (26,27 can only be found on dogfood devices)
+ // 28: ...and ikeTunConnParams
if ((values.length < 14 || (values.length > 19 && values.length < 24)
- || values.length > 27)) {
+ || values.length > 28)) {
return null;
}
@@ -292,8 +308,22 @@ public final class VpnProfile implements Cloneable, Parcelable {
requiresInternetValidation = false;
}
+ final IkeTunnelConnectionParams tempIkeTunConnParams;
+ // Assign null directly if the ikeTunConParams field is empty.
+ if (values.length >= 28 && values[27].length() != 0) {
+ final Parcel parcel = Parcel.obtain();
+ final byte[] bytes = HexDump.hexStringToByteArray(values[27]);
+ parcel.unmarshall(bytes, 0, bytes.length);
+ parcel.setDataPosition(0);
+ final PersistableBundle bundle = (PersistableBundle) parcel.readValue(
+ PersistableBundle.class.getClassLoader());
+ tempIkeTunConnParams = TunnelConnectionParamsUtils.fromPersistableBundle(bundle);
+ } else {
+ tempIkeTunConnParams = null;
+ }
+
VpnProfile profile = new VpnProfile(key, isRestrictedToTestNetworks,
- excludeLocalRoutes, requiresInternetValidation);
+ excludeLocalRoutes, requiresInternetValidation, tempIkeTunConnParams);
profile.name = values[0];
profile.type = Integer.parseInt(values[1]);
if (profile.type < 0 || profile.type > TYPE_MAX) {
@@ -345,6 +375,7 @@ public final class VpnProfile implements Cloneable, Parcelable {
profile.saveLogin = !profile.username.isEmpty() || !profile.password.isEmpty();
return profile;
} catch (Exception e) {
+ Log.d(TAG, "Got exception in decode.", e);
// ignore
}
return null;
@@ -406,6 +437,17 @@ public final class VpnProfile implements Cloneable, Parcelable {
builder.append(VALUE_DELIMITER).append(excludeLocalRoutes);
builder.append(VALUE_DELIMITER).append(requiresInternetValidation);
+ if (ikeTunConnParams != null) {
+ final PersistableBundle bundle =
+ TunnelConnectionParamsUtils.toPersistableBundle(ikeTunConnParams);
+ final Parcel parcel = Parcel.obtain();
+ parcel.writeValue(bundle);
+ final byte[] bytes = parcel.marshall();
+ builder.append(VALUE_DELIMITER).append(HexDump.toHexString(bytes));
+ } else {
+ builder.append(VALUE_DELIMITER).append("");
+ }
+
return builder.toString().getBytes(StandardCharsets.UTF_8);
}
@@ -486,7 +528,8 @@ public final class VpnProfile implements Cloneable, Parcelable {
key, type, server, username, password, dnsServers, searchDomains, routes, mppe,
l2tpSecret, ipsecIdentifier, ipsecSecret, ipsecUserCert, ipsecCaCert, ipsecServerCert,
proxy, mAllowedAlgorithms, isBypassable, isMetered, maxMtu, areAuthParamsInline,
- isRestrictedToTestNetworks, excludeLocalRoutes, requiresInternetValidation);
+ isRestrictedToTestNetworks, excludeLocalRoutes, requiresInternetValidation,
+ ikeTunConnParams);
}
/** Checks VPN profiles for interior equality. */
@@ -521,7 +564,8 @@ public final class VpnProfile implements Cloneable, Parcelable {
&& areAuthParamsInline == other.areAuthParamsInline
&& isRestrictedToTestNetworks == other.isRestrictedToTestNetworks
&& excludeLocalRoutes == other.excludeLocalRoutes
- && requiresInternetValidation == other.requiresInternetValidation;
+ && requiresInternetValidation == other.requiresInternetValidation
+ && Objects.equals(ikeTunConnParams, other.ikeTunConnParams);
}
@NonNull
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index c825f770c0c3..06d12b5195ab 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -59,7 +59,6 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -1487,7 +1486,7 @@ public class SystemConfig {
addFeature(PackageManager.FEATURE_IPSEC_TUNNELS, 0);
}
- if (isFilesystemSupported("erofs")) {
+ if (isErofsSupported()) {
if (isKernelVersionAtLeast(5, 10)) {
addFeature(PackageManager.FEATURE_EROFS, 0);
} else if (isKernelVersionAtLeast(4, 19)) {
@@ -1865,11 +1864,10 @@ public class SystemConfig {
return Process.myUid() == Process.SYSTEM_UID;
}
- private static boolean isFilesystemSupported(String fs) {
+ private static boolean isErofsSupported() {
try {
- final byte[] fsTableData = Files.readAllBytes(Paths.get("/proc/filesystems"));
- final String fsTable = new String(fsTableData, StandardCharsets.UTF_8);
- return fsTable.contains("\t" + fs + "\n");
+ final Path path = Paths.get("/sys/fs/erofs");
+ return Files.exists(path);
} catch (Exception e) {
return false;
}
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 8c33e0719f73..1afd2effef08 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -37,6 +37,7 @@
#include "android_media_AudioFormat.h"
#include "android_media_AudioTrackCallback.h"
#include "android_media_DeviceCallback.h"
+#include "android_media_JNIUtils.h"
#include "android_media_MediaMetricsJNI.h"
#include "android_media_PlaybackParams.h"
#include "android_media_VolumeShaper.h"
@@ -82,7 +83,7 @@ class AudioTrackCallbackImpl : public AudioTrack::IAudioTrackCallback {
AudioTrackCallbackImpl(jclass audioTrackClass, jobject audioTrackWeakRef, bool isOffload)
: mIsOffload(isOffload)
{
- const auto env = getJNIEnv();
+ const auto env = getJNIEnvOrDie();
mAudioTrackClass = (jclass)env->NewGlobalRef(audioTrackClass);
// we use a weak reference so the AudioTrack object can be garbage collected.
mAudioTrackWeakRef = env->NewGlobalRef(audioTrackWeakRef);
@@ -92,7 +93,7 @@ class AudioTrackCallbackImpl : public AudioTrack::IAudioTrackCallback {
AudioTrackCallbackImpl(const AudioTrackCallbackImpl&) = delete;
AudioTrackCallbackImpl& operator=(const AudioTrackCallbackImpl&) = delete;
~AudioTrackCallbackImpl() {
- const auto env = getJNIEnv();
+ const auto env = getJNIEnvOrDie();
env->DeleteGlobalRef(mAudioTrackClass);
env->DeleteGlobalRef(mAudioTrackWeakRef);
}
@@ -129,16 +130,9 @@ class AudioTrackCallbackImpl : public AudioTrack::IAudioTrackCallback {
protected:
jobject mAudioTrackWeakRef;
private:
- JNIEnv* getJNIEnv() {
- auto jni = AndroidRuntime::getJNIEnv();
- if (jni == nullptr) {
- LOG_ALWAYS_FATAL("AudioTrackCallback thread JNI reference is null");
- }
- return jni;
- }
void postEvent(int event, int arg = 0) {
- auto env = getJNIEnv();
+ auto env = getJNIEnvOrDie();
env->CallStaticVoidMethod(
mAudioTrackClass,
javaAudioTrackFields.postNativeEventInJava,
@@ -216,7 +210,6 @@ public:
static void initCheckOrDie(JNIEnv *env) { (void)getIds(env); }
};
-static Mutex sLock;
// ----------------------------------------------------------------------------
#define DEFAULT_OUTPUT_SAMPLE_RATE 44100
@@ -235,32 +228,6 @@ sp<IMemory> allocSharedMem(int sizeInBytes) {
}
return sp<MemoryBase>::make(heap, 0, sizeInBytes);
}
-// TODO(b/218351957) move somewhere?
-template<typename T>
-sp<T> getFieldSp(JNIEnv* env, jobject thiz, jfieldID id)
-{
- // make these fields atomic longs on the java side
- Mutex::Autolock l(sLock);
- return sp<T>::fromExisting(reinterpret_cast<T*>(env->GetLongField(thiz, id)));
-}
-
-// This (semantically) should only be called on AudioTrack creation and release
-template <typename T>
-sp<T> setFieldSp(JNIEnv* env, jobject thiz, const sp<T>& at, jfieldID id)
-{
- Mutex::Autolock l(sLock);
- // I don't think this synchronization actually prevents a race
- // We can still invalidate under our feet in release
- sp<T> old = sp<T>::fromExisting(reinterpret_cast<T*>(env->GetLongField(thiz, id)));
- if (at.get()) {
- at->incStrong((void*)setFieldSp<T>);
- }
- if (old != 0) {
- old->decStrong((void*)setFieldSp<T>);
- }
- env->SetLongField(thiz, id, (jlong)at.get());
- return old;
-}
sp<AudioTrack> getAudioTrack(JNIEnv* env, jobject thiz) {
return getFieldSp<AudioTrack>(env, thiz, javaAudioTrackFields.nativeTrackInJavaObj);
@@ -268,8 +235,9 @@ sp<AudioTrack> getAudioTrack(JNIEnv* env, jobject thiz) {
} // anonymous
// ----------------------------------------------------------------------------
+// For MediaSync
sp<AudioTrack> android_media_AudioTrack_getAudioTrack(JNIEnv* env, jobject audioTrackObj) {
- return getFieldSp<AudioTrack>(env, audioTrackObj, javaAudioTrackFields.nativeTrackInJavaObj);
+ return getAudioTrack(env, audioTrackObj);
}
// ----------------------------------------------------------------------------
@@ -524,8 +492,9 @@ native_init_failure:
if (nSession != NULL) {
env->ReleasePrimitiveArrayCritical(jSession, nSession, 0);
}
- env->SetLongField(thiz, javaAudioTrackFields.jniData, 0);
+ setFieldSp(env, thiz, sp<AudioTrack>{}, javaAudioTrackFields.nativeTrackInJavaObj);
+ setFieldSp(env, thiz, sp<AudioTrackJniStorage>{}, javaAudioTrackFields.jniData);
// lpTrack goes out of scope, so reference count drops to zero
return (jint) AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED;
}
diff --git a/core/jni/android_media_JNIUtils.h b/core/jni/android_media_JNIUtils.h
new file mode 100644
index 000000000000..9da5fa37a8f3
--- /dev/null
+++ b/core/jni/android_media_JNIUtils.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2022 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.
+ */
+
+#pragma once
+
+#include <jni.h>
+
+#include <mutex>
+
+#include <android_runtime/AndroidRuntime.h>
+#include <log/log_main.h>
+#include <utils/RefBase.h>
+
+namespace android {
+
+// TODO (b/218351957) remove static lock
+// This lock is intentionally static, it is local to each TU which is
+// responsible for a single Java class.
+static std::mutex sFieldSpLock;
+
+// getFieldSp and setFieldSp are used to logically represent an owning reference
+// to a native object from across the JNI. The data (underlying ptr) is stored
+// in a field in the Java object as a long. Setting a Java field to a sp
+// involves incrementing the reference count to prevent object destruction.
+// Resetting the field decrements the reference count to avoid memory leaks.
+
+template <typename T>
+sp<T> getFieldSp(JNIEnv* env, jobject thiz, jfieldID id) {
+ const std::lock_guard l{sFieldSpLock};
+ return sp<T>::fromExisting(reinterpret_cast<T*>(env->GetLongField(thiz, id)));
+}
+
+template <typename T>
+sp<T> setFieldSp(JNIEnv* env, jobject thiz, const sp<T>& newSp, jfieldID id) {
+ const std::lock_guard l{sFieldSpLock};
+ sp<T> old = sp<T>::fromExisting(reinterpret_cast<T*>(env->GetLongField(thiz, id)));
+ if (newSp) {
+ newSp->incStrong((void*)setFieldSp<T>);
+ }
+ if (old) {
+ old->decStrong((void*)setFieldSp<T>);
+ }
+ env->SetLongField(thiz, id, (jlong)newSp.get());
+ return old;
+}
+
+inline JNIEnv* getJNIEnvOrDie() {
+ const auto env = AndroidRuntime::getJNIEnv();
+ LOG_ALWAYS_FATAL_IF(env == nullptr,
+ "Thread JNI reference is null. Thread not prepared for Java.");
+ return env;
+}
+
+
+} // namespace android
diff --git a/core/res/res/drawable/ic_check_24dp.xml b/core/res/res/drawable/ic_check_24dp.xml
new file mode 100644
index 000000000000..a0e21ff2826e
--- /dev/null
+++ b/core/res/res/drawable/ic_check_24dp.xml
@@ -0,0 +1,24 @@
+<!--
+ ~ Copyright (C) 2022 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:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"
+ android:fillColor="@android:color/white"/>
+</vector>
diff --git a/core/res/res/layout/app_language_picker_current_locale_item.xml b/core/res/res/layout/app_language_picker_current_locale_item.xml
new file mode 100644
index 000000000000..bf6d9639791a
--- /dev/null
+++ b/core/res/res/layout/app_language_picker_current_locale_item.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 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.
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <FrameLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight=".8">
+ <include
+ android:id="@+id/language_picker_item"
+ layout="@layout/language_picker_item" />
+ </FrameLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight=".2"
+ android:gravity="center"
+ android:minHeight="?android:attr/listPreferredItemHeight">
+ <ImageView
+ android:id="@+id/imageView"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:src="@drawable/ic_check_24dp"
+ app:tint="#0F9D58"/>
+ </LinearLayout>
+</LinearLayout>
diff --git a/core/res/res/layout/app_language_picker_system_current.xml b/core/res/res/layout/app_language_picker_system_current.xml
new file mode 100644
index 000000000000..341ee2528671
--- /dev/null
+++ b/core/res/res/layout/app_language_picker_system_current.xml
@@ -0,0 +1,45 @@
+<!--
+ ~ Copyright (C) 2022 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.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <FrameLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight=".8">
+ <include
+ android:id="@+id/system_language_view"
+ layout="@layout/app_language_picker_system_default" />
+ </FrameLayout>
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight=".2"
+ android:gravity="center"
+ android:minHeight="?android:attr/listPreferredItemHeight">
+ <ImageView
+ android:id="@+id/imageView"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:src="@drawable/ic_check_24dp"
+ app:tint="#0F9D58"/>
+ </LinearLayout>
+</LinearLayout>
diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml
index 783fabe20a6d..f5c82d5019ad 100644
--- a/core/res/res/values-night/colors.xml
+++ b/core/res/res/values-night/colors.xml
@@ -35,4 +35,9 @@
<color name="personal_apps_suspension_notification_color">#8AB4F8</color>
<color name="overview_background">@color/overview_background_dark</color>
+
+ <color name="user_icon_4">#fff439a0</color><!-- pink -->
+ <color name="user_icon_6">#ff4ecde6</color><!-- cyan -->
+ <color name="user_icon_7">#fffbbc04</color><!-- yellow -->
+ <color name="user_icon_8">#fffa903e</color><!-- orange -->
</resources>
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 54325e590347..71c98d002984 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -174,14 +174,14 @@
<color name="system_notification_accent_color">#00000000</color>
<!-- Default user icon colors -->
- <color name="user_icon_1">#ff00bcd4</color><!-- cyan 500 -->
- <color name="user_icon_2">#ff3f51b5</color><!-- indigo 500 -->
- <color name="user_icon_3">#ff4285f4</color><!-- blue 500 -->
- <color name="user_icon_4">#ffe91e63</color><!-- pink 500 -->
- <color name="user_icon_5">#ff0f9d58</color><!-- green 500 -->
- <color name="user_icon_6">#ff8bc34a</color><!-- light green 500 -->
- <color name="user_icon_7">#ffff9800</color><!-- orange 500 -->
- <color name="user_icon_8">#ffff5722</color><!-- deep orange 500 -->
+ <color name="user_icon_1">#ffe46962</color><!-- red -->
+ <color name="user_icon_2">#ffaf5cf7</color><!-- purple -->
+ <color name="user_icon_3">#ff4c8df6</color><!-- blue -->
+ <color name="user_icon_4">#fff439a0</color><!-- pink -->
+ <color name="user_icon_5">#ff1ea446</color><!-- green -->
+ <color name="user_icon_6">#ff129eaf</color><!-- cyan -->
+ <color name="user_icon_7">#ffb26c00</color><!-- yellow -->
+ <color name="user_icon_8">#ffe8710a</color><!-- orange -->
<color name="user_icon_default_gray">#ff9e9e9e</color><!-- gray 500 -->
<color name="user_icon_default_white">#ffffffff</color><!-- white -->
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 42f789bb59fc..35bed2d76425 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2403,6 +2403,8 @@
<integer name="config_dreamsBatteryLevelDrainCutoff">5</integer>
<!-- Limit of how long the device can remain unlocked due to attention checking. -->
<integer name="config_attentionMaximumExtension">900000</integer> <!-- 15 minutes. -->
+ <!-- Is the system user the only user allowed to dream. -->
+ <bool name="config_dreamsOnlyEnabledForSystemUser">false</bool>
<!-- The prefix of dream component names that are loggable. If empty, logs "other" for all. -->
<string name ="config_loggable_dream_prefix" translatable="false"></string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index dd69fa0bebb2..5cba7da92830 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2216,6 +2216,7 @@
<java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenNotPowered" />
<java-symbol type="integer" name="config_dreamsBatteryLevelDrainCutoff" />
<java-symbol type="string" name="config_dreamsDefaultComponent" />
+ <java-symbol type="bool" name="config_dreamsOnlyEnabledForSystemUser" />
<java-symbol type="array" name="config_supportedDreamComplications" />
<java-symbol type="array" name="config_dreamComplicationsEnabledByDefault" />
<java-symbol type="array" name="config_disabledDreamComponents" />
@@ -4754,7 +4755,11 @@
<java-symbol type="drawable" name="ic_swap_horiz" />
<java-symbol type="bool" name="config_notificationForceUserSetOnUpgrade" />
+ <!-- For app language picker -->
<java-symbol type="string" name="system_locale_title" />
<java-symbol type="layout" name="app_language_picker_system_default" />
+ <java-symbol type="layout" name="app_language_picker_system_current" />
+ <java-symbol type="layout" name="app_language_picker_current_locale_item" />
<java-symbol type="id" name="system_locale_subtitle" />
+ <java-symbol type="id" name="language_picker_item" />
</resources>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/apppairs/AppPair.java b/libs/WindowManager/Shell/src/com/android/wm/shell/apppairs/AppPair.java
index e528df8c89b4..3f0b01bef0ce 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/apppairs/AppPair.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/apppairs/AppPair.java
@@ -131,7 +131,7 @@ class AppPair implements ShellTaskOrganizer.TaskListener, SplitLayout.SplitLayou
mDisplayController.getDisplayContext(mRootTaskInfo.displayId),
mRootTaskInfo.configuration, this /* layoutChangeListener */,
mParentContainerCallbacks, mDisplayImeController, mController.getTaskOrganizer(),
- true /* applyDismissingParallax */);
+ SplitLayout.PARALLAX_DISMISSING);
mDisplayInsetsController.addInsetsChangedListener(mRootTaskInfo.displayId, mSplitLayout);
final WindowContainerToken token1 = task1.token;
@@ -327,13 +327,15 @@ class AppPair implements ShellTaskOrganizer.TaskListener, SplitLayout.SplitLayou
@Override
public void onLayoutPositionChanging(SplitLayout layout) {
mSyncQueue.runInSync(t ->
- layout.applySurfaceChanges(t, mTaskLeash1, mTaskLeash2, mDimLayer1, mDimLayer2));
+ layout.applySurfaceChanges(t, mTaskLeash1, mTaskLeash2, mDimLayer1, mDimLayer2,
+ true /* applyResizingOffset */));
}
@Override
public void onLayoutSizeChanging(SplitLayout layout) {
mSyncQueue.runInSync(t ->
- layout.applySurfaceChanges(t, mTaskLeash1, mTaskLeash2, mDimLayer1, mDimLayer2));
+ layout.applySurfaceChanges(t, mTaskLeash1, mTaskLeash2, mDimLayer1, mDimLayer2,
+ true /* applyResizingOffset */));
}
@Override
@@ -342,7 +344,8 @@ class AppPair implements ShellTaskOrganizer.TaskListener, SplitLayout.SplitLayou
layout.applyTaskChanges(wct, mTaskInfo1, mTaskInfo2);
mSyncQueue.queue(wct);
mSyncQueue.runInSync(t ->
- layout.applySurfaceChanges(t, mTaskLeash1, mTaskLeash2, mDimLayer1, mDimLayer2));
+ layout.applySurfaceChanges(t, mTaskLeash1, mTaskLeash2, mDimLayer1, mDimLayer2,
+ false /* applyResizingOffset */));
}
@Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
index cf4647a09a58..227494c04049 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java
@@ -47,7 +47,6 @@ import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.InstanceId;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;
import java.util.Objects;
@@ -808,8 +807,7 @@ public class Bubble implements BubbleViewProvider {
/**
* Description of current bubble state.
*/
- public void dump(
- @NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.print("key: "); pw.println(mKey);
pw.print(" showInShade: "); pw.println(showInShade());
pw.print(" showDot: "); pw.println(showDot());
@@ -819,7 +817,7 @@ public class Bubble implements BubbleViewProvider {
pw.print(" suppressNotif: "); pw.println(shouldSuppressNotification());
pw.print(" autoExpand: "); pw.println(shouldAutoExpand());
if (mExpandedView != null) {
- mExpandedView.dump(fd, pw, args);
+ mExpandedView.dump(pw, args);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
index 80afdee2283a..1a1cd5b27c53 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java
@@ -100,7 +100,6 @@ import com.android.wm.shell.onehanded.OneHandedController;
import com.android.wm.shell.onehanded.OneHandedTransitionCallback;
import com.android.wm.shell.pip.PinnedStackListenerForwarder;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -1424,12 +1423,12 @@ public class BubbleController {
/**
* Description of current bubble state.
*/
- private void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ private void dump(PrintWriter pw, String[] args) {
pw.println("BubbleController state:");
- mBubbleData.dump(fd, pw, args);
+ mBubbleData.dump(pw, args);
pw.println();
if (mStackView != null) {
- mStackView.dump(fd, pw, args);
+ mStackView.dump(pw, args);
}
pw.println();
}
@@ -1790,10 +1789,10 @@ public class BubbleController {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
try {
mMainExecutor.executeBlocking(() -> {
- BubbleController.this.dump(fd, pw, args);
+ BubbleController.this.dump(pw, args);
mCachedState.dump(pw);
});
} catch (InterruptedException e) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
index 9961ad71e64a..c98c0e69de15 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java
@@ -40,7 +40,6 @@ import com.android.internal.util.FrameworkStatsLog;
import com.android.wm.shell.R;
import com.android.wm.shell.bubbles.Bubbles.DismissReason;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
@@ -1080,7 +1079,7 @@ public class BubbleData {
/**
* Description of current bubble data state.
*/
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print("selected: ");
pw.println(mSelectedBubble != null
? mSelectedBubble.getKey()
@@ -1091,13 +1090,13 @@ public class BubbleData {
pw.print("stack bubble count: ");
pw.println(mBubbles.size());
for (Bubble bubble : mBubbles) {
- bubble.dump(fd, pw, args);
+ bubble.dump(pw, args);
}
pw.print("overflow bubble count: ");
pw.println(mOverflowBubbles.size());
for (Bubble bubble : mOverflowBubbles) {
- bubble.dump(fd, pw, args);
+ bubble.dump(pw, args);
}
pw.print("summaryKeys: ");
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index 10ff2fb31b0d..7af8cfafe749 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -67,7 +67,6 @@ import com.android.wm.shell.TaskView;
import com.android.wm.shell.common.AlphaOptimizedButton;
import com.android.wm.shell.common.TriangleShape;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -776,8 +775,7 @@ public class BubbleExpandedView extends LinearLayout {
/**
* Description of current expanded view state.
*/
- public void dump(
- @NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.print("BubbleExpandedView");
pw.print(" taskId: "); pw.println(mTaskId);
pw.print(" stackView: "); pw.println(mStackView);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
index 331941103028..a5998666b3f0 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
@@ -83,7 +83,6 @@ import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -278,7 +277,7 @@ public class BubbleStackView extends FrameLayout
private int mPointerIndexDown = -1;
/** Description of current animation controller state. */
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("Stack view state:");
String bubblesOnScreen = BubbleDebugConfig.formatBubblesString(
@@ -292,8 +291,8 @@ public class BubbleStackView extends FrameLayout
pw.print(" expandedContainerMatrix: ");
pw.println(mExpandedViewContainer.getAnimationMatrix());
- mStackAnimationController.dump(fd, pw, args);
- mExpandedAnimationController.dump(fd, pw, args);
+ mStackAnimationController.dump(pw, args);
+ mExpandedAnimationController.dump(pw, args);
if (mExpandedBubble != null) {
pw.println("Expanded bubble state:");
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
index af403d23d69c..2b2a2f7e35df 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java
@@ -37,7 +37,6 @@ import androidx.annotation.Nullable;
import com.android.wm.shell.common.annotations.ExternalThread;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@@ -251,7 +250,7 @@ public interface Bubbles {
void onConfigChanged(Configuration newConfig);
/** Description of current bubble state. */
- void dump(FileDescriptor fd, PrintWriter pw, String[] args);
+ void dump(PrintWriter pw, String[] args);
/** Listener to find out about stack expansion / collapse events. */
interface BubbleExpandListener {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
index 19d513f81cab..573f42468512 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
@@ -37,7 +37,6 @@ import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
import com.google.android.collect.Sets;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Set;
@@ -432,7 +431,7 @@ public class ExpandedAnimationController
}
/** Description of current animation controller state. */
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("ExpandedAnimationController state:");
pw.print(" isActive: "); pw.println(isActiveController());
pw.print(" animatingExpand: "); pw.println(mAnimatingExpand);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java
index 3ba056a6b4a2..04af60dd7a03 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java
@@ -46,7 +46,6 @@ import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
import com.google.android.collect.Sets;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
@@ -433,7 +432,7 @@ public class StackAnimationController extends
}
/** Description of current animation controller state. */
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("StackAnimationController state:");
pw.print(" isActive: "); pw.println(isActiveController());
pw.print(" restingStackPos: ");
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
index 116d3524e711..ec81d230fae7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java
@@ -72,6 +72,10 @@ import java.io.PrintWriter;
*/
public final class SplitLayout implements DisplayInsetsController.OnInsetsChangedListener {
+ public static final int PARALLAX_NONE = 0;
+ public static final int PARALLAX_DISMISSING = 1;
+ public static final int PARALLAX_ALIGN_CENTER = 2;
+
private final int mDividerWindowWidth;
private final int mDividerInsets;
private final int mDividerSize;
@@ -87,7 +91,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
private final SplitWindowManager mSplitWindowManager;
private final DisplayImeController mDisplayImeController;
private final ImePositionProcessor mImePositionProcessor;
- private final DismissingEffectPolicy mDismissingEffectPolicy;
+ private final ResizingEffectPolicy mSurfaceEffectPolicy;
private final ShellTaskOrganizer mTaskOrganizer;
private final InsetsState mInsetsState = new InsetsState();
@@ -105,7 +109,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
SplitLayoutHandler splitLayoutHandler,
SplitWindowManager.ParentContainerCallbacks parentContainerCallbacks,
DisplayImeController displayImeController, ShellTaskOrganizer taskOrganizer,
- boolean applyDismissingParallax) {
+ int parallaxType) {
mContext = context.createConfigurationContext(configuration);
mOrientation = configuration.orientation;
mRotation = configuration.windowConfiguration.getRotation();
@@ -115,7 +119,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
parentContainerCallbacks);
mTaskOrganizer = taskOrganizer;
mImePositionProcessor = new ImePositionProcessor(mContext.getDisplayId());
- mDismissingEffectPolicy = new DismissingEffectPolicy(applyDismissingParallax);
+ mSurfaceEffectPolicy = new ResizingEffectPolicy(parallaxType);
final Resources resources = context.getResources();
mDividerSize = resources.getDimensionPixelSize(R.dimen.split_divider_bar_width);
@@ -281,7 +285,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
}
DockedDividerUtils.sanitizeStackBounds(mBounds1, true /** topLeft */);
DockedDividerUtils.sanitizeStackBounds(mBounds2, false /** topLeft */);
- mDismissingEffectPolicy.applyDividerPosition(position, isLandscape);
+ mSurfaceEffectPolicy.applyDividerPosition(position, isLandscape);
}
/** Inflates {@link DividerView} on the root surface. */
@@ -486,7 +490,8 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
/** Apply recorded surface layout to the {@link SurfaceControl.Transaction}. */
public void applySurfaceChanges(SurfaceControl.Transaction t, SurfaceControl leash1,
- SurfaceControl leash2, SurfaceControl dimLayer1, SurfaceControl dimLayer2) {
+ SurfaceControl leash2, SurfaceControl dimLayer1, SurfaceControl dimLayer2,
+ boolean applyResizingOffset) {
final SurfaceControl dividerLeash = getDividerLeash();
if (dividerLeash != null) {
mTempRect.set(getRefDividerBounds());
@@ -506,7 +511,10 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
return;
}
- mDismissingEffectPolicy.adjustDismissingSurface(t, leash1, leash2, dimLayer1, dimLayer2);
+ mSurfaceEffectPolicy.adjustDimSurface(t, dimLayer1, dimLayer2);
+ if (applyResizingOffset) {
+ mSurfaceEffectPolicy.adjustRootSurface(t, leash1, leash2);
+ }
}
/** Apply recorded task layout to the {@link WindowContainerTransaction}. */
@@ -590,7 +598,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
* Calls when resizing the split bounds.
*
* @see #applySurfaceChanges(SurfaceControl.Transaction, SurfaceControl, SurfaceControl,
- * SurfaceControl, SurfaceControl)
+ * SurfaceControl, SurfaceControl, boolean)
*/
void onLayoutSizeChanging(SplitLayout layout);
@@ -600,7 +608,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
* @see #applyTaskChanges(WindowContainerTransaction, ActivityManager.RunningTaskInfo,
* ActivityManager.RunningTaskInfo)
* @see #applySurfaceChanges(SurfaceControl.Transaction, SurfaceControl, SurfaceControl,
- * SurfaceControl, SurfaceControl)
+ * SurfaceControl, SurfaceControl, boolean)
*/
void onLayoutSizeChanged(SplitLayout layout);
@@ -609,7 +617,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
* panel.
*
* @see #applySurfaceChanges(SurfaceControl.Transaction, SurfaceControl, SurfaceControl,
- * SurfaceControl, SurfaceControl)
+ * SurfaceControl, SurfaceControl, boolean)
*/
void onLayoutPositionChanging(SplitLayout layout);
@@ -637,21 +645,25 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
* Calculates and applies proper dismissing parallax offset and dimming value to hint users
* dismissing gesture.
*/
- private class DismissingEffectPolicy {
+ private class ResizingEffectPolicy {
/** Indicates whether to offset splitting bounds to hint dismissing progress or not. */
- private final boolean mApplyParallax;
+ private final int mParallaxType;
+
+ int mShrinkSide = DOCKED_INVALID;
// The current dismissing side.
int mDismissingSide = DOCKED_INVALID;
// The parallax offset to hint the dismissing side and progress.
- final Point mDismissingParallaxOffset = new Point();
+ final Point mParallaxOffset = new Point();
// The dimming value to hint the dismissing side and progress.
float mDismissingDimValue = 0.0f;
+ final Rect mContentBounds = new Rect();
+ final Rect mSurfaceBounds = new Rect();
- DismissingEffectPolicy(boolean applyDismissingParallax) {
- mApplyParallax = applyDismissingParallax;
+ ResizingEffectPolicy(int parallaxType) {
+ mParallaxType = parallaxType;
}
/**
@@ -662,7 +674,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
*/
void applyDividerPosition(int position, boolean isLandscape) {
mDismissingSide = DOCKED_INVALID;
- mDismissingParallaxOffset.set(0, 0);
+ mParallaxOffset.set(0, 0);
mDismissingDimValue = 0;
int totalDismissingDistance = 0;
@@ -676,15 +688,39 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
- mDividerSnapAlgorithm.getDismissEndTarget().position;
}
+ final boolean topLeftShrink = isLandscape
+ ? position < mWinBounds1.right : position < mWinBounds1.bottom;
+ if (topLeftShrink) {
+ mShrinkSide = isLandscape ? DOCKED_LEFT : DOCKED_TOP;
+ mContentBounds.set(mWinBounds1);
+ mSurfaceBounds.set(mBounds1);
+ } else {
+ mShrinkSide = isLandscape ? DOCKED_RIGHT : DOCKED_BOTTOM;
+ mContentBounds.set(mWinBounds2);
+ mSurfaceBounds.set(mBounds2);
+ }
+
if (mDismissingSide != DOCKED_INVALID) {
float fraction = Math.max(0,
Math.min(mDividerSnapAlgorithm.calculateDismissingFraction(position), 1f));
mDismissingDimValue = DIM_INTERPOLATOR.getInterpolation(fraction);
- fraction = calculateParallaxDismissingFraction(fraction, mDismissingSide);
+ if (mParallaxType == PARALLAX_DISMISSING) {
+ fraction = calculateParallaxDismissingFraction(fraction, mDismissingSide);
+ if (isLandscape) {
+ mParallaxOffset.x = (int) (fraction * totalDismissingDistance);
+ } else {
+ mParallaxOffset.y = (int) (fraction * totalDismissingDistance);
+ }
+ }
+ }
+
+ if (mParallaxType == PARALLAX_ALIGN_CENTER) {
if (isLandscape) {
- mDismissingParallaxOffset.x = (int) (fraction * totalDismissingDistance);
+ mParallaxOffset.x =
+ (mSurfaceBounds.width() - mContentBounds.width()) / 2;
} else {
- mDismissingParallaxOffset.y = (int) (fraction * totalDismissingDistance);
+ mParallaxOffset.y =
+ (mSurfaceBounds.height() - mContentBounds.height()) / 2;
}
}
}
@@ -704,41 +740,66 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
}
/** Applies parallax offset and dimming value to the root surface at the dismissing side. */
- boolean adjustDismissingSurface(SurfaceControl.Transaction t,
- SurfaceControl leash1, SurfaceControl leash2,
+ void adjustRootSurface(SurfaceControl.Transaction t,
+ SurfaceControl leash1, SurfaceControl leash2) {
+ SurfaceControl targetLeash = null;
+
+ if (mParallaxType == PARALLAX_DISMISSING) {
+ switch (mDismissingSide) {
+ case DOCKED_TOP:
+ case DOCKED_LEFT:
+ targetLeash = leash1;
+ mTempRect.set(mBounds1);
+ break;
+ case DOCKED_BOTTOM:
+ case DOCKED_RIGHT:
+ targetLeash = leash2;
+ mTempRect.set(mBounds2);
+ break;
+ }
+ } else if (mParallaxType == PARALLAX_ALIGN_CENTER) {
+ switch (mShrinkSide) {
+ case DOCKED_TOP:
+ case DOCKED_LEFT:
+ targetLeash = leash1;
+ mTempRect.set(mBounds1);
+ break;
+ case DOCKED_BOTTOM:
+ case DOCKED_RIGHT:
+ targetLeash = leash2;
+ mTempRect.set(mBounds2);
+ break;
+ }
+ }
+ if (mParallaxType != PARALLAX_NONE && targetLeash != null) {
+ t.setPosition(targetLeash,
+ mTempRect.left + mParallaxOffset.x, mTempRect.top + mParallaxOffset.y);
+ // Transform the screen-based split bounds to surface-based crop bounds.
+ mTempRect.offsetTo(-mParallaxOffset.x, -mParallaxOffset.y);
+ t.setWindowCrop(targetLeash, mTempRect);
+ }
+ }
+
+ void adjustDimSurface(SurfaceControl.Transaction t,
SurfaceControl dimLayer1, SurfaceControl dimLayer2) {
- SurfaceControl targetLeash, targetDimLayer;
+ SurfaceControl targetDimLayer;
switch (mDismissingSide) {
case DOCKED_TOP:
case DOCKED_LEFT:
- targetLeash = leash1;
targetDimLayer = dimLayer1;
- mTempRect.set(mBounds1);
break;
case DOCKED_BOTTOM:
case DOCKED_RIGHT:
- targetLeash = leash2;
targetDimLayer = dimLayer2;
- mTempRect.set(mBounds2);
break;
case DOCKED_INVALID:
default:
t.setAlpha(dimLayer1, 0).hide(dimLayer1);
t.setAlpha(dimLayer2, 0).hide(dimLayer2);
- return false;
- }
-
- if (mApplyParallax) {
- t.setPosition(targetLeash,
- mTempRect.left + mDismissingParallaxOffset.x,
- mTempRect.top + mDismissingParallaxOffset.y);
- // Transform the screen-based split bounds to surface-based crop bounds.
- mTempRect.offsetTo(-mDismissingParallaxOffset.x, -mDismissingParallaxOffset.y);
- t.setWindowCrop(targetLeash, mTempRect);
+ return;
}
t.setAlpha(targetDimLayer, mDismissingDimValue)
.setVisibility(targetDimLayer, mDismissingDimValue > 0.001f);
- return true;
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java
index c20b7d9b2747..b310ee2095bf 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/BackgroundWindowManager.java
@@ -142,12 +142,7 @@ public final class BackgroundWindowManager extends WindowlessWindowManager {
* @param displayLayout The latest {@link DisplayLayout} for display bounds.
*/
public void onDisplayChanged(DisplayLayout displayLayout) {
- // One-handed mode is only available on portrait.
- if (displayLayout.height() > displayLayout.width()) {
- mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
- } else {
- mDisplayBounds = new Rect(0, 0, displayLayout.height(), displayLayout.width());
- }
+ mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
}
private void updateThemeOnly() {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
index 48acfc1c76e7..179b725ab210 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
@@ -37,7 +37,6 @@ import android.os.ServiceManager;
import android.os.SystemProperties;
import android.provider.Settings;
import android.util.Slog;
-import android.view.Surface;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
import android.window.WindowContainerTransaction;
@@ -349,8 +348,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
return;
}
- final int currentRotation = mDisplayAreaOrganizer.getDisplayLayout().rotation();
- if (currentRotation != Surface.ROTATION_0 && currentRotation != Surface.ROTATION_180) {
+ if (mDisplayAreaOrganizer.getDisplayLayout().isLandscape()) {
Slog.w(TAG, "One handed mode only support portrait mode");
return;
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java
index 04e8cf9d2c44..fe997b93616b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedTutorialHandler.java
@@ -149,12 +149,7 @@ public class OneHandedTutorialHandler implements OneHandedTransitionCallback,
* @param displayLayout The latest {@link DisplayLayout} representing current displayId
*/
public void onDisplayChanged(DisplayLayout displayLayout) {
- // Ensure the mDisplayBounds is portrait, due to OHM only support on portrait
- if (displayLayout.height() > displayLayout.width()) {
- mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
- } else {
- mDisplayBounds = new Rect(0, 0, displayLayout.height(), displayLayout.width());
- }
+ mDisplayBounds = new Rect(0, 0, displayLayout.width(), displayLayout.height());
mTutorialAreaHeight = Math.round(mDisplayBounds.height() * mTutorialHeightRatio);
mAlphaTransitionStart = mTutorialAreaHeight * START_TRANSITION_FRACTION;
mBackgroundWindowManager.onDisplayChanged(displayLayout);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt
index 9ede4433a978..239ea38e1e9c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt
@@ -363,48 +363,54 @@ class TvPipKeepClearAlgorithm(private val clock: () -> Long) {
private fun getNearbyStashedPosition(bounds: Rect, keepClearAreas: Set<Rect>): Rect {
val screenBounds = transformedScreenBounds
- val stashCandidates = Array(2) { Rect(bounds) }
+ val stashCandidates = mutableListOf<Rect>()
val areasOverlappingPipX = keepClearAreas.filter { it.intersectsX(bounds) }
val areasOverlappingPipY = keepClearAreas.filter { it.intersectsY(bounds) }
if (screenBounds.bottom - bounds.bottom <= bounds.top - screenBounds.top) {
- // bottom is closer than top, stash downwards
val fullStashTop = screenBounds.bottom - stashOffset
val maxBottom = areasOverlappingPipX.maxByOrNull { it.bottom }!!.bottom
val partialStashTop = maxBottom + pipAreaPadding
- val downPosition = stashCandidates[0]
+ val downPosition = Rect(bounds)
downPosition.offsetTo(bounds.left, min(fullStashTop, partialStashTop))
- } else {
- // top is closer than bottom, stash upwards
- val fullStashY = screenBounds.top - bounds.height() + stashOffset
+ stashCandidates += downPosition
+ }
+ if (screenBounds.bottom - bounds.bottom >= bounds.top - screenBounds.top) {
+ val fullStashBottom = screenBounds.top - bounds.height() + stashOffset
val minTop = areasOverlappingPipX.minByOrNull { it.top }!!.top
- val partialStashY = minTop - bounds.height() - pipAreaPadding
+ val partialStashBottom = minTop - bounds.height() - pipAreaPadding
- val upPosition = stashCandidates[0]
- upPosition.offsetTo(bounds.left, max(fullStashY, partialStashY))
+ val upPosition = Rect(bounds)
+ upPosition.offsetTo(bounds.left, max(fullStashBottom, partialStashBottom))
+ stashCandidates += upPosition
}
if (screenBounds.right - bounds.right <= bounds.left - screenBounds.left) {
- // right is closer than left, stash rightwards
- val fullStashLeft = screenBounds.right - stashOffset
+ val fullStashRight = screenBounds.right - stashOffset
val maxRight = areasOverlappingPipY.maxByOrNull { it.right }!!.right
- val partialStashLeft = maxRight + pipAreaPadding
+ val partialStashRight = maxRight + pipAreaPadding
- val rightPosition = stashCandidates[1]
- rightPosition.offsetTo(min(fullStashLeft, partialStashLeft), bounds.top)
- } else {
- // left is closer than right, stash leftwards
+ val rightPosition = Rect(bounds)
+ rightPosition.offsetTo(min(fullStashRight, partialStashRight), bounds.top)
+ stashCandidates += rightPosition
+ }
+ if (screenBounds.right - bounds.right >= bounds.left - screenBounds.left) {
val fullStashLeft = screenBounds.left - bounds.width() + stashOffset
val minLeft = areasOverlappingPipY.minByOrNull { it.left }!!.left
val partialStashLeft = minLeft - bounds.width() - pipAreaPadding
- val rightPosition = stashCandidates[1]
- rightPosition.offsetTo(max(fullStashLeft, partialStashLeft), bounds.top)
+ val leftPosition = Rect(bounds)
+ leftPosition.offsetTo(max(fullStashLeft, partialStashLeft), bounds.top)
+ stashCandidates += leftPosition
+ }
+
+ if (stashCandidates.isEmpty()) {
+ return bounds
}
return stashCandidates.minByOrNull {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
index f20870ff0b2d..aec51baa4af7 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java
@@ -377,7 +377,8 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
return;
}
- mStageCoordinator.updateSurfaceBounds(null /* layout */, t);
+ mStageCoordinator.updateSurfaceBounds(null /* layout */, t,
+ false /* applyResizingOffset */);
for (int i = 0; i < apps.length; ++i) {
if (apps[i].mode == MODE_OPENING) {
t.show(apps[i].leash);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
index e150cf9cd112..45931de5e35e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java
@@ -30,6 +30,7 @@ import static android.view.WindowManager.TRANSIT_TO_FRONT;
import static android.view.WindowManager.transitTypeToString;
import static android.window.TransitionInfo.FLAG_IS_DISPLAY;
+import static com.android.wm.shell.common.split.SplitLayout.PARALLAX_ALIGN_CENTER;
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT;
import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED;
@@ -495,7 +496,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
// Using legacy transitions, so we can't use blast sync since it conflicts.
mTaskOrganizer.applyTransaction(wct);
- mSyncQueue.runInSync(t -> updateSurfaceBounds(mSplitLayout, t));
+ mSyncQueue.runInSync(t ->
+ updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */));
}
/**
@@ -704,9 +706,11 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mMainStage.deactivate(wct, !fromEnteringPip && mMainStage == childrenToTop);
wct.reorder(mRootTaskInfo.token, false /* onTop */);
mTaskOrganizer.applyTransaction(wct);
- mSyncQueue.runInSync(t -> t
- .setWindowCrop(mMainStage.mRootLeash, null)
- .setWindowCrop(mSideStage.mRootLeash, null));
+ mSyncQueue.runInSync(t -> {
+ setResizingSplits(false /* resizing */);
+ t.setWindowCrop(mMainStage.mRootLeash, null)
+ .setWindowCrop(mSideStage.mRootLeash, null);
+ });
// Hide divider and reset its position.
mSplitLayout.resetDividerPosition();
@@ -780,7 +784,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
void finishEnterSplitScreen(SurfaceControl.Transaction t) {
mSplitLayout.init();
setDividerVisibility(true, t);
- updateSurfaceBounds(mSplitLayout, t);
+ updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */);
setSplitsVisible(true);
mShouldUpdateRecents = true;
updateRecentTasksSplitPair();
@@ -925,7 +929,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
if (mSplitLayout == null) {
mSplitLayout = new SplitLayout(TAG + "SplitDivider", mContext,
mRootTaskInfo.configuration, this, mParentContainerCallbacks,
- mDisplayImeController, mTaskOrganizer, false /* applyDismissingParallax */);
+ mDisplayImeController, mTaskOrganizer,
+ PARALLAX_ALIGN_CENTER /* parallaxType */);
mDisplayInsetsController.addInsetsChangedListener(mDisplayId, mSplitLayout);
}
@@ -1075,7 +1080,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
prepareEnterSplitScreen(wct);
mSyncQueue.queue(wct);
mSyncQueue.runInSync(t -> {
- updateSurfaceBounds(mSplitLayout, t);
+ updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */);
setDividerVisibility(true, t);
});
}
@@ -1094,8 +1099,6 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
@Override
public void onSnappedToDismiss(boolean bottomOrRight) {
- setResizingSplits(false /* resizing */);
-
final boolean mainStageToTop =
bottomOrRight ? mSideStagePosition == SPLIT_POSITION_BOTTOM_OR_RIGHT
: mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT;
@@ -1104,6 +1107,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
return;
}
+ setResizingSplits(false /* resizing */);
final int dismissTop = mainStageToTop ? STAGE_TYPE_MAIN : STAGE_TYPE_SIDE;
final WindowContainerTransaction wct = new WindowContainerTransaction();
prepareExitSplitScreen(dismissTop, wct);
@@ -1121,14 +1125,14 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
@Override
public void onLayoutPositionChanging(SplitLayout layout) {
- mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t));
+ mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t, false /* applyResizingOffset */));
}
@Override
public void onLayoutSizeChanging(SplitLayout layout) {
mSyncQueue.runInSync(t -> {
setResizingSplits(true /* resizing */);
- updateSurfaceBounds(layout, t);
+ updateSurfaceBounds(layout, t, true /* applyResizingOffset */);
mMainStage.onResizing(getMainStageBounds(), t);
mSideStage.onResizing(getSideStageBounds(), t);
});
@@ -1142,7 +1146,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mSyncQueue.queue(wct);
mSyncQueue.runInSync(t -> {
setResizingSplits(false /* resizing */);
- updateSurfaceBounds(layout, t);
+ updateSurfaceBounds(layout, t, false /* applyResizingOffset */);
mMainStage.onResized(t);
mSideStage.onResized(t);
});
@@ -1174,13 +1178,15 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
layout.applyTaskChanges(wct, topLeftStage.mRootTaskInfo, bottomRightStage.mRootTaskInfo);
}
- void updateSurfaceBounds(@Nullable SplitLayout layout, @NonNull SurfaceControl.Transaction t) {
+ void updateSurfaceBounds(@Nullable SplitLayout layout, @NonNull SurfaceControl.Transaction t,
+ boolean applyResizingOffset) {
final StageTaskListener topLeftStage =
mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT ? mSideStage : mMainStage;
final StageTaskListener bottomRightStage =
mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT ? mMainStage : mSideStage;
(layout != null ? layout : mSplitLayout).applySurfaceChanges(t, topLeftStage.mRootLeash,
- bottomRightStage.mRootLeash, topLeftStage.mDimLayer, bottomRightStage.mDimLayer);
+ bottomRightStage.mRootLeash, topLeftStage.mDimLayer, bottomRightStage.mDimLayer,
+ applyResizingOffset);
}
void setResizingSplits(boolean resizing) {
@@ -1220,7 +1226,6 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mTaskOrganizer.applyTransaction(wct);
}
- @Override
public void onDisplayAdded(int displayId) {
if (displayId != DEFAULT_DISPLAY) {
return;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/SplitScreenController.java
index f1520edf53b1..07174051a344 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/SplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/SplitScreenController.java
@@ -253,7 +253,8 @@ public class SplitScreenController implements DragAndDropPolicy.Starter,
RemoteAnimationTarget[] wallpapers, RemoteAnimationTarget[] nonApps,
IRemoteAnimationFinishedCallback finishedCallback,
SurfaceControl.Transaction t) {
- mStageCoordinator.updateSurfaceBounds(null /* layout */, t);
+ mStageCoordinator.updateSurfaceBounds(null /* layout */, t,
+ false /* applyResizingOffset */);
if (apps != null) {
for (int i = 0; i < apps.length; ++i) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java
index 6ef20e37d5bc..ac25c7510931 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/stagesplit/StageCoordinator.java
@@ -265,7 +265,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
mMainStage.activate(getMainStageBounds(), wct);
mSideStage.addTask(task, getSideStageBounds(), wct);
mSyncQueue.queue(wct);
- mSyncQueue.runInSync(t -> updateSurfaceBounds(null /* layout */, t));
+ mSyncQueue.runInSync(
+ t -> updateSurfaceBounds(null /* layout */, t, false /* applyResizingOffset */));
return true;
}
@@ -801,12 +802,12 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
@Override
public void onLayoutPositionChanging(SplitLayout layout) {
- mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t));
+ mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t, true /* applyResizingOffset */));
}
@Override
public void onLayoutSizeChanging(SplitLayout layout) {
- mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t));
+ mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t, true /* applyResizingOffset */));
mSideStage.setOutlineVisibility(false);
}
@@ -816,7 +817,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
updateWindowBounds(layout, wct);
updateUnfoldBounds();
mSyncQueue.queue(wct);
- mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t));
+ mSyncQueue.runInSync(t -> updateSurfaceBounds(layout, t, false /* applyResizingOffset */));
mSideStage.setOutlineVisibility(true);
mLogger.logResize(mSplitLayout.getDividerPositionAsFraction());
}
@@ -840,13 +841,15 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
layout.applyTaskChanges(wct, topLeftStage.mRootTaskInfo, bottomRightStage.mRootTaskInfo);
}
- void updateSurfaceBounds(@Nullable SplitLayout layout, @NonNull SurfaceControl.Transaction t) {
+ void updateSurfaceBounds(@Nullable SplitLayout layout, @NonNull SurfaceControl.Transaction t,
+ boolean applyResizingOffset) {
final StageTaskListener topLeftStage =
mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT ? mSideStage : mMainStage;
final StageTaskListener bottomRightStage =
mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT ? mMainStage : mSideStage;
(layout != null ? layout : mSplitLayout).applySurfaceChanges(t, topLeftStage.mRootLeash,
- bottomRightStage.mRootLeash, topLeftStage.mDimLayer, bottomRightStage.mDimLayer);
+ bottomRightStage.mRootLeash, topLeftStage.mDimLayer, bottomRightStage.mDimLayer,
+ applyResizingOffset);
}
@Override
@@ -882,7 +885,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
if (mSplitLayout == null) {
mSplitLayout = new SplitLayout(TAG + "SplitDivider", mContext,
mDisplayAreaInfo.configuration, this, mParentContainerCallbacks,
- mDisplayImeController, mTaskOrganizer, true /* applyDismissingParallax */);
+ mDisplayImeController, mTaskOrganizer, SplitLayout.PARALLAX_DISMISSING);
mDisplayInsetsController.addInsetsChangedListener(mDisplayId, mSplitLayout);
if (mMainUnfoldController != null && mSideUnfoldController != null) {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java
index 8b4e1f8bfdb7..f1e602fcf778 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/split/SplitLayoutTests.java
@@ -73,7 +73,7 @@ public class SplitLayoutTests extends ShellTestCase {
mCallbacks,
mDisplayImeController,
mTaskOrganizer,
- false /* applyDismissingParallax */));
+ SplitLayout.PARALLAX_NONE));
}
@Test
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java
index 2886b97a3020..ecf1c5d41864 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java
@@ -56,6 +56,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
@SmallTest
@@ -64,13 +65,14 @@ public class OneHandedControllerTest extends OneHandedTestCase {
private int mCurrentUser = UserHandle.myUserId();
Display mDisplay;
- DisplayLayout mDisplayLayout;
OneHandedAccessibilityUtil mOneHandedAccessibilityUtil;
OneHandedController mSpiedOneHandedController;
OneHandedTimeoutHandler mSpiedTimeoutHandler;
OneHandedState mSpiedTransitionState;
@Mock
+ DisplayLayout mDisplayLayout;
+ @Mock
DisplayController mMockDisplayController;
@Mock
OneHandedDisplayAreaOrganizer mMockDisplayAreaOrganizer;
@@ -105,7 +107,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
public void setUp() {
MockitoAnnotations.initMocks(this);
mDisplay = mContext.getDisplay();
- mDisplayLayout = new DisplayLayout(mContext, mDisplay);
+ mDisplayLayout = Mockito.mock(DisplayLayout.class);
mSpiedTimeoutHandler = spy(new OneHandedTimeoutHandler(mMockShellMainExecutor));
mSpiedTransitionState = spy(new OneHandedState());
@@ -124,7 +126,7 @@ public class OneHandedControllerTest extends OneHandedTestCase {
when(mMockSettingsUitl.getShortcutEnabled(any(), anyInt())).thenReturn(false);
when(mMockDisplayAreaOrganizer.getLastDisplayBounds()).thenReturn(
- new Rect(0, 0, mDisplayLayout.width(), mDisplayLayout.height()));
+ new Rect(0, 0, 1080, 2400));
when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(mDisplayLayout);
mOneHandedAccessibilityUtil = new OneHandedAccessibilityUtil(mContext);
@@ -302,10 +304,9 @@ public class OneHandedControllerTest extends OneHandedTestCase {
@Test
public void testRotation90CanNotStartOneHanded() {
- final DisplayLayout landscapeDisplayLayout = new DisplayLayout(mDisplayLayout);
- landscapeDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_90);
+ mDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_90);
mSpiedTransitionState.setState(STATE_NONE);
- when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(landscapeDisplayLayout);
+ when(mDisplayLayout.isLandscape()).thenReturn(true);
mSpiedOneHandedController.setOneHandedEnabled(true);
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
mSpiedOneHandedController.startOneHanded();
@@ -315,11 +316,10 @@ public class OneHandedControllerTest extends OneHandedTestCase {
@Test
public void testRotation180CanStartOneHanded() {
- final DisplayLayout testDisplayLayout = new DisplayLayout(mDisplayLayout);
- testDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_180);
+ mDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_180);
mSpiedTransitionState.setState(STATE_NONE);
when(mMockDisplayAreaOrganizer.isReady()).thenReturn(true);
- when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(testDisplayLayout);
+ when(mDisplayLayout.isLandscape()).thenReturn(false);
mSpiedOneHandedController.setOneHandedEnabled(true);
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
mSpiedOneHandedController.startOneHanded();
@@ -329,10 +329,9 @@ public class OneHandedControllerTest extends OneHandedTestCase {
@Test
public void testRotation270CanNotStartOneHanded() {
- final DisplayLayout testDisplayLayout = new DisplayLayout(mDisplayLayout);
- testDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_270);
+ mDisplayLayout.rotateTo(mContext.getResources(), Surface.ROTATION_270);
mSpiedTransitionState.setState(STATE_NONE);
- when(mMockDisplayAreaOrganizer.getDisplayLayout()).thenReturn(testDisplayLayout);
+ when(mDisplayLayout.isLandscape()).thenReturn(true);
mSpiedOneHandedController.setOneHandedEnabled(true);
mSpiedOneHandedController.setLockedDisabled(false /* locked */, false /* enabled */);
mSpiedOneHandedController.startOneHanded();
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java
index 061136c65daf..c571d44d3da9 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java
@@ -309,7 +309,7 @@ public class StageCoordinatorTests extends ShellTestCase {
public void testFinishEnterSplitScreen_applySurfaceLayout() {
mStageCoordinator.finishEnterSplitScreen(new SurfaceControl.Transaction());
- verify(mSplitLayout).applySurfaceChanges(any(), any(), any(), any(), any());
+ verify(mSplitLayout).applySurfaceChanges(any(), any(), any(), any(), any(), eq(false));
}
private class UnfoldControllerProvider implements
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index 573ff64da621..4386e6a0314c 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -26,8 +26,7 @@
<string name="permission_apps_summary" msgid="798718816711515431">"بث تطبيقات هاتفك"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‏السماح لتطبيق &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; بالوصول إلى هذه المعلومات من هاتفك"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"الخدمات التي تعمل بين الأجهزة"</string>
- <!-- no translation found for helper_summary_app_streaming (7380294597268573523) -->
- <skip />
+ <string name="helper_summary_app_streaming" msgid="7380294597268573523">"يطلب التطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> الحصول على إذن نيابةً عن <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> للوصول إلى صور ووسائط وإشعارات هاتفك."</string>
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"‏السماح لتطبيق &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; بالوصول إلى هذه المعلومات من هاتفك"</string>
@@ -37,14 +36,12 @@
<string name="permission_storage" msgid="6831099350839392343">"الصور والوسائط"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="helper_title_computer" msgid="4671071173916176037">"‏خدمات Google Play"</string>
- <!-- no translation found for helper_summary_computer (1676407599909474428) -->
- <skip />
+ <string name="helper_summary_computer" msgid="1676407599909474428">"يطلب التطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> الحصول على إذن نيابةً عن <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> لمشاركة التطبيقات بين أجهزتك."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"جهاز"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
<string name="consent_yes" msgid="8344487259618762872">"السماح"</string>
<string name="consent_no" msgid="2640796915611404382">"عدم السماح"</string>
- <!-- no translation found for consent_back (2560683030046918882) -->
- <skip />
+ <string name="consent_back" msgid="2560683030046918882">"رجوع"</string>
<string name="permission_sync_confirmation_title" msgid="667074294393493186">"نقل أذونات التطبيقات إلى ساعتك"</string>
<string name="permission_sync_summary" msgid="8873391306499120778">"لتسهيل إعداد ساعتك، فإن التطبيقات التي يتم تثبيتها على ساعتك أثناء الإعداد ستستخدم الأذونات نفسها التي يستخدمها هاتفك.\n\n قد تشتمل هذه الأذونات على الوصول إلى ميكروفون ساعتك وبيانات موقعها الجغرافي."</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml
index fd816749be0a..c3c7eece58a3 100644
--- a/packages/CompanionDeviceManager/res/values-ta/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml
@@ -25,9 +25,8 @@
<string name="permission_apps" msgid="6142133265286656158">"ஆப்ஸ்"</string>
<string name="permission_apps_summary" msgid="798718816711515431">"உங்கள் மொபைலின் ஆப்ஸை ஸ்ட்ரீம் செய்யலாம்"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"மொபைலில் உள்ள இந்தத் தகவல்களை அணுக, &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ஆப்ஸை அனுமதிக்கவும்"</string>
- <string name="helper_title_app_streaming" msgid="4151687003439969765">"சாதனங்களுக்கு இடையேயான சேவைகள்"</string>
- <!-- no translation found for helper_summary_app_streaming (7380294597268573523) -->
- <skip />
+ <string name="helper_title_app_streaming" msgid="4151687003439969765">"பன்முக சாதன சேவைகள்"</string>
+ <string name="helper_summary_app_streaming" msgid="7380294597268573523">"உங்கள் மொபைலில் உள்ள படங்கள், மீடியா, அறிவிப்புகள் ஆகியவற்றை அணுக உங்கள் <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> அனுமதி கோருகிறது"</string>
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"உங்கள் மொபைலிலிருந்து இந்தத் தகவலை அணுக &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; ஆப்ஸை அனுமதியுங்கள்"</string>
@@ -37,14 +36,12 @@
<string name="permission_storage" msgid="6831099350839392343">"படங்கள் மற்றும் மீடியா"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play சேவைகள்"</string>
- <!-- no translation found for helper_summary_computer (1676407599909474428) -->
- <skip />
+ <string name="helper_summary_computer" msgid="1676407599909474428">"உங்கள் சாதனங்களுக்கு இடையே ஆப்ஸை ஸ்ட்ரீம் செய்ய உங்கள் <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> அனுமதி கோருகிறது"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"சாதனம்"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
<string name="consent_yes" msgid="8344487259618762872">"அனுமதி"</string>
<string name="consent_no" msgid="2640796915611404382">"அனுமதிக்க வேண்டாம்"</string>
- <!-- no translation found for consent_back (2560683030046918882) -->
- <skip />
+ <string name="consent_back" msgid="2560683030046918882">"பின்செல்"</string>
<string name="permission_sync_confirmation_title" msgid="667074294393493186">"ஆப்ஸ் அனுமதிகளை உங்கள் வாட்ச்சிற்கு மாற்றுதல்"</string>
<string name="permission_sync_summary" msgid="8873391306499120778">"உங்கள் வாட்ச் அமைவை எளிதாக்க, உங்கள் மொபைலில் வழங்கியுள்ள அனுமதிகளையே அமைவின்போது வாட்ச்சில் நிறுவப்பட்ட ஆப்ஸும் பயன்படுத்தும்.\n\n உங்கள் வாட்ச்சிலுள்ள மைக்ரோஃபோன், இருப்பிடம் ஆகியவற்றுக்கான அணுகலும் இந்த அனுமதிகளில் அடங்கக்கூடும்."</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index f6fec4bfdb68..a9512097985d 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -26,8 +26,7 @@
<string name="permission_apps_summary" msgid="798718816711515431">"اپنے فون کی ایپس کی سلسلہ بندی کریں"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"‏‎&lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt;‎ کو اپنے فون سے ان معلومات تک رسائی حاصل کرنے کی اجازت دیں"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"کراس آلے کی سروس"</string>
- <!-- no translation found for helper_summary_app_streaming (7380294597268573523) -->
- <skip />
+ <string name="helper_summary_app_streaming" msgid="7380294597268573523">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ آپ کے <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> کی جانب سے آپ کے فون کی تصاویر، میڈیا اور اطلاعات تک رسائی کی اجازت طلب کر رہی ہے"</string>
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
<string name="title_computer" msgid="4693714143506569253">"‏اپنے فون سے اس معلومات تک رسائی حاصل Allow &lt;strong&gt;<xliff:g id="APP_NAME">%1$s</xliff:g>&lt;/strong&gt; کرنے کی اجازت دیں"</string>
@@ -37,14 +36,12 @@
<string name="permission_storage" msgid="6831099350839392343">"تصاویر اور میڈیا"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="helper_title_computer" msgid="4671071173916176037">"‏Google Play سروسز"</string>
- <!-- no translation found for helper_summary_computer (1676407599909474428) -->
- <skip />
+ <string name="helper_summary_computer" msgid="1676407599909474428">"<xliff:g id="APP_NAME">%1$s</xliff:g> ایپ آپ کے <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> کی جانب سے آپ کے آلات کے درمیان ایپس کی سلسلہ بندی کرنے کی اجازت کی درخواست کر رہی ہے"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"آلہ"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
<string name="consent_yes" msgid="8344487259618762872">"اجازت دیں"</string>
<string name="consent_no" msgid="2640796915611404382">"اجازت نہ دیں"</string>
- <!-- no translation found for consent_back (2560683030046918882) -->
- <skip />
+ <string name="consent_back" msgid="2560683030046918882">"پیچھے"</string>
<string name="permission_sync_confirmation_title" msgid="667074294393493186">"اپنی گھڑی پر ایپ کی اجازتیں منتقل کریں"</string>
<string name="permission_sync_summary" msgid="8873391306499120778">"آپ کی گھڑی کو سیٹ اپ کرنے کے عمل کو زیادہ آسان بنانے کے لیے، سیٹ اپ کے دوران آپ کی گھڑی پر انسٹال کردہ ایپس انہیں اجازتوں کا استعمال کریں گی جن کا استعمال آپ کا فون کرتا ہے۔\n\n ان اجازتوں میں آپ کی گھڑی کے مائیکروفون اور مقام تک کی رسائی شامل ہو سکتی ہے۔"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-te/strings.xml b/packages/PackageInstaller/res/values-te/strings.xml
index 7f4de40b87b6..ab6a4ac4f899 100644
--- a/packages/PackageInstaller/res/values-te/strings.xml
+++ b/packages/PackageInstaller/res/values-te/strings.xml
@@ -48,7 +48,7 @@
<string name="app_not_found_dlg_text" msgid="5219983779377811611">"ఇన్‌స్టాల్ చేసిన యాప్‌ల లిస్ట్‌లో యాప్ కనుగొనబడలేదు."</string>
<string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"అనుమతించబడలేదు"</string>
<string name="user_is_not_allowed_dlg_text" msgid="3468447791330611681">"ప్రస్తుత వినియోగదారు ఈ అన్ఇన్‌స్టాలేషన్ చేసేందుకు అనుమతించబడరు."</string>
- <string name="generic_error_dlg_title" msgid="5863195085927067752">"లోపం"</string>
+ <string name="generic_error_dlg_title" msgid="5863195085927067752">"ఎర్రర్"</string>
<string name="generic_error_dlg_text" msgid="5287861443265795232">"యాప్‌ను అన్ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు."</string>
<string name="uninstall_application_title" msgid="4045420072401428123">"యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయి"</string>
<string name="uninstall_update_title" msgid="824411791011583031">"అప్‌డేట్ అన్‌ఇన్‌స్టాల్ చేయి"</string>
diff --git a/packages/PrintSpooler/res/values-te/strings.xml b/packages/PrintSpooler/res/values-te/strings.xml
index 038029d6a43f..d2254d6f956d 100644
--- a/packages/PrintSpooler/res/values-te/strings.xml
+++ b/packages/PrintSpooler/res/values-te/strings.xml
@@ -35,7 +35,7 @@
<string name="install_for_print_preview" msgid="6366303997385509332">"ప్రివ్యూ చేయడానికి PDF వ్యూయర్‌ను ఇన్‌స్టాల్ చేయండి"</string>
<string name="printing_app_crashed" msgid="854477616686566398">"ముద్రణ యాప్ క్రాష్ అయ్యింది"</string>
<string name="generating_print_job" msgid="3119608742651698916">"ముద్రణ జాబ్‌ను ఉత్పన్నం చేస్తోంది"</string>
- <string name="save_as_pdf" msgid="5718454119847596853">"PDF వలె సేవ్ చేయి"</string>
+ <string name="save_as_pdf" msgid="5718454119847596853">"PDF లాగా సేవ్ చేయి"</string>
<string name="all_printers" msgid="5018829726861876202">"అన్ని ప్రింటర్‌లు…"</string>
<string name="print_dialog" msgid="32628687461331979">"ముద్రణ డైలాగ్"</string>
<string name="current_page_template" msgid="5145005201131935302">"<xliff:g id="CURRENT_PAGE">%1$d</xliff:g>/<xliff:g id="PAGE_COUNT">%2$d</xliff:g>"</string>
@@ -44,7 +44,7 @@
<string name="expand_handle" msgid="7282974448109280522">"విస్తరణ హ్యాండిల్"</string>
<string name="collapse_handle" msgid="6886637989442507451">"కుదింపు హ్యాండిల్"</string>
<string name="print_button" msgid="645164566271246268">"ముద్రించు"</string>
- <string name="savetopdf_button" msgid="2976186791686924743">"PDF వలె సేవ్ చేయి"</string>
+ <string name="savetopdf_button" msgid="2976186791686924743">"PDF లాగా సేవ్ చేయి"</string>
<string name="print_options_expanded" msgid="6944679157471691859">"ముద్రణ ఎంపికలు విస్తరించబడ్డాయి"</string>
<string name="print_options_collapsed" msgid="7455930445670414332">"ముద్రణ ఎంపికలు కుదించబడ్డాయి"</string>
<string name="search" msgid="5421724265322228497">"సెర్చ్"</string>
diff --git a/packages/SettingsLib/SettingsSpinner/res/values-v31/styles.xml b/packages/SettingsLib/SettingsSpinner/res/values-v31/styles.xml
index fc3ec4344712..fd45a16f24ba 100644
--- a/packages/SettingsLib/SettingsSpinner/res/values-v31/styles.xml
+++ b/packages/SettingsLib/SettingsSpinner/res/values-v31/styles.xml
@@ -17,7 +17,8 @@
<resources>
<style name="SettingsSpinnerTitleBar">
- <item name="android:textAppearance">?android:attr/textAppearanceButton</item>
+ <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Medium</item>
+ <item name="android:textSize">16sp</item>
<item name="android:textColor">@color/settingslib_spinner_title_color</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">marquee</item>
@@ -29,7 +30,8 @@
</style>
<style name="SettingsSpinnerDropdown">
- <item name="android:textAppearance">?android:attr/textAppearanceButton</item>
+ <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Medium</item>
+ <item name="android:textSize">16sp</item>
<item name="android:textColor">@color/settingslib_spinner_dropdown_color</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">marquee</item>
diff --git a/packages/SettingsLib/res/layout/user_preference.xml b/packages/SettingsLib/res/layout/user_preference.xml
deleted file mode 100644
index f13447a4737c..000000000000
--- a/packages/SettingsLib/res/layout/user_preference.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/widget_frame"
- android:layout_width="match_parent"
- android:layout_height="@dimen/user_spinner_item_height"
- android:paddingStart="@dimen/user_spinner_padding_sides"
- android:paddingEnd="@dimen/user_spinner_padding_sides"
- android:orientation="horizontal" >
-
- <ImageView
- android:id="@android:id/icon"
- android:layout_width="@dimen/user_icon_view_height"
- android:layout_height="@dimen/user_icon_view_height"
- android:layout_gravity="center"
- android:scaleType="fitCenter" />
-
- <TextView
- android:id="@android:id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:layout_gravity="center"
- android:labelFor="@android:id/icon"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:paddingStart="@dimen/user_spinner_padding"
- android:paddingEnd="@dimen/user_spinner_padding"
- android:textAppearance="?android:attr/textAppearanceMedium" />
-
-</LinearLayout>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index cffd1f65b267..cb9a7bfd6794 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Stel gassessie terug?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Verwyder gas?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Stel terug"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Verwyder"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Stel tans gassessie terug …"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Neem \'n foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Kies \'n prent"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Skakel skerm aan"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Laat toe dat die skerm aangeskakel word"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Laat ’n program toe om die skerm aan te skakel. As jy toestemming gee, kan die program die skerm enige tyd sonder jou uitdruklike bedoeling aanskakel."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skandeer QR-kode"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Plaas die QR-kode hieronder in die middel om te begin luister"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-kode is nie ’n geldige formaat nie"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 26c46f183f76..bcd69e673b39 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"እንግዳ ዳግም ይጀምር?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"እንግዳ ይወገድ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ዳግም አስጀምር"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"አስወግድ"</string>
<string name="guest_resetting" msgid="7822120170191509566">"እንግዳን ዳግም በማስጀመር ላይ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ፎቶ አንሳ"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ምስል ይምረጡ"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ማያ ገጽን ያብሩ"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ማያ ገጹን ማብራት ይፍቀዱ"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"አንድ መተግበሪያ ማያ ገጹን እንዲያበራ ይፍቀዱለት። ከተሰጠ፣ መተግበሪያው ያለእርስዎ ግልጽ ሐሳብ በማንኛውም ጊዜ ማያ ገጹን ሊያበራ ይችላል።"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR ኮድን ይቃኙ"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ማዳመጥ ለመጀመር ከታች ያለውን QR ኮድ መሃል ላይ ያድርጉት"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR ኮድ ልክ ያልኾነ ቅርጸት ነው"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 5b5cbbbe9d06..f28d5b393831 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -589,14 +589,12 @@
<string name="add_user_failed" msgid="4809887794313944872">"تعذّر إنشاء مستخدم جديد."</string>
<string name="add_guest_failed" msgid="8074548434469843443">"تعذّر إنشاء جلسة ضيف جديدة."</string>
<string name="user_nickname" msgid="262624187455825083">"اللقب"</string>
- <!-- no translation found for user_add_user (7876449291500212468) -->
- <skip />
+ <string name="user_add_user" msgid="7876449291500212468">"إضافة حساب مستخدم"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"إضافة ضيف"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"إزالة جلسة الضيف"</string>
<string name="guest_reset_guest" msgid="6110013010356013758">"إعادة ضبط جلسة الضيف"</string>
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"هل تريد إعادة ضبط جلسة الضيف؟"</string>
- <!-- no translation found for guest_remove_guest_dialog_title (4548511006624088072) -->
- <skip />
+ <string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"هل تريد إزالة حساب الضيف؟"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"إعادة الضبط"</string>
<!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
<skip />
@@ -604,14 +602,10 @@
<string name="user_image_take_photo" msgid="467512954561638530">"التقاط صورة"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"اختيار صورة"</string>
<string name="user_image_photo_selector" msgid="433658323306627093">"اختيار صورة"</string>
- <!-- no translation found for failed_attempts_now_wiping_device (4016329172216428897) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_user (469060411789668050) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_profile (7626589520888963129) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_dialog_dismiss (2749889771223578925) -->
- <skip />
+ <string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"لقد استنفدت عدد المحاولات غير الصحيحة وسيتم حذف بيانات هذا الجهاز."</string>
+ <string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"لقد استنفدت عدد المحاولات غير الصحيحة وسيتم حذف حساب هذا المستخدم."</string>
+ <string name="failed_attempts_now_wiping_profile" msgid="7626589520888963129">"لقد استنفدت عدد المحاولات غير الصحيحة وسيتم حذف الملف الشخصي للعمل وبياناته."</string>
+ <string name="failed_attempts_now_wiping_dialog_dismiss" msgid="2749889771223578925">"إغلاق"</string>
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"الإعداد التلقائي للجهاز"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"غير مفعّل"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"مفعّل"</string>
@@ -659,10 +653,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"تشغيل الشاشة"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"السماح بتشغيل الشاشة"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"يمكنك السماح لأحد التطبيقات بتشغيل الشاشة. في حال منحت هذا الإذن، قد يشغِّل التطبيق الشاشة في أي وقت بدون إذن صريح منك."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"إجراء مسح ضوئي لرمز الاستجابة السريعة"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"لبدء الاستماع، امسَح ضوئيًا رمز الاستجابة السريعة التالي."</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"تنسيق رمز الاستجابة السريعة غير صالح."</string>
</resources>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 2919e4db40e7..5c465ee48745 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"অতিথিৰ ছেশ্বন ৰিছেট কৰিবনে?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"অতিথি আঁতৰাবনে?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ৰিছেট কৰক"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"আঁতৰাওক"</string>
<string name="guest_resetting" msgid="7822120170191509566">"অতিথিৰ ছেশ্বন ৰিছেট কৰি থকা হৈছে…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"এখন ফট’ তোলক"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"এখন প্ৰতিচ্ছবি বাছনি কৰক"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"স্ক্ৰীন অন কৰক"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"স্ক্ৰীনখন অন কৰিবলৈ অনুমতি দিয়ক"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"এপ্‌টোক স্ক্ৰীনখন অন কৰিবলৈ অনুমতি দিয়ক। যদি অনুমতি দিয়া হয়, এপ্‌টোৱে আপোনাৰ স্পষ্ট উদ্দেশ্য অবিহনেও যিকোনো সময়তে স্ক্ৰীনখন অন কৰিব পাৰে।"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"কিউআৰ ক’ডটো স্কেন কৰক"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"শুনিবলৈ আৰম্ভ কৰিবলৈ, তলৰ মাজৰ অংশত কিউআৰ ক’ডটো ৰাখক"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"কিউআৰ ক’ডটো মান্য ফৰ্মেটৰ নহয়"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index cd50bcc6b5c6..50c8593c38ae 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Qonaq məlumatı sıfırlansın?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Qonaq silinsin?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Sıfırlayın"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Silin"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Qonaq məlumatı sıfırlanır…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Foto çəkin"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Şəkil seçin"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ekranı aktiv etmək"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Ekranı aktiv etməyə icazə verin"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Tətbiqin ekranı aktiv etməsinə icazə verin. İcazə verilərsə, tətbiq istənilən vaxt sizə soruşmadan ekranı aktiv edə bilər."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR kodu skanlayın"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Dinləməyə başlamaq üçün aşağıda QR kodu mərkəzə yerləşdirin"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kodu doğru formatda deyil"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index 936aec7f05bc..1d7bf9a084ec 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -448,7 +448,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boja"</string>
- <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Korekcija boja može da bude korisna kada želite:to:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;da preciznije vidite boje&lt;/li&gt; &lt;li&gt;&amp;nbsp;da uklonite boje kako biste se fokusirali&lt;/li&gt; &lt;/ol&gt;"</string>
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Korekcija boja može da bude korisna kada želite:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;Preciznije da vidite boje&lt;/li&gt; &lt;li&gt;&amp;nbsp;Da uklonite boje kako biste se fokusirali&lt;/li&gt; &lt;/ol&gt;"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamenjuje ga <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Želite li da resetujete sesiju gosta?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Želite li da uklonite gosta?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetuj"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Ukloni"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Sesija gosta se resetuje…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Slikaj"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Odaberi sliku"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Uključite ekran"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Dozvoli uključivanje ekrana"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dozvoljava aplikaciji da uključi ekran. Ako se omogući, aplikacija može da uključi ekran u bilo kom trenutku bez vaše eksplicitne namere."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skenirajte QR kôd"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Da biste počeli da slušate, centrirajte QR kôd ispod"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kôd nije u važećem formatu"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 86b3519d05d8..6ad50178faa9 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Скінуць гасцявы сеанс?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Выдаліць госця?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Скінуць"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Выдаліць"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Ідзе скід гасцявога сеанса…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Зрабіць фота"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Выбраць відарыс"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Уключэнне экрана"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Дазволіць уключэнне экрана"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Дазволіць праграме ўключаць экран. З гэтым дазволам праграма зможа ў любы час уключаць экран без вашага яўнага намеру."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Сканіраваць QR-код"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Каб пачаць праслухванне, памясціце ў цэнтр QR-код, які знаходзіцца ўнізе"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-код мае несапраўдны фармат"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 758a7079065c..2087efda5179 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Да се нулира ли сесията като гост?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Да се премахне ли гостът?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Нулиране"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Премахване"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Сесията като гост се нулира…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Правене на снимка"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Избиране на изображение"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Включване на екрана"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Разрешаване на включването на екрана"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Разрешете на дадено приложение да включва екрана. Ако го направите, то може да включва екрана по всяко време без явното ви намерение."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Сканиране на QR код"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"За да започнете да слушате, центрирайте QR кода по-долу"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Невалиден формат на QR кода"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index ad83af675390..d79c0181d14a 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"গেস্ট সেশন রিসেট করবেন?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"অতিথিকে সরাবেন?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"রিসেট করুন"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"সরান"</string>
<string name="guest_resetting" msgid="7822120170191509566">"গেস্ট সেশন রিসেট করা হচ্ছে..."</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ফটো তুলুন"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"একটি ইমেজ বেছে নিন"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"স্ক্রিন চালু করুন"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"স্ক্রিন চালু করার অনুমতি দিন"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"অ্যাপকে স্ক্রিন চালু করার অনুমতি দিন। অনুমতি দেওয়া হলে, অ্যাপ আপনার এক্সপ্লিসিট ইনটেন্ট ছাড়াই যেকোনও সময় স্ক্রিন চালু করতে পারবে।"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR কোড স্ক্যান করুন"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"শোনা শুরু করতে, নিচের QR কোডটি মাঝখানে রাখুন"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR কোডের ফর্ম্যাট সঠিক নয়"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index 9b972ab10227..1381d57659c9 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Poništiti sesiju gosta?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Ukloniti gosta?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Poništi"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Ukloni"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Poništavanje sesije gosta…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Snimite fotografiju"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Odaberite sliku"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Uključi ekran"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Dozvolite uključivanje ekrana"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dozvolite aplikaciji da uključi ekran. Ako se odobri, aplikacija može uključiti ekran bilo kada bez vaše izričite namjere."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skenirajte QR kôd"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Da pokrenete slušanje, centrirajte QR kôd ispod"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Format QR koda nije važeći"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 342172846618..627a9d84d197 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Vols restablir el convidat?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Vols suprimir el convidat?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Restableix"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Suprimeix"</string>
<string name="guest_resetting" msgid="7822120170191509566">"S\'està restablint el convidat…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Fes una foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Tria una imatge"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Activa la pantalla"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permet que activi la pantalla"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permet que una aplicació activi la pantalla. Si concedeixes aquest permís, pot ser que l\'aplicació activi la pantalla en qualsevol moment sense la teva intenció explícita."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Escaneja un codi QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Per començar a escoltar, centra el codi QR més avall"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"El codi QR no té un format vàlid"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 4240b14ac8c3..875daa4e1c20 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Resetovat hosta?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Odstranit hosta?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetovat"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Odstranit"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Resetování hosta…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Pořídit fotku"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Vybrat obrázek"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 24d613cba5cf..776776d6e3d0 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Vil du nulstille gæsten?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Vil du fjerne gæsten?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Nulstil"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Fjern"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Nulstiller gæst…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Tag et billede"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Vælg et billede"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Aktivér skærmen"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Tillad aktivering af skærmen"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Tillad, at en app aktiverer skærmen. Hvis du giver denne tilladelse, kan appen til enhver tid aktiverer skærmen, uden at du eksplicit har bedt om det."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scan QR-kode"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Centrer QR-koden nedenfor for at gå i gang med at lytte"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-koden har ikke et gyldigt format"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 51f12fc435fc..3049a695149f 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Gast zurücksetzen?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Gast entfernen?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Zurücksetzen"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Entfernen"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Gast wird zurückgesetzt…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Foto machen"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Bild auswählen"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Display aktivieren"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Aktivieren des Displays erlauben"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Einer App erlauben, das Display zu aktivieren. Wenn du diese Erlaubnis erteilst, kann die App jederzeit das Display aktivieren – auch ohne deine explizite Absicht."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR-Code scannen"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Scanne zum Anhören den QR-Code unten"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Das Format des QR-Codes ist nicht gültig"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 3aec04bfb9c6..76ee0083ee2a 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -530,7 +530,7 @@
<string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Να επιτρέπεται ο ορισμός ξυπνητ. και υπενθυμίσεων"</string>
<string name="alarms_and_reminders_title" msgid="8819933264635406032">"Ξυπνητήρια και υπενθυμίσεις"</string>
<string name="alarms_and_reminders_footer_title" msgid="6302587438389079695">"Επιτρέψτε σε αυτήν την εφαρμογή να ορίζει ξυπνητήρια και να προγραμματίζει ενέργειες που εξαρτώνται από τον χρόνο. Αυτό επιτρέπει στην εφαρμογή να εκτελείται στο παρασκήνιο και, ως εκ τούτου, μπορεί να καταναλώνει περισσότερη μπαταρία.\n\nΑν αυτή η άδεια δεν είναι ενεργή, τα υπάρχοντα ξυπνητήρια και συμβάντα βάσει χρόνου που έχουν προγραμματιστεί από αυτήν την εφαρμογή δεν θα λειτουργούν."</string>
- <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"χρονοδιάγραμμα, ξυπνητήρι, υπενθύμιση, ρολόι"</string>
+ <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"πρόγραμμα, ξυπνητήρι, υπενθύμιση, ρολόι"</string>
<string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ενεργοποίηση"</string>
<string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Ενεργοποίηση λειτουργίας \"Μην ενοχλείτε\""</string>
<string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Ποτέ"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Επαναφορά επισκέπτη;"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Κατάργηση επισκέπτη;"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Επαναφορά"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Κατάργηση"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Επαναφορά επισκέπτη…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Λήψη φωτογραφίας"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Επιλογή εικόνας"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ενεργοποίηση οθόνης"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Να επιτρέπεται η ενεργοποίηση της οθόνης"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Επιτρέψτε σε μια εφαρμογή να ενεργοποιεί την οθόνη. Αν παραχωρήσετε την άδεια, η εφαρμογή ενδέχεται να ενεργοποιεί την οθόνη ανά πάσα στιγμή, χωρίς να εκφράσετε σαφή πρόθεση."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Σάρωση κωδικού QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Για έναρξη της ακρόασης, κεντράρετε τον παρακάτω κωδικό QR"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Ο κωδικός QR δεν έχει έγκυρη μορφή"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index b76d447aafcf..74d8f9afe9e6 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Reset guest?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remove guest?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Reset"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remove"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Resetting guest…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Take a photo"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Choose an image"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Turn screen on"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Allow turning the screen on"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Allow an app to turn the screen on. If granted, the app may turn on the screen at any time without your explicit intent."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scan QR code"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"To start listening, centre the QR code below"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR code isn\'t a valid format"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 76161cf194d1..63c395e4ba18 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Reset guest?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remove guest?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Reset"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remove"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Resetting guest…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Take a photo"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Choose an image"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Turn screen on"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Allow turning the screen on"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Allow an app to turn the screen on. If granted, the app may turn on the screen at any time without your explicit intent."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scan QR code"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"To start listening, centre the QR code below"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR code isn\'t a valid format"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index b76d447aafcf..74d8f9afe9e6 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Reset guest?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remove guest?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Reset"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remove"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Resetting guest…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Take a photo"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Choose an image"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Turn screen on"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Allow turning the screen on"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Allow an app to turn the screen on. If granted, the app may turn on the screen at any time without your explicit intent."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scan QR code"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"To start listening, centre the QR code below"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR code isn\'t a valid format"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index b76d447aafcf..74d8f9afe9e6 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Reset guest?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remove guest?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Reset"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remove"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Resetting guest…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Take a photo"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Choose an image"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Turn screen on"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Allow turning the screen on"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Allow an app to turn the screen on. If granted, the app may turn on the screen at any time without your explicit intent."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scan QR code"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"To start listening, centre the QR code below"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR code isn\'t a valid format"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index cda94e95ea78..5ad390433e89 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -652,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‏‎‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎‎Turn screen on‎‏‎‎‏‎"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‎Allow turning the screen on‎‏‎‎‏‎"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‎‎‏‏‎‏‏‏‏‏‎‎‎Allow an app to turn the screen on. If granted, the app may turn on the screen at any time without your explicit intent.‎‏‎‎‏‎"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‏‏‏‎Scan QR code‎‏‎‎‏‎"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎To start listening, center the QR code below‎‏‎‎‏‎"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎QR code isn\'t a valid format‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index b46f432b1fa2..4f4362e3709c 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"¿Quieres restablecer el invitado?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"¿Quieres quitar al invitado?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Restablecer"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Quitar"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Restableciendo invitado…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Tomar una foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Elegir una imagen"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Activar pantalla"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir activación de la pantalla"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permite que una app active la pantalla. Si se otorga permiso, la app podría activar la pantalla en cualquier momento sin que lo pidas de manera explícita."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Escanear código QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para comenzar a escuchar, centra el código QR que aparece a continuación"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"El código QR no tiene un formato válido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 8590d0fab526..970b6891fcfc 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"¿Restablecer invitado?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"¿Quitar invitado?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Restablecer"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Quitar"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Restableciendo invitado…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Hacer foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Seleccionar una imagen"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Encender pantalla"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir encender la pantalla"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permite que una aplicación encienda la pantalla. Si das este permiso, la aplicación puede encender la pantalla en cualquier momento sin que se lo pidas."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Escanear código QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para empezar a escuchar, centra el código QR aquí abajo"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"El formato del código QR no es válido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index b9c9ead45598..28412038afb7 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Kas lähtestada külastajaseanss?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Kas eemaldada külaline?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Lähtesta"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Eemalda"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Külastajaseansi lähtestamine …"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Pildistage"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Valige pilt"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ekraani sisselülitamine"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Luba ekraani sisselülitamine"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Rakendusel lubatakse ekraan sisse lülitada. Kui annate loa, võib rakendus ekraani igal ajal sisse lülitada ilma teie sõnaselge kavatsuseta."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR-koodi skannimine"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Kuulamise alustamiseks paigutage QR-kood allpool keskele"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-kood ei ole sobilik vorming"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index efa45690fd33..a4ecadfc1ea1 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -448,7 +448,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopia (gorri-berdeak)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopia (urdin-horia)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Koloreen zuzenketa"</string>
- <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Koloreen zuzenketa lagungarria izan daiteke hauek egin nahi dituzunean:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;Koloreak zehaztasun handiagoz ikusi.&lt;/li&gt; &lt;li&gt;&amp;nbsp;Koloreak kendu, arreta gal ez dezazun.&lt;/li&gt; &lt;/ol&gt;"</string>
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Baliteke koloreen zuzenketa lagungarria izatea hauek egin nahi dituzunean:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;Koloreak zehaztasun handiagoz ikusi.&lt;/li&gt; &lt;li&gt;&amp;nbsp;Koloreak kendu, arreta gal ez dezazun.&lt;/li&gt; &lt;/ol&gt;"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> hobespena gainjarri zaio"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> inguru gelditzen dira"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Gonbidatuentzako saioa berrezarri nahi duzu?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Gonbidatua kendu nahi duzu?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Berrezarri"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Kendu"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Gonbidatuentzako saioa berrezartzen…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Atera argazki bat"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Aukeratu irudi bat"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Piztu pantaila"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Eman pantaila pizteko baimena"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Eman pantaila pizteko baimena aplikazioei. Baimena emanez gero, aplikazioek edonoiz piztu ahal izango dute pantaila, zuk halako asmorik izan ez arren."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Eskaneatu QR kodea"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Entzuten hasteko, zentratu beheko QR kodea"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kodearen formatuak ez du balio"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 22a98abc1edc..dee837766ee6 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"جلسه مهمان بازنشانی شود؟"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"مهمان برداشته شود؟"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"بازنشانی"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"برداشتن"</string>
<string name="guest_resetting" msgid="7822120170191509566">"درحال بازنشانی مهمان…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"عکس گرفتن"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"انتخاب تصویر"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"روشن کردن صفحه‌نمایش"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"اعطای اجازه برای روشن کردن صفحه‌نمایش"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"به برنامه اجازه می‌دهد صفحه‌نمایش را روشن کند. اگر اجازه داده شود، ممکن است این برنامه در هر زمانی بدون هدف صریح شما صفحه‌نمایش را روشن کند."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"اسکن رمزینه پاسخ‌سریع"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"برای گوش دادن، رمزینه پاسخ‌سریع زیر را در مرکز کادر قرار دهید"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"قالب رمزینه پاسخ‌سریع معتبر نیست"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index cea4e9c8ffee..37f010952fe6 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Nollataanko vieras?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Poistetaaanko vieras?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Nollaa"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Poista"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Nollataan vierasta…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Ota kuva"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Valitse kuva"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Käynnistä näyttö"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Salli näytön käynnistäminen"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Salli sovelluksen käynnistää näyttö. Jos sovellus saa luvan, se voi käynnistää näytön itsenäisesti milloin tahansa."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skannaa QR-koodi"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Aloita kuuntelu keskittämällä alla olevaan QR-koodiin"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-koodin muoto ei kelpaa"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index e78be6054441..16922abc6330 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -518,7 +518,7 @@
<string name="ims_reg_title" msgid="8197592958123671062">"État d\'enregistrement IMS"</string>
<string name="ims_reg_status_registered" msgid="884916398194885457">"Enregistré"</string>
<string name="ims_reg_status_not_registered" msgid="2989287366045704694">"Non enregistré"</string>
- <string name="status_unavailable" msgid="5279036186589861608">"Non accessible"</string>
+ <string name="status_unavailable" msgid="5279036186589861608">"Non disponible"</string>
<string name="wifi_status_mac_randomized" msgid="466382542497832189">"Les adresses MAC sont randomisées"</string>
<string name="wifi_tether_connected_summary" msgid="5282919920463340158">"{count,plural, =0{Aucun appareil connecté}=1{1 appareil connecté}one{# appareil connecté}other{# appareils connectés}}"</string>
<string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Plus longtemps."</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Réinitialiser la session Invité?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Retirer l\'invité?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Réinitialiser"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Retirer"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Réinitialisation de la session Invité en cours…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Prendre une photo"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Sélectionner une image"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index f2a1814e81f2..71acc6f26a89 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Réinitialiser la session Invité ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Supprimer l\'invité ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Réinitialiser"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Supprimer"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Réinitialisation de la session Invité…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Prendre une photo"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Choisir une image"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Activer l\'écran"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Autoriser l\'activation de l\'écran"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Autoriser une appli à activer l\'écran. Si l\'autorisation est accordée, l\'appli peut activer l\'écran à tout moment sans votre intention explicite."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scanner un code QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Pour commencer à écouter, centrez le code QR ci-dessous"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Le format de code QR n\'est pas valide"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 9e55f8e41f2b..cf0aacbc8775 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Queres restablecer a sesión de convidado?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Queres quitar o convidado?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Restablecer"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Quitar"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Restablecendo sesión de convidado…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Tirar foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Escoller imaxe"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Activar a pantalla"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir activación da pantalla"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permite que unha aplicación active a pantalla. Se lle dás permiso, a aplicación poderá activar a pantalla en calquera momento sen que llo pidas."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Escanear código QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para comezar a escoitar audio, encadra o seguinte código QR"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"O formato do código QR non é válido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 391536389cfd..0d16ebd6fca4 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"અતિથિને રીસેટ કરીએ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"અતિથિને કાઢી નાખીએ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"રીસેટ કરો"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"કાઢી નાખો"</string>
<string name="guest_resetting" msgid="7822120170191509566">"અતિથિને રીસેટ કરી રહ્યાં છીએ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ફોટો લો"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"છબી પસંદ કરો"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"સ્ક્રીન ચાલુ કરો"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"સ્ક્રીન ચાલુ કરવાની મંજૂરી આપો"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ઍપને સ્ક્રીન ચાલુ કરવાની મંજૂરી આપો. જો મંજૂરી આપી હોય, તો ઍપ તમારા સ્પષ્ટ હેતુ વિના કોઈપણ સમયે સ્ક્રીન ચાલુ કરી શકે છે."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR કોડ સ્કૅન કરો"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"સાંભળવાનું શરૂ કરવા માટે, QR કોડને નીચે ફ્રેમની મધ્યમાં લાવો"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"આ QR કોડ માન્ય ફૉર્મેટમાં નથી"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 622e33d80fc3..0e347653070a 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"क्या आप मेहमान के तौर पर ब्राउज़ करने का सेशन रीसेट करना चाहते हैं?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"क्या मेहमान को हटाना है?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"रीसेट करें"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"हटाएं"</string>
<string name="guest_resetting" msgid="7822120170191509566">"मेहमान के तौर पर ब्राउज़ करने का सेशन रीसेट किया जा रहा है…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"फ़ोटो खींचें"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"कोई इमेज चुनें"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"स्क्रीन चालू करें"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"स्क्रीन चालू करने की अनुमति दें"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ऐप्लिकेशन को स्क्रीन चालू करने की अनुमति दें. ऐसा करने पर, ऐप्लिकेशन आपकी अनुमति लिए बिना भी, जब चाहे स्क्रीन चालू कर सकता है."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"क्यूआर कोड को स्कैन करें"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"सुनने के लिए, दिए गए क्यूआर कोड को बीच में लाएं"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"क्यूआर कोड का फ़ॉर्मैट गलत है"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 05e9557c952c..ff4f2395d102 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Poništiti gostujuću sesiju?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Ukloniti gosta?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Poništi"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Ukloni"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Poništavanje gostujuće sesije…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Fotografiraj"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Odaberi sliku"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Uključivanje zaslona"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Dopusti uključivanje zaslona"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dopustite aplikaciji da uključuje zaslon. Ako date to dopuštenje, aplikacija može uključiti zaslon u bilo kojem trenutku bez vaše izričite namjere."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skeniraj QR kôd"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Da biste počeli slušati, centrirajte QR kôd u nastavku"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kôd nije u važećem formatu"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index c244416342f6..dc12f69fd71f 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Visszaállítja a vendég munkamenetet?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Eltávolítja a vendéget?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Visszaállítás"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Eltávolítás"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Vendég munkamenet visszaállítása…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Fotó készítése"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Kép kiválasztása"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Képernyő bekapcsolása"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"A képernyő bekapcsolásának engedélyezése"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"A képernyő bekapcsolásának engedélyezése az adott alkalmazás számára. Ha megadja az engedélyt, az alkalmazás az Ön kifejezett szándéka nélkül, bármikor bekapcsolhatja a képernyőt."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR-kód beolvasása"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"A hallgatás megkezdéséhez igazítsa a QR-kódot az alábbi panel közepére"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"A QR-kód formátuma nem érvényes"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index ba51be82595f..cc1f2bed5597 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Վերակայե՞լ հյուրի աշխատաշրջանը"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Հեռացնե՞լ հյուրին"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Վերակայել"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Հեռացնել"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Հյուրի աշխատաշրջանը վերակայվում է…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Լուսանկարել"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Ընտրել պատկեր"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Էկրանի միացում"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Թույլատրել հավելվածին միացնել էկրանը"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Եթե թույլ տաք, հավելվածը ցանկացած ժամանակ կկարողանա միացնել էկրանը՝ առանց ձեր բացահայտ համաձայնության։"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR կոդի սկանավորում"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Լսելու համար տեսախցիկը պահեք QR կոդի վրա"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR կոդի ձևաչափն անվավեր է"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index b4c7cab3675f..8293463cac5c 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Reset tamu?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Hapus tamu?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Reset"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Hapus"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Mereset tamu …"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Ambil foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Pilih gambar"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Aktifkan layar"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Izinkan pengaktifan layar"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Mengizinkan aplikasi mengaktifkan layar. Jika diizinkan, aplikasi dapat mengaktifkan layar kapan saja tanpa izin Anda."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Pindai kode QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Untuk mulai mendengarkan, fokuskan kode QR berikut"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Format kode QR tidak valid"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index da25edb8a8a4..30dd9324e880 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Endurstilla gestastillingu?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Fjarlægja gest?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Endurstilla"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Fjarlægja"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Endurstillir gest…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Taka mynd"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Velja mynd"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Kveikja á skjánum"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Leyfa að kveikt sé á skjánum"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Leyfa forriti að kveikja á skjánum. Ef þetta er leyft getur forritið kveikt á skjánum hvenær sem er án þess að þú samþykkir það sérstaklega."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skanna QR-kóða"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Byrjaðu að hlusta með því að skanna QR-kóðann hér að neðan"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-kóði er ekki gilt snið"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 297ddf62f6c3..92bb253d7fdc 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Reimpostare sessione Ospite?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Vuoi rimuovere l\'ospite?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Reimposta"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Rimuovi"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Reimpostazione sessione Ospite in corso…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Scatta una foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Scegli un\'immagine"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Attiva lo schermo"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Consenti l\'attivazione dello schermo"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Consenti a un\'app di attivare lo schermo. Se la autorizzi, l\'app può attivare lo schermo in qualsiasi momento senza la tua autorizzazione esplicita."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scansiona codice QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Per iniziare ad ascoltare, centra il codice QR qui sotto"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Il formato del codice QR non è valido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index b2e66a5cd139..86b283c34360 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"לאפס את הגלישה כאורח?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"להסיר את האורח/ת?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"איפוס"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"הסרה"</string>
<string name="guest_resetting" msgid="7822120170191509566">"מתבצע איפוס של הגלישה כאורח…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"צילום תמונה"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"לבחירת תמונה"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"הפעלת המסך"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"הרשאה להפעלת המסך"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"הרשאה לאפליקציה להפעיל את המסך. אם מעניקים את ההרשאה, האפליקציה יכולה להפעיל את המסך בכל זמן, גם בלי שמתכוונים לכך במפורש."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"‏סריקת קוד QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"‏כדי להתחיל בהאזנה, צריך להציב את קוד ה‑QR במרכז החלון שבהמשך"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"‏הפורמט של קוד ה‑QR לא תקין"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index d561303296a5..82432e8dbfcf 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"ゲストをリセットしますか?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ゲストを削除しますか?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"リセット"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"削除"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ゲストをリセットしています…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"写真を撮る"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"画像を選択"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"画面をオンにする"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"画面をオンにすることを許可する"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"画面をオンにすることをアプリに許可します。許可すると、ユーザーからの明示的インテントを必要とせずに、アプリがいつでも画面をオンにできるようになります。"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR コードをスキャン"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"再生を開始するには、下の枠に QR コードを合わせてください"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR コードの形式が無効です"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 2f80db02d652..bd7c513ad9d4 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"გადაყენდეს სტუმარი?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"გსურთ სტუმრის ამოშლა?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"გადაყენება"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ამოშლა"</string>
<string name="guest_resetting" msgid="7822120170191509566">"მიმდინარეობს სტუმრის გადაყენება…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ფოტოს გადაღება"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"აირჩიეთ სურათი"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ჩართეთ ეკრანი"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ეკრანის ჩართვის დაშვება"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"დართეთ ნება აპს, ჩართოს ეკრანი. თუ ამ ნებართვას მიანიჭებთ, აპმა შეიძლება ნებისმიერ დროს ჩართოს ეკრანი თქვენი ცალსახა განზრახვის გარეშე."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR კოდის სკანირება"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"მოსმენის დასაწყებად ცენტრში მოაქციეთ ქვემოთ მოცემული QR კოდი"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR კოდის ფორმატი არასწორია"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index e6670996b87f..2e71d517f201 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Қонақ сеансы бастапқы күйге қайтарылсын ба?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Қонақты өшіру керек пе?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Бастапқы күйге қайтару"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Өшіру"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Қонақ сеансы бастапқы күйге қайтарылуда…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Фотосуретке түсіру"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Сурет таңдау"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Экранды қосу"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Экранды қосуға рұқсат беру"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Қолданбаның экранды қосуына рұқсат береді. Рұқсат берілсе, қолданба кез келген уақытта экранды өздігінен қосуы мүмкін."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR кодын сканерлеу"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Тыңдай бастау үшін төмендегі QR кодын ортаға орналастырыңыз."</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR кодының форматы жарамсыз."</string>
</resources>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index ddcb919fd05f..821813b1a13f 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"កំណត់​ភ្ញៀវឡើង​វិញឬ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ដកភ្ញៀវចេញឬ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"កំណត់​ឡើងវិញ"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ដកចេញ"</string>
<string name="guest_resetting" msgid="7822120170191509566">"កំពុងកំណត់​ភ្ញៀវឡើងវិញ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ថតរូប"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ជ្រើសរើស​រូបភាព"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"បើក​អេក្រង់"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"អនុញ្ញាតឱ្យ​បើកអេក្រង់"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"អនុញ្ញាតឱ្យ​កម្មវិធី​បើកអេក្រង់។ ប្រសិនបើ​អនុញ្ញាត កម្មវិធី​អាចបើកអេក្រង់​បានគ្រប់ពេល ទោះបីជា​អ្នកគ្មានបំណង​ធ្វើអន្តរកម្មក៏ដោយ។"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"ស្កេន​កូដ QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ដើម្បីចាប់ផ្ដើមស្ដាប់ សូមដាក់កូដ QR ខាងក្រោមឱ្យ​នៅចំកណ្ដាល"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"កូដ QR មិនមែនជា​ទម្រង់​ដែលត្រឹមត្រូវ​ទេ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 943770511d7e..7beba07407a8 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -232,7 +232,7 @@
<string name="vpn_settings_not_available" msgid="2894137119965668920">"VPN ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="tethering_settings_not_available" msgid="266821736434699780">"ಟೆಥರಿಂಗ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="apn_settings_not_available" msgid="1147111671403342300">"ಪ್ರವೇಶ ಬಿಂದು ಹೆಸರಿನ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಈ ಬಳಕೆದಾರರಿಗೆ ಲಭ್ಯವಿಲ್ಲ"</string>
- <string name="enable_adb" msgid="8072776357237289039">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆ"</string>
+ <string name="enable_adb" msgid="8072776357237289039">"USB ಡೀಬಗಿಂಗ್‌"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"USB ಸಂಪರ್ಕಗೊಂಡಾಗ ಡೀಬಗ್ ಮೋಡ್"</string>
<string name="clear_adb_keys" msgid="3010148733140369917">"USB ಡೀಬಗ್‌ ಮಾಡುವಿಕೆಯ ಅಧಿಕೃತಗೊಳಿಸುವಿಕೆಗಳನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ"</string>
<string name="enable_adb_wireless" msgid="6973226350963971018">"ವೈರ್‌ಲೆಸ್ ಡೀಬಗಿಂಗ್"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"ಅತಿಥಿ ಬಳಕೆದಾರರನ್ನು ರೀಸೆಟ್ ಮಾಡಬೇಕೆ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ಅತಿಥಿಯನ್ನು ತೆಗೆದುಹಾಕಬೇಕೇ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ರೀಸೆಟ್ ಮಾಡಿ"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ತೆಗೆದುಹಾಕಿ"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ಅತಿಥಿ ಬಳಕೆದಾರರ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ರೀಸೆಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ಫೋಟೋ ತೆಗೆದುಕೊಳ್ಳಿ"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ಚಿತ್ರವನ್ನು ಆರಿಸಿ"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆನ್ ಮಾಡಲು ಅನುಮತಿಸಿ"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆನ್ ಮಾಡಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸಿ. ಅನುಮತಿಸಿದರೆ, ನಿಮಗೆ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದಾಗಲೂ ಆ್ಯಪ್ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆನ್ ಮಾಡಬಹುದು."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR ಕೋಡ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ಆಲಿಸುವುದಕ್ಕೆ ಪ್ರಾರಂಭಿಸಲು, ಕ್ಯಾಮರಾವನ್ನು ಕೆಳಗಿನ QR ಕೋಡ್ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿ"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR ಕೋಡ್ ಮಾನ್ಯ ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿಲ್ಲ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 3910faacd77a..c4841996f554 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"게스트를 재설정하시겠습니까?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"게스트를 삭제하시겠습니까?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"재설정"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"삭제"</string>
<string name="guest_resetting" msgid="7822120170191509566">"게스트 재설정 중…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"사진 찍기"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"이미지 선택"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"화면 켜기"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"화면 켜기 허용"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"앱에서 화면을 켜도록 허용합니다. 권한이 부여된 경우 앱에서 명시적 인텐트 없이 언제든지 화면을 켤 수 있습니다."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR 코드 스캔"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"아래의 QR 코드가 스캐너 가운데에 오도록 맞춘 다음 듣기를 시작하세요"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR 코드의 형식이 유효하지 않습니다."</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index ce12136bcdaf..944ba8d5a450 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Конок сеансын баштапкы абалга келтиресизби?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Конокту өчүрөсүзбү?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Баштапкы абалга келтирүү"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Өчүрүү"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Конок сеансы баштапкы абалга келтирилүүдө…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Сүрөткө тартуу"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Сүрөт тандаңыз"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Экранды күйгүзүү"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Экранды күйгүзүүгө уруксат берүү"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Колдонмого экранды күйгүзүүгө уруксат бериңиз. Уруксат берилсе, колдонмо экранды каалаган убакта сизден уруксат сурабастан күйгүзүшү мүмкүн."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR кодун скандоо"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Угуп баштоо үчүн QR кодун борборго жайгаштырыңыз"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR кодунун форматы жараксыз"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index de3245b2f50d..bd125e712148 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"ຣີເຊັດແຂກບໍ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ລຶບແຂກອອກບໍ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ຣີເຊັດ"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ລຶບອອກ"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ກຳລັງຣີເຊັດແຂກ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ຖ່າຍຮູບ"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ເລືອກຮູບ"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ເປີດໜ້າຈໍ"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ອະນຸຍາດໃຫ້ເປີດໜ້າຈໍ"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ອະນຸຍາດໃຫ້ແອັບເປີດໜ້າຈໍໄດ້. ຫາກອະນຸມັດ, ແອັບຈະສາມາດເປີດໜ້າຈໍຕອນໃດກໍໄດ້ໂດຍທີ່ທ່ານບໍ່ຕ້ອງມີເຈດຕະນາຢ່າງຈະແຈ້ງ."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"ສະແກນລະຫັດ QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ເພື່ອເລີ່ມການຟັງ, ໃຫ້ວາງລະຫັດ QR ທາງລຸ່ມນີ້ໄວ້ທາງກາງ"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"ຮູບແບບລະຫັດ QR ບໍ່ຖືກຕ້ອງ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index a5fa6f310676..bf099dca96b0 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Nustatyti svečią iš naujo?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Pašalinti svečią?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Nustatyti iš naujo"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Pašalinti"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Svečias nustatomas iš naujo…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Fotografuoti"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Pasirinkti vaizdą"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ekrano įjungimas"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Leisti įjungti ekraną"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Leiskite programai įjungti ekraną. Jei suteiksite leidimą, programa galės įjungti ekraną bet kuriuo metu be nurodyto tikslo."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR kodo nuskaitymas"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Jei norite pradėti klausyti, nustatykite toliau pateiktą QR kodą per vidurį"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kodas netinkamo formato"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index f17566599751..8d500ddf2267 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Vai atiestatīt viesa sesiju?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Vai noņemt viesi?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Atiestatīt"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Noņemt"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Notiek viesa sesijas atiestatīšana…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Uzņemt fotoattēlu"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Izvēlēties attēlu"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ekrāna ieslēgšana"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Atļaut ieslēgt ekrānu"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Atļaujiet lietotnei ieslēgt ekrānu. Ja to atļausiet, lietotne varēs jebkurā laikā ieslēgt ekrānu bez tiešas jūsu piekrišanas."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Kvadrātkoda skenēšana"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Lai sāktu klausīties, centrējiet tālāk norādīto kvadrātkodu."</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Kvadrātkoda formāts nav derīgs."</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index c5e27622506b..dbde6913d8da 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Да се ресетира гостинот?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Да се отстрани гостинот?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Ресетирај"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Отстрани"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Се ресетира гостинот…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Фотографирајте"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Одберете слика"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index e6b7540e11ee..9519f0d55b78 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -447,7 +447,7 @@
<string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"വർണ്ണാന്ധത (ചുവപ്പ്-പച്ച‌)"</string>
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"പ്രോട്ടാനോമലി (ചുവപ്പ്-പച്ച)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ട്രിട്ടാനോമലി (നീല-മഞ്ഞ)"</string>
- <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"നിറം ക്രമീകരിക്കൽ"</string>
+ <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"നിറം ശരിയാക്കൽ"</string>
<string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"ഇനിപ്പറയുന്ന കാര്യങ്ങൾ ചെയ്യാൻ ആഗ്രഹിക്കുമ്പോൾ നിറം ശരിയാക്കൽ സഹായകരമാകും:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;നിറങ്ങൾ കൂടുതൽ കൃത്യമായി കാണാൻ&lt;/li&gt; &lt;li&gt;&amp;nbsp;ഫോക്കസ് ചെയ്യാൻ നിങ്ങളെ സഹായിക്കുന്നതിന് നിറങ്ങൾ നീക്കം ചെയ്യാൻ&lt;/li&gt; &lt;/ol&gt;"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ഉപയോഗിച്ച് അസാധുവാക്കി"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"അതിഥിയെ റീസെറ്റ് ചെയ്യണോ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"അതിഥിയെ നീക്കം ചെയ്യണോ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"റീസെറ്റ് ചെയ്യുക"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"നീക്കം ചെയ്യുക"</string>
<string name="guest_resetting" msgid="7822120170191509566">"അതിഥിയെ റീസെറ്റ് ചെയ്യുന്നു…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ഒരു ഫോട്ടോ എടുക്കുക"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ഒരു ചിത്രം തിരഞ്ഞെടുക്കുക"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"സ്ക്രീൻ ഓണാക്കുക"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"സ്ക്രീൻ ഓണാക്കാൻ അനുവദിക്കുക"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"സ്ക്രീൻ ഓണാക്കാൻ ആപ്പിനെ അനുവദിക്കുക. അനുവദിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ താൽപ്പര്യം കൂടാതെ ഏതുസമയത്തും സ്ക്രീൻ ഓണാക്കാൻ ആപ്പിന് കഴിയും."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR കോഡ് സ്‌കാൻ ചെയ്യുക"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"കേട്ട് തുടങ്ങാൻ ചുവടെയുള്ള QR കോഡിലേക്ക് കേന്ദ്രീകരിക്കുക"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR കോഡ് ഫോർമാറ്റ് അസാധുവാണ്"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 09204094db46..77bcbc72c113 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Зочныг шинэчлэх үү?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Зочныг хасах уу?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Шинэчлэх"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Хасах"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Зочныг шинэчилж байна…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Зураг авах"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Зураг сонгох"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Дэлгэцийг асаах"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Дэлгэцийг асаахыг зөвшөөрнө үү"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Аппад дэлгэцийг асаахыг зөвшөөрнө үү. Зөвшөөрсөн тохиолдолд тухайн апп таны тодорхой оролцоогүйгээр ямар ч үед дэлгэцийг асааж болно."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR код скан хийх"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Сонсож эхлэхийн тулд доорх QR кодыг голлуулаарай"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR код буруу форматтай байна"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 173a62cff752..262064764e56 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"अतिथीला रीसेट करायचे आहे का?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"अतिथीला काढून टाकायचे आहे का?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"रीसेट करा"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"काढून टाका"</string>
<string name="guest_resetting" msgid="7822120170191509566">"अतिथीला रीसेट करत आहे…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"फोटो काढा"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"इमेज निवडा"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"स्क्रीन सुरू करा"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"स्क्रीन सुरू करण्यासाठी अनुमती द्या"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"स्क्रीन सुरू करण्यासाठी ॲपला अनुमती द्या. अनुमती दिल्यास, ॲप तुमच्या स्पष्ट हेतूशिवाय कधीही स्क्रीन सुरू करू शकते."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR कोड स्कॅन करा"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ऐकणे सुरू करण्यासाठी, खालील QR कोड मध्यभागी ठेवा"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR कोडचा फॉरमॅट चुकीचा आहे"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index 695157b79098..09d7fef89e1c 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Tetapkan semula tetamu?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Alih keluar tetamu?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Tetapkan semula"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Alih keluar"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Menetapkan semula tetamu…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Ambil foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Pilih imej"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Hidupkan skrin"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Benarkan menghidupkan skrin"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Benarkan apl menghidupkan skrin. Jika dibenarkan, apl boleh menghidupkan skrin pada bila-bila masa tanpa niat eksplisit anda."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Imbas kod QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Untuk mula mendengar, pusatkan kod QR di bawah"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Kod QR bukan dalam format yang sah"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index ea7d11c2edfe..755b46833c16 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -225,7 +225,7 @@
<string name="choose_profile" msgid="343803890897657450">"ပရိုဖိုင်ကို ရွေးရန်"</string>
<string name="category_personal" msgid="6236798763159385225">"ကိုယ်ရေး"</string>
<string name="category_work" msgid="4014193632325996115">"အလုပ်"</string>
- <string name="development_settings_title" msgid="140296922921597393">"ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများ"</string>
+ <string name="development_settings_title" msgid="140296922921597393">"ဆော့ဝဲလ်ရေးသူ ရွေးစရာများ"</string>
<string name="development_settings_enable" msgid="4285094651288242183">"ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများကို ဖွင့်ပါ"</string>
<string name="development_settings_summary" msgid="8718917813868735095">"အပလီကေးရှင်းတိုးတက်မှုအတွက် ရွေးချယ်မှုကိုသတ်မှတ်သည်"</string>
<string name="development_settings_not_available" msgid="355070198089140951">"ဤအသုံးပြုသူအတွက် ဆော့ဖ်ဝဲရေးသူ ရွေးစရာများ မရနိုင်ပါ"</string>
@@ -265,7 +265,7 @@
<string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"ချွတ်ယွင်းမှု အစီရင်ခံရန် ဖြတ်လမ်း"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"ချွတ်ယွင်းမှု အစီရင်ခံစာကို တင်ရန် ပါဝါမီနူးမှ ခလုတ်ကို ပြပါ"</string>
- <string name="keep_screen_on" msgid="1187161672348797558">"ဖွင့်လျက်သား"</string>
+ <string name="keep_screen_on" msgid="1187161672348797558">"ဖွင့်ထားခြင်း"</string>
<string name="keep_screen_on_summary" msgid="1510731514101925829">"အားသွင်းနေချိန် ဖန်သားပြင် ပိတ်သွားမည် မဟုတ်ပါ"</string>
<string name="bt_hci_snoop_log" msgid="7291287955649081448">"ဘလူးတုသ် HCI snoop မှတ်တမ်းကို ဖွင့်ခြင်း"</string>
<string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"ဘလူးတုသ် အတွဲများ သိမ်းယူပါ။ (ဤဆက်တင်ကို ပြောင်းပြီးသည့်အခါ ဘလူးတုသ် ဖွင့်/ပိတ် လုပ်ပါ)"</string>
@@ -311,7 +311,7 @@
<string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"ချိတ်ဆက်၍ မရပါ"</string>
<string name="wifi_display_certification_summary" msgid="8111151348106907513">"ကြိုးမဲ့ အခင်းအကျင်း အသိအမှတ်ပြုလက်မှတ်အတွက် ရွေးချယ်စရာများပြရန်"</string>
<string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi မှတ်တမ်းတင်ခြင်း နှုန်းအားမြင့်ကာ၊ Wi‑Fi ရွေးရာတွင် SSID RSSI ဖြင့်ပြပါ"</string>
- <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ဘက်ထရီ အသုံးပြုမှုကို လျှော့ကျစေပြီး ကွန်ရက်စွမ်းဆောင်ရည်ကို ပိုမိုကောင်းမွန်စေသည်"</string>
+ <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ဘက်ထရီအသုံးပြုမှု လျှော့ချပြီး ကွန်ရက်စွမ်းဆောင်ရည် ပိုမိုကောင်းမွန်သည်"</string>
<string name="wifi_non_persistent_mac_randomization_summary" msgid="2159794543105053930">"ဤမုဒ်ကို ဖွင့်ထားသည့်အခါ MAC ကျပန်းပြုလုပ်ထားသည့် ကွန်ရက်သို့ ချိတ်ဆက်လိုက်သည့်အခါတိုင်း ဤစက်၏ MAC လိပ်စာ ပြောင်းသွားနိုင်သည်။"</string>
<string name="wifi_metered_label" msgid="8737187690304098638">"အခမဲ့ မဟုတ်ပါ"</string>
<string name="wifi_unmetered_label" msgid="6174142840934095093">"အခမဲ့"</string>
@@ -377,7 +377,7 @@
<string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ခြေရာခံခြင်းဖွင့်ပါ။"</string>
<string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB အသံလမ်းကြောင်း ပိတ်ခြင်း"</string>
<string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB အသံစက်ပစ္စည်းများသို့ အလိုအလျောက် ချိတ်ဆက်ခြင်းကို ပိတ်ရန်"</string>
- <string name="debug_layout" msgid="1659216803043339741">"ဖွဲ့စည်းပုံဘောင်များ ပြခြင်း"</string>
+ <string name="debug_layout" msgid="1659216803043339741">"ပြကွက်၏ဘောင်များ ပြခြင်း"</string>
<string name="debug_layout_summary" msgid="8825829038287321978">"ဖြတ်ပိုင်းအနားသတ်များ၊ အနားများ စသဖြင့် ပြပါ။"</string>
<string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL အပြင်အဆင်အတိုင်း ဖြစ်စေခြင်း"</string>
<string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"ဘာသာစကားအားလုံးအတွက် RTL အပြင်အဆင်အတိုင်း ဖြစ်စေသည်"</string>
@@ -406,7 +406,7 @@
<string name="force_allow_on_external_summary" msgid="8525425782530728238">"တိကျစွာ သတ်မှတ်ထားသည့်တန်ဖိုးများရှိသော်လည်း၊ ပြင်ပသိုလှောင်ခန်းများသို့ မည်သည့်အက်ပ်ကိုမဆို ဝင်ရောက်ခွင့်ပြုပါ"</string>
<string name="force_resizable_activities" msgid="7143612144399959606">"လုပ်ဆောင်ချက်များ အရွယ်ပြောင်းနိုင်ခြင်း"</string>
<string name="force_resizable_activities_summary" msgid="2490382056981583062">"သတ်မှတ်တန်ဖိုး မည်သို့ပင်ရှိစေ ဝင်းဒိုးများ၏ လုပ်ဆောင်မှုအားလုံးကို အရွယ်အစားပြင်သည်။"</string>
- <string name="enable_freeform_support" msgid="7599125687603914253">"အခမဲ့ပုံစံ ဝင်းဒိုးကို ဖွင့်ပါ"</string>
+ <string name="enable_freeform_support" msgid="7599125687603914253">"ရွှေ့နိုင်ပြင်နိုင်သော ဝင်းဒိုးများ ဖွင့်ရန်"</string>
<string name="enable_freeform_support_summary" msgid="1822862728719276331">"ပုံစံမျိုးစုံဝင်းဒိုးများ စမ်းသပ်မှုအတွက် အထောက်အပံ့ကို ဖွင့်ပါ"</string>
<string name="local_backup_password_title" msgid="4631017948933578709">"ဒက်စ်တော့ အရန်စကားဝှက်"</string>
<string name="local_backup_password_summary_none" msgid="7646898032616361714">"ဒက်စ်တော့ အရန်သိမ်းဆည်းခြင်းအားလုံးကို လောလောဆယ် ကာကွယ်မထားပါ"</string>
@@ -448,7 +448,8 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (အနီ-အစိမ်း)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (အပြာ-အဝါ)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"အရောင်ပြင်ဆင်မှု"</string>
- <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"အရောင် အမှန်ပြင်ခြင်းသည် အောက်ပါတို့အတွက် အသုံးဝင်နိုင်သည်-&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;အရောင်များကို ပိုမိုမှန်ကန်စွာ ကြည့်ရှုခြင်း&lt;/li&gt; &lt;li&gt;နှင့်nbsp;အာရုံစိုက်နိုင်ရန် အရောင်များ ဖယ်ရှားခြင်း&lt;/li&gt; &lt;/ol&gt;"</string>
+ <!-- syntax error in translation for accessibility_display_daltonizer_preference_subtitle (1522101114585266455) org.xmlpull.v1.XmlPullParserException: expected: /string read: li (position:END_TAG </li>@1:326 in <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"အရောင် အမှန်ပြင်ခြင်းသည် အောက်ပါတို့အတွက် အသုံးဝင်နိုင်သည်-&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;အရောင်များကို ပိုမိုမှန်ကန်စွာ ကြည့်ရှုခြင်း&lt;/li&gt; &lt;li&gt;&amp;nbsp;အာရုံစိုက်နိုင်ရန် အရောင်များ ဖယ်ရှားခြင်း</li> </ol>"</string>
+) -->
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> မှ ကျော်၍ လုပ်ထားသည်။"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ခန့် ကျန်သည်"</string>
@@ -596,8 +597,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"ဧည့်သည်ကို ပြင်ဆင်သတ်မှတ်မလား။"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ဧည့်သည်ကို ဖယ်ရှားမလား။"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ပြင်ဆင်သတ်မှတ်ရန်"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ဖယ်ရှားရန်"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ဧည့်သည်ကို ပြင်ဆင်သတ်မှတ်နေသည်…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ဓာတ်ပုံရိုက်ရန်"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ပုံရွေးရန်"</string>
@@ -653,10 +653,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ဖန်သားပြင် ဖွင့်ခြင်း"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ဖန်သားပြင် ဖွင့်ခွင့်ပြုရန်"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"အက်ပ်ကို ဖန်သားပြင် ဖွင့်ခွင့်ပြုနိုင်သည်။ ခွင့်ပြုထားပါက အက်ပ်သည် သင့်ထံမှ တိကျသောရည်ရွယ်ချက်မလိုဘဲ ဖန်သားပြင်ကို အချိန်မရွေး ဖွင့်နိုင်မည်။"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR ကုဒ်ကို စကင်ဖတ်ရန်"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"စတင်နားဆင်ရန် အောက်ရှိ QR ကုဒ်ကို အလယ်တွင်ထားပါ"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR ကုဒ်သည် မှန်ကန်သောဖော်မက် မဟုတ်ပါ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 2bedf8afb246..cc7bcf8891ff 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Vil du tilbakestille gjesten?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Vil du fjerne gjesten?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Tilbakestill"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Fjern"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Tilbakestiller gjesten …"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Ta et bilde"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Velg et bilde"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Slå på skjermen"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Tillat å slå på skjermen"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Tillat at en app slår på skjermen. Hvis tillatelsen gis, kan appen slå på skjermen når som helst uten din eksplisitte intensjon."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skann QR-koden"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"For å begynne å lytte, midtstill QR-koden nedenfor"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-koden er ikke i et gyldig format"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index d8dab07206cc..b88d6b7b7c03 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -510,7 +510,7 @@
<string name="retail_demo_reset_message" msgid="5392824901108195463">"डेमो मोडमा फ्याक्ट्री रिसेट गर्न पासवर्ड प्रविष्टि गर्नुहोस्"</string>
<string name="retail_demo_reset_next" msgid="3688129033843885362">"अर्को"</string>
<string name="retail_demo_reset_title" msgid="1866911701095959800">"पासवर्ड आवश्यक छ"</string>
- <string name="active_input_method_subtypes" msgid="4232680535471633046">"आगत विधिहरू सक्रिय गर्नुहोस्"</string>
+ <string name="active_input_method_subtypes" msgid="4232680535471633046">"आगत विधिहरू अन गर्नुहोस्"</string>
<string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"सिष्टममा भएका भाषा प्रयोग गरियोस्"</string>
<string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"<xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g>का लागि सेटिङहरू खोल्न विफल भयो।"</string>
<string name="ime_security_warning" msgid="6547562217880551450">"यस इनपुट विधिले तपाईँले टाइप गर्नुहुने सम्पूर्ण पाठ बटु्ल्न सक्छ, व्यक्तिगत डेटा जस्तै पासवर्ड र क्रेडिट कार्ड नम्बर लगायतका। यो <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g> अनुप्रयोगबाट आउँदछ। यो इनपुट विधि प्रयोग गर्ने हो?"</string>
@@ -531,8 +531,8 @@
<string name="alarms_and_reminders_title" msgid="8819933264635406032">"घडी तथा रिमाइन्डरहरू"</string>
<string name="alarms_and_reminders_footer_title" msgid="6302587438389079695">"यो एपलाई अलार्म सेट गर्ने र समयमै पूरा गर्नु पर्ने कारबाहीहरूको रुटिन बनाउने अनुमति दिनुहोस्। यो अनुमति दिइएको छ भने यो एप ब्याकग्राउन्डमा चल्छ र धेरै ब्याट्री खपत हुन्छ।\n\nयो अनुमति दिइएको छैन भने सेट गरिएका अलार्म बज्दैनन् र यो एपले तय गरेका गतिविधि चल्दैनन्।"</string>
<string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"समयतालिका, अलार्म, रिमाइन्डर, घडी"</string>
- <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"सक्रिय गर्नुहोस्"</string>
- <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"बाधा नपुऱ्याउनुहोस् नामक मोडलाई सक्रिय गर्नुहोस्"</string>
+ <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"अन गर्नुहोस्"</string>
+ <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"बाधा नपुऱ्याउनुहोस् नामक मोडलाई अन गर्नुहोस्"</string>
<string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"कहिल्यै होइन"</string>
<string name="zen_interruption_level_priority" msgid="5392140786447823299">"प्राथमिकता दिइएको मात्र"</string>
<string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>। <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
@@ -547,7 +547,7 @@
<string name="media_transfer_this_device_name" product="default" msgid="2357329267148436433">"यो फोन"</string>
<string name="media_transfer_this_device_name" product="tablet" msgid="3714653244000242800">"यो ट्याब्लेट"</string>
<string name="media_transfer_this_phone" msgid="7194341457812151531">"यो फोन"</string>
- <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"जोड्ने क्रममा समस्या भयो। यन्त्रलाई निष्क्रिय पारेर फेरि सक्रिय गर्नुहोस्"</string>
+ <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"जोड्ने क्रममा समस्या भयो। यन्त्रलाई निष्क्रिय पारेर फेरि अन गर्नुहोस्"</string>
<string name="media_transfer_wired_device_name" msgid="4447880899964056007">"तारयुक्त अडियो यन्त्र"</string>
<string name="help_label" msgid="3528360748637781274">"मद्दत र प्रतिक्रिया"</string>
<string name="storage_category" msgid="2287342585424631813">"भण्डारण"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"अतिथिका रूपमा ब्राउज गर्ने सेसन रिसेट गर्ने हो?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"यी अतिथि हटाउने हो?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"रिसेट गर्नुहोस्"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"हटाउनुहोस्"</string>
<string name="guest_resetting" msgid="7822120170191509566">"अतिथिका रूपमा ब्राउज गर्ने सेसन रिसेट गरिँदै छ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"फोटो खिच्नुहोस्"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"कुनै फोटो छनौट गर्नुहोस्"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"स्क्रिन अन गर्नुहोस्"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"स्क्रिन अन गर्ने अनुमति दिइयोस्"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"कुनै एपलाई स्क्रिन अन गर्ने अनुमति दिइयोस्। यो अनुमति दिइएका खण्डमा तपाईंले अन गर्न नखोजेका बेलामा पनि एपले जुनसुकै बेला स्क्रिन अन गर्न सक्छ।"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR कोड स्क्यान गर्नुहोस्"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"अडियो सुन्न तलको QR कोडलाई केन्द्र भागमा पार्नुहोस्"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR कोडको फर्म्याट वैध छैन"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 913fc667e7f9..82d584453d7c 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Gast resetten?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Gast verwijderen?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetten"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Verwijderen"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Gast resetten…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Foto maken"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Afbeelding kiezen"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Scherm aanzetten"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Scherm aanzetten toestaan"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Toestaan dat een app het scherm aanzet. Indien toegestaan, kan de app het scherm op elk moment aanzetten zonder jouw expliciete intentie."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR-code scannen"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Centreer de onderstaande QR-code om te beginnen met luisteren"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-code heeft geen geldige indeling"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index ea7b23c3d972..128328f8c5eb 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"ଅତିଥି ସେସନକୁ ରିସେଟ୍ କରିବେ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ଅତିଥିଙ୍କୁ କାଢ଼ିବେ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ରିସେଟ୍ କରନ୍ତୁ"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"କାଢ଼ି ଦିଅନ୍ତୁ"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ଅତିଥି ସେସନକୁ ରିସେଟ୍ କରାଯାଉଛି…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ଗୋଟିଏ ଫଟୋ ଉଠାନ୍ତୁ"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ଏକ ଛବି ବାଛନ୍ତୁ"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ସ୍କ୍ରିନକୁ ଚାଲୁ କରନ୍ତୁ"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ସ୍କ୍ରିନକୁ ଚାଲୁ କରିବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ସ୍କ୍ରିନକୁ ଚାଲୁ କରିବା ପାଇଁ ଏକ ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଯଦି ଅନୁମତି ଦିଆଯାଏ, ତେବେ ଆପଟି ଆପଣଙ୍କ ସ୍ପଷ୍ଟ ଇଣ୍ଟେଣ୍ଟ ବିନା ଯେ କୌଣସି ସମୟରେ ସ୍କ୍ରିନକୁ ଚାଲୁ କରିପାରେ।"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR କୋଡ ସ୍କାନ କରନ୍ତୁ"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ଶୁଣିବା ଆରମ୍ଭ କରିବା ପାଇଁ, ନିମ୍ନରେ ଥିବା QR କୋଡକୁ କେନ୍ଦ୍ରରେ ରଖନ୍ତୁ"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR କୋଡ ଏକ ବୈଧ ଫର୍ମାଟ ନୁହେଁ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 183aa6bfbe63..3beda13db011 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"ਕੀ ਮਹਿਮਾਨ ਨੂੰ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"ਕੀ ਮਹਿਮਾਨ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ਰੀਸੈੱਟ ਕਰੋ"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ਹਟਾਓ"</string>
<string name="guest_resetting" msgid="7822120170191509566">"ਮਹਿਮਾਨ ਨੂੰ ਰੀਸੈੱਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ਇੱਕ ਫ਼ੋਟੋ ਖਿੱਚੋ"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ਕੋਈ ਚਿੱਤਰ ਚੁਣੋ"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"ਸਕ੍ਰੀਨ ਚਾਲੂ ਕਰੋ"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"ਸਕ੍ਰੀਨ ਚਾਲੂ ਕਰਨ ਦਿਓ"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ਐਪ ਨੂੰ ਸਕ੍ਰੀਨ ਚਾਲੂ ਕਰਨ ਦਿਓ। ਜੇ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਐਪ ਕਿਸੇ ਵੀ ਸਮੇਂ ਸਕ੍ਰੀਨ ਨੂੰ ਚਾਲੂ ਕਰ ਸਕਦੀ ਹੈ, ਭਾਵੇਂ ਤੁਹਾਨੂੰ ਇਸਦੀ ਲੋੜ ਨਾ ਹੋਵੇ।"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR ਕੋਡ ਸਕੈਨ ਕਰੋ"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ਸੁਣਨਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ QR ਕੋਡ ਨੂੰ ਕੇਂਦਰ ਵਿੱਚ ਰੱਖੋ"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR ਕੋਡ ਦਾ ਫਾਰਮੈਟ ਵੈਧ ਨਹੀਂ ਹੈ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 2bd78a6e937f..e8fa3ae5c802 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -259,7 +259,7 @@
<string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Paruję urządzenie…"</string>
<string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Nie udało się sparować z urządzeniem. Kod QR jest nieprawidłowy albo urządzenie nie jest podłączone do tej samej sieci."</string>
<string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adres IP i port"</string>
- <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Zeskanuj kod QR"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skaner kodów QR"</string>
<string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Sparuj urządzenia przez Wi-Fi, skanując kod QR"</string>
<string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Połącz się z siecią Wi-Fi"</string>
<string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Zresetować sesję gościa?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Usunąć gościa?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetuj"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Usuń"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Resetuję sesję gościa…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Zrób zdjęcie"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Wybierz obraz"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Włączanie ekranu"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Zezwalaj na włączanie ekranu"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Zezwalaj na włączanie ekranu przez aplikację. Gdy przyznasz te uprawnienia, aplikacja będzie mogła w dowolnym momencie włączyć ekran bez Twojego wyraźnego pozwolenia."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skaner kodów QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Aby odsłuchać, wyśrodkuj kod QR poniżej"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Nieprawidłowy format kodu QR"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 3e5b67c1f86c..7f923be23145 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Redefinir visitante?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remover convidado?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Redefinir"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remover"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Redefinindo visitante…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Tirar uma foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Escolher uma imagem"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ligar tela"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir que a tela seja ligada"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permitir que um app ligue a tela. Se permitido, o app vai poder ligar a tela a qualquer momento sem uma intent explícita."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Ler o código QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para começar a ouvir, centralize o código QR abaixo"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"O código QR não está em um formato válido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index df80951ff485..beecbab8dd89 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -306,7 +306,7 @@
<string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Selecionar modo DNS privado"</string>
<string name="private_dns_mode_off" msgid="7065962499349997041">"Desativado"</string>
<string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automático"</string>
- <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nome de anfitrião do fornecedor DNS privado"</string>
+ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nome do anfitrião do fornecedor DNS privado"</string>
<string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Introduza nome - anfitrião do fornecedor DNS"</string>
<string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Não foi possível estabelecer ligação"</string>
<string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opções da certificação de display sem fios"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Pretende repor o convidado?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remover o convidado?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Repor"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remover"</string>
<string name="guest_resetting" msgid="7822120170191509566">"A repor o convidado…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Tirar uma foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Escolher uma imagem"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ative o ecrã"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir a ativação do ecrã"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permita que uma app ative o ecrã. Se a autorização for concedida, a app pode ativar o ecrã em qualquer altura sem a sua intenção explícita."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Leia o código QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para começar a ouvir, centre o código QR abaixo"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"O código QR não é um formato válido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 3e5b67c1f86c..7f923be23145 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Redefinir visitante?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Remover convidado?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Redefinir"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Remover"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Redefinindo visitante…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Tirar uma foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Escolher uma imagem"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ligar tela"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permitir que a tela seja ligada"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permitir que um app ligue a tela. Se permitido, o app vai poder ligar a tela a qualquer momento sem uma intent explícita."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Ler o código QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para começar a ouvir, centralize o código QR abaixo"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"O código QR não está em um formato válido"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index d87b6f95edba..1a0902f6d4fd 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Resetați invitatul?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Excludeți invitatul?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetați"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Eliminați"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Se resetează invitatul…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Faceți o fotografie"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Alegeți o imagine"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Activați ecranul"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Permiteți activarea ecranului"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Permiteți unei aplicații să activeze ecranul. Dacă acordați permisiunea, aplicația poate să activeze oricând ecranul, fără intenția dvs. explicită."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Scanați codul QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Pentru a începe să ascultați, centrați codul QR de mai jos"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Codul QR nu are un format valid"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 3703426757ee..8c2f78c866a0 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Сбросить гостевой сеанс?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Удалить гостя?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Сбросить"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Удалить"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Сброс гостевого сеанса…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Сделать снимок"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Выбрать фото"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Включение экрана"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Разрешить приложению включать экран"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Приложение сможет в любое время включать экран без явного согласия с вашей стороны"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Сканирование QR-кода"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Чтобы прослушать, поместите QR-код в центр"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Недопустимый формат QR-кода"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index b74fee50e11f..d9f08f23154f 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"අමුත්තා යළි සකසන්නද?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"අමුත්තා ඉවත් කරන්නද?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"යළි සකසන්න"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ඉවත් කරන්න"</string>
<string name="guest_resetting" msgid="7822120170191509566">"අමුත්තා යළි සකසමින්…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ඡායාරූපයක් ගන්න"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"රූපයක් තෝරන්න"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"තිරය ක්‍රියාත්මක කරන්න"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"තිරය ක්‍රියාත්මක කිරීමට ඉඩ දෙන්න"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"යෙදුමකට තිරය ක්‍රියාත්මක කිරීමට ඉඩ දෙන්න. ඉඩ දුනහොත්, යෙදුම ඔබගේ පැහැදිලි අභිප්‍රායෙන් තොරව ඕනෑම වේලාවක තිරය ක්‍රියාත්මක කළ හැකිය."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR කේතය ස්කෑන් කරන්න"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"සවන් දීම ආරම්භ කිරීමට, පහත QR කේතය මධ්‍යගත කරන්න"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR කේතය වලංගු ආකෘතියක් නොවේ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 51673d8bc42b..ac6f38d21122 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Chcete resetovať reláciu hosťa?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Chcete odobrať hosťa?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetovať"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Odstrániť"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Relácia hosťa sa resetuje…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Odfotiť"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Vybrať obrázok"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Zapínanie obrazovky"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Povolenie zapínania obrazovky"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Povoľte aplikácii zapínať obrazovku. Ak to urobíte, aplikácia bude môcť kedykoľvek zapínať obrazovku, a to aj vtedy, keď to nebudete mať v úmysle."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Naskenovanie QR kódu"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Ak chcete začať počúvať, umiestnite QR kód do stredu nižšie"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kód nie je platný formát"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 01dd0b6cc7f6..9746320f2864 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Želite ponastaviti gosta?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Želite odstraniti gosta?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Ponastavi"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Odstrani"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Ponastavljanje gosta …"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Fotografiranje"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Izberi sliko"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Vklop zaslona"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Dovoli vklop zaslona"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dovolite aplikaciji, da vklopi zaslon. Če ji to odobrite, lahko aplikacija kadar koli brez vašega eksplicitnega namena vklopi zaslon."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Optično branje kode QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Če želite začeti poslušati, postavite spodnjo kodo QR na sredino."</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Koda QR nima pravilne oblike zapisa."</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 1a55c5dcb5d5..5e7ca023c429 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Të rivendoset vizitori?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Të hiqet vizitori?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Rivendos"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Hiq"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Vizitori po rivendoset…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Bëj një fotografi"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Zgjidh një imazh"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ndiz ekranin"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Lejo ndezjen e ekranit"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Lejo një aplikacion që të ndezë ekranin. Nëse lejohet, aplikacioni mund ta ndezë ekranin në çdo kohë pa synimin tënd të shprehur."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skano kodin QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Që të fillosh të dëgjosh, vendos në qendër kodin QR më poshtë"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Kodi QR nuk është në format të vlefshëm"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 65df95da2144..7cda37116269 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -448,7 +448,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалија (црвено-зелено)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалија (плаво-жуто)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекција боја"</string>
- <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Корекција боја може да буде корисна када желите:to:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;да прецизније видите боје&lt;/li&gt; &lt;li&gt;&amp;nbsp;да уклоните боје како бисте се фокусирали&lt;/li&gt; &lt;/ol&gt;"</string>
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Корекција боја може да буде корисна када желите:&lt;br/&gt; &lt;ol&gt; &lt;li&gt;&amp;nbsp;Прецизније да видите боје&lt;/li&gt; &lt;li&gt;&amp;nbsp;Да уклоните боје како бисте се фокусирали&lt;/li&gt; &lt;/ol&gt;"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"Замењује га <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Желите ли да ресетујете сесију госта?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Желите ли да уклоните госта?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Ресетуј"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Уклони"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Сесија госта се ресетује…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Сликај"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Одабери слику"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Укључите екран"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Дозволи укључивање екрана"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Дозвољава апликацији да укључи екран. Ако се омогући, апликација може да укључи екран у било ком тренутку без ваше експлицитне намере."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Скенирајте QR кôд"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Да бисте почели да слушате, центрирајте QR кôд испод"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR кôд није у важећем формату"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 45f3750c18ed..2715029a50b3 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Vill du återställa gästsessionen?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Vill du ta bort gästen?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Återställ"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Ta bort"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Gästsessionen återställs …"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Ta ett foto"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Välj en bild"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Aktivera skärmen"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Tillåt att skärmen aktiveras"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Tillåt att en app aktiverar skärmen. Om du ger tillåtelse kan appen aktivera skärmen när som helst utan din uttryckliga avsikt."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skanna QR-kod"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Centrera QR-koden nedan om du vill börja lyssna"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR-kodens format är ogiltigt"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 380dbf4e603e..0da048c8dee5 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Ungependa kubadilisha kipindi cha mgeni?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Ungependa kumwondoa mgeni?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Badilisha"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Ondoa"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Inabadilisha kipindi cha mgeni…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Piga picha"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Chagua picha"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Washa skrini"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Ruhusu kuwasha skrini"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Ruhusu programu iwashe skrini. Ikiwa imepewa idhini, programu inaweza kuwasha skrini wakati wowote bila utaratibu wako dhahiri wa kuratibu."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Changanua msimbo wa QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Ili uanze kusikiliza, weka katikati msimbo wa QR ulio hapa chini"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Msimbo wa QR si muundo sahihi"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index da22b7d2d415..99cfc8d588af 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -589,29 +589,22 @@
<string name="add_user_failed" msgid="4809887794313944872">"புதிய பயனரை உருவாக்க முடியவில்லை"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"புதிய விருந்தினரை உருவாக்க முடியவில்லை"</string>
<string name="user_nickname" msgid="262624187455825083">"புனைப்பெயர்"</string>
- <!-- no translation found for user_add_user (7876449291500212468) -->
- <skip />
+ <string name="user_add_user" msgid="7876449291500212468">"பயனரைச் சேர்"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"கெஸ்ட்டைச் சேர்"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"கெஸ்ட்டை அகற்று"</string>
<string name="guest_reset_guest" msgid="6110013010356013758">"கெஸ்ட் அமர்வை மீட்டமை"</string>
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"கெஸ்ட்டை மீட்டமைக்கவா?"</string>
- <!-- no translation found for guest_remove_guest_dialog_title (4548511006624088072) -->
- <skip />
+ <string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"கெஸ்ட் பயனரை அகற்றவா?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"மீட்டமை"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"அகற்று"</string>
<string name="guest_resetting" msgid="7822120170191509566">"கெஸ்ட்டை மீட்டமைக்கிறது…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"படமெடுங்கள்"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"படத்தைத் தேர்வுசெய்யுங்கள்"</string>
<string name="user_image_photo_selector" msgid="433658323306627093">"படத்தைத் தேர்ந்தெடுங்கள்"</string>
- <!-- no translation found for failed_attempts_now_wiping_device (4016329172216428897) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_user (469060411789668050) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_profile (7626589520888963129) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_dialog_dismiss (2749889771223578925) -->
- <skip />
+ <string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"பலமுறை தவறாக முயன்ற காரணத்தால் இந்தச் சாதனத்தின் தரவு நீக்கப்படும்."</string>
+ <string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"பலமுறை தவறாக முயன்ற காரணத்தால் இந்தப் பயனர் நீக்கப்படுவார்."</string>
+ <string name="failed_attempts_now_wiping_profile" msgid="7626589520888963129">"பலமுறை தவறாக முயன்ற காரணத்தால் இந்தப் பணிக் கணக்கும் அதன் தரவும் நீக்கப்படும்."</string>
+ <string name="failed_attempts_now_wiping_dialog_dismiss" msgid="2749889771223578925">"நிராகரி"</string>
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"சாதனத்தின் இயல்புநிலை"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"முடக்கப்பட்டது"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"இயக்கப்பட்டது"</string>
@@ -659,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"திரையை ஆன் செய்தல்"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"திரையை ஆன் செய்வதை அனுமதி"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"திரையை ஆன் செய்ய ஓர் ஆப்ஸை அனுமதிக்கவும். அனுமதித்தால், உங்கள் தலையீடு இல்லாமலே ஆப்ஸ் எப்போது வேண்டுமானாலும் திரையை ஆன் செய்யக்கூடும்."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR குறியீட்டை ஸ்கேன் செய்யுங்கள்"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"ஆடியோவைக் கேட்க, கீழுள்ள QR குறியீட்டை மையப்படுத்திக் காட்டுங்கள்"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR குறியீடு சரியான வடிவமைப்பில் இல்லை"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 1d1143095484..cf237de32a98 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -287,7 +287,7 @@
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"సంపూర్ణ వాల్యూమ్‌‍ను డిజేబుల్ చేయి"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorscheను ఎనేబుల్ చేయి"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"బ్లూటూత్ AVRCP వెర్షన్"</string>
- <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"బ్లూటూత్ AVRCP సంస్కరణను ఎంచుకోండి"</string>
+ <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"బ్లూటూత్ AVRCP వెర్షన్‌ను ఎంచుకోండి"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"బ్లూటూత్ MAP వెర్షన్‌"</string>
<string name="bluetooth_select_map_version_dialog_title" msgid="7085934373987428460">"బ్లూటూత్ MAP వెర్షన్‌ను ఎంచుకోండి"</string>
<string name="bluetooth_select_a2dp_codec_type" msgid="952001408455456494">"బ్లూటూత్ ఆడియో కోడెక్"</string>
@@ -569,7 +569,7 @@
<string name="user_add_user_item_title" msgid="2394272381086965029">"యూజర్"</string>
<string name="user_add_profile_item_title" msgid="3111051717414643029">"పరిమితం చేయబడిన ప్రొఫైల్"</string>
<string name="user_add_user_title" msgid="5457079143694924885">"కొత్త వినియోగదారుని జోడించాలా?"</string>
- <string name="user_add_user_message_long" msgid="1527434966294733380">"అదనపు యూజర్‌లను క్రియేట్ చేయడం ద్వారా మీరు ఈ దేవైజ్‌ను ఇతరులతో షేర్ చేయవచ్చు. ప్రతి యూజర్‌కు‌ వారికంటూ ప్రత్యేక స్థలం ఉంటుంది, వారు ఆ స్థలాన్ని యాప్‌లు, వాల్‌పేపర్ మొదలైనవాటితో అనుకూలీకరించవచ్చు. యూజర్‌లు ప్రతి ఒక్కరిపై ప్రభావం చూపే Wi‑Fi వంటి పరికర సెట్టింగ్‌లను కూడా సర్దుబాటు చేయవచ్చు.\n\nమీరు కొత్త యూజర్ ను జోడించినప్పుడు, ఆ వ్యక్తి వారికంటూ స్వంత స్థలం సెట్ చేసుకోవాలి.\n\nఏ వినియోగదారు అయినా మిగిలిన అందరు యూజర్‌ల కోసం యాప్‌లను అప్‌డేట్ చేయవచ్చు. యాక్సెస్ సామర్ధ్యం సెట్టింగ్‌లు మరియు సేవలు కొత్త యూజర్‌కి బదిలీ కాకపోవచ్చు."</string>
+ <string name="user_add_user_message_long" msgid="1527434966294733380">"అదనపు యూజర్‌లను క్రియేట్ చేయడం ద్వారా మీరు ఈ దేవైజ్‌ను ఇతరులతో షేర్ చేయవచ్చు. ప్రతి యూజర్‌కు‌ వారికంటూ ప్రత్యేక స్థలం ఉంటుంది, వారు ఆ స్థలాన్ని యాప్‌లు, వాల్‌పేపర్ మొదలైనవాటితో అనుకూలీకరించవచ్చు. యూజర్‌లు ప్రతి ఒక్కరిపై ప్రభావం చూపే Wi‑Fi వంటి పరికర సెట్టింగ్‌లను కూడా సర్దుబాటు చేయవచ్చు.\n\nమీరు కొత్త యూజర్ ను జోడించినప్పుడు, ఆ వ్యక్తి వారికంటూ స్వంత స్థలం సెట్ చేసుకోవాలి.\n\nఏ వినియోగదారు అయినా మిగిలిన అందరు యూజర్‌ల కోసం యాప్‌లను అప్‌డేట్ చేయవచ్చు. యాక్సెసిబిలిటీ సెట్టింగ్‌లు మరియు సేవలు కొత్త యూజర్‌కి బదిలీ కాకపోవచ్చు."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"మీరు కొత్త వినియోగదారుని జోడించినప్పుడు, ఆ వ్యక్తి తన స్థలాన్ని సెటప్ చేసుకోవాలి.\n\nఏ వినియోగదారు అయినా మిగతా అందరు వినియోగదారుల కోసం యాప్‌లను అప్‌డేట్‌ చేయగలరు."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"యూజర్‌ను ఇప్పుడే సెటప్ చేయాలా?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"పరికరాన్ని తీసుకోవడానికి వ్యక్తి అందుబాటులో ఉన్నారని నిర్ధారించుకొని, ఆపై వారికి నిల్వ స్థలాన్ని సెటప్ చేయండి"</string>
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"గెస్ట్ సెషన్‌ను రీసెట్ చేయాలా?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"అతిథిని తీసివేయాలా?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"రీసెట్ చేయండి"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"తీసివేయండి"</string>
<string name="guest_resetting" msgid="7822120170191509566">"గెస్ట్ సెషన్‌ను రీసెట్ చేస్తోంది…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ఒక ఫోటో తీయండి"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ఇమేజ్‌ను ఎంచుకోండి"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"స్క్రీన్‌ను ఆన్ చేయండి"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"స్క్రీన్‌ను ఆన్ చేయడానికి అనుమతించండి"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"స్క్రీన్‌ను ఆన్ చేయడానికి యాప్‌ను అనుమతించండి. మంజూరు చేయబడితే, మీ స్పష్టమైన ఉద్దేశం లేకుండా యాప్ ఎప్పుడైనా స్క్రీన్‌ను ఆన్ చేయవచ్చు."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR కోడ్‌ను స్కాన్ చేయండి"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"వినడం ప్రారంభించడానికి, కింద ఉన్న QR కోడ్‌ను మధ్యలో ఉంచండి"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR కోడ్ చెల్లుబాటు అయ్యే ఫార్మాట్‌లో లేదు"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 84dbd698a2c8..0b548235ef02 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"รีเซ็ตผู้เข้าร่วมไหม"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"นำผู้เข้าร่วมออกไหม"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"รีเซ็ต"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"นำออก"</string>
<string name="guest_resetting" msgid="7822120170191509566">"กำลังรีเซ็ตผู้เข้าร่วม…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ถ่ายรูป"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"เลือกรูปภาพ"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 6ecad888ae3c..4cb30486da81 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"I-reset ang session ng bisita?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Alisin ang bisita?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"I-reset"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Alisin"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Nire-reset ang bisita…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Kumuha ng larawan"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Pumili ng larawan"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"I-on ang screen"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Payagan ang pag-on sa screen"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Nagpapahintulot sa app na i-on ang screen. Kung papayagan, puwedeng i-on ng app ang screen anumang oras nang wala ng iyong malinaw na intent."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"I-scan ang QR code"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Para simulang makinig, igitna ang QR code sa ibaba"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Hindi valid na format ang QR code"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index ab2a094cab5e..0a20d9f67aad 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Misafir oturumu sıfırlansın mı?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Konuk çıkarılsın mı?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Sıfırla"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Kaldır"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Misafir oturumu sıfırlanıyor…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Fotoğraf çek"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Resim seç"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ekranı aç"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Ekranı açmaya izin ver"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Bir uygulamanın ekranı açmasına izin verin. İzin verildiğinde, uygulama sizin belirgin niyetiniz olmadan istediği zaman ekranı açabilir."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR kodunu tara"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Dinlemeye başlamak için aşağıdaki QR kodunu ortalayın"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR kodu geçerli bir biçim değil"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 8897d711e2f2..a6f828eab316 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Скинути сеанс у режимі \"Гість\"?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Вилучити гостя?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Скинути"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Вилучити"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Скидання сеансу в режимі \"Гість\"…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Зробити фотографію"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Вибрати зображення"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Увімкнення екрана"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Дозволити ввімкнення екрана"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Дозвольте додатку вмикати екран. Якщо ви надасте цей дозвіл, додаток зможе будь-коли вмикати екран пристрою навіть без вашого явного наміру."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Сканування QR-коду"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Щоб почати слухати аудіо, наведіть камеру на QR-код нижче"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Недійсний формат QR-коду"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index ecddac246a56..c09202e55e88 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -589,29 +589,22 @@
<string name="add_user_failed" msgid="4809887794313944872">"نیا صارف بنانے میں ناکام"</string>
<string name="add_guest_failed" msgid="8074548434469843443">"نیا مہمان بنانے میں ناکام"</string>
<string name="user_nickname" msgid="262624187455825083">"عرفی نام"</string>
- <!-- no translation found for user_add_user (7876449291500212468) -->
- <skip />
+ <string name="user_add_user" msgid="7876449291500212468">"صارف کو شامل کریں"</string>
<string name="guest_new_guest" msgid="3482026122932643557">"مہمان کو شامل کریں"</string>
<string name="guest_exit_guest" msgid="5908239569510734136">"مہمان کو ہٹائیں"</string>
<string name="guest_reset_guest" msgid="6110013010356013758">"مہمان کو ری سیٹ کریں"</string>
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"مہمان کو ری سیٹ کریں؟"</string>
- <!-- no translation found for guest_remove_guest_dialog_title (4548511006624088072) -->
- <skip />
+ <string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"مہمان کو ہٹائیں؟"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"ری سیٹ کریں"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"ہٹائیں"</string>
<string name="guest_resetting" msgid="7822120170191509566">"مہمان کو ری سیٹ کرنا…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"ایک تصویر لیں"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"ایک تصویر منتخب کریں"</string>
<string name="user_image_photo_selector" msgid="433658323306627093">"تصویر منتخب کریں"</string>
- <!-- no translation found for failed_attempts_now_wiping_device (4016329172216428897) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_user (469060411789668050) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_profile (7626589520888963129) -->
- <skip />
- <!-- no translation found for failed_attempts_now_wiping_dialog_dismiss (2749889771223578925) -->
- <skip />
+ <string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"بہت زیادہ غلط کوششیں۔ اس آلے کا ڈیٹا حذف کر دیا جائے گا۔"</string>
+ <string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"بہت زیادہ غلط کوششیں۔ اس صارف کو حذف کر دیا جائے گا۔"</string>
+ <string name="failed_attempts_now_wiping_profile" msgid="7626589520888963129">"بہت زیادہ غلط کوششیں۔ یہ دفتری پروفائل اور اس کا ڈیٹا حذف کر دیا جائے گا۔"</string>
+ <string name="failed_attempts_now_wiping_dialog_dismiss" msgid="2749889771223578925">"برخاست کریں"</string>
<string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"آلہ ڈیفالٹ"</string>
<string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"غیر فعال"</string>
<string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"فعال"</string>
@@ -659,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"اسکرین آن کریں"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"اسکرین آن کرنے کی اجازت دیں"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"ایپ کو اسکرین آن کرنے کی اجازت دیں۔ اگر اجازت دی گئی تو ایپ آپ کے واضح مقصد کے بغیر کسی بھی وقت اسکرین کو آن کر سکتی ہے۔"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"‏QR کوڈ اسکین کریں"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"‏سننا شروع کرنے کے لیے، نیچے کے QR کوڈ کو سینٹر میں رکھیں"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"‏QR کوڈ درست فارمیٹ نہیں ہے"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index ca23c6ef8603..c26b9ce30ab3 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Mehmon seansi tiklansinmi?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Mehmon olib tashlansinmi?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Tiklash"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Olib tashlash"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Mehmon seansi tiklanmoqda…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Suratga olish"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Rasm tanlash"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Ekranni yoqish"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Ekranni yoqishga ruxsat"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Ilovaga ekranni yoqishga ruxsat berish. Ruxsat berilsa, ilova istalgan vaqt ruxsatingizsiz ekranni yoqishi mumkin."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"QR kodni skanerlash"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Tinglashni boshlash uchun quyidagi QR kodni markazga joylang"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR xato formatda"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index c8a1f1de940e..a9e99b23a94a 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Đặt lại phiên khách?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Loại bỏ khách?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Đặt lại"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Xoá"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Đang đặt lại phiên khách…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Chụp ảnh"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Chọn một hình ảnh"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Bật màn hình"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Cho phép bật màn hình"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Cho phép ứng dụng bật màn hình. Nếu được phép, ứng dụng có thể bật màn hình bất kỳ lúc nào kể cả khi bạn không có ý định như vậy."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Quét mã QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Để bắt đầu nghe, hãy hướng máy ảnh vào mã QR bên dưới và căn sao cho mã nằm chính giữa"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Định dạng của mã QR là không hợp lệ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 3f45ec7de8dd..dcc3a200f27c 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"要重置访客会话吗?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"要移除访客吗?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"重置"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"移除"</string>
<string name="guest_resetting" msgid="7822120170191509566">"正在重置访客会话…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"拍摄照片"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"选择图片"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"开启屏幕"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"允许开启屏幕"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"允许应用开启屏幕。如获授权,该应用便可在您未明确表达意愿的情况下随时开启屏幕。"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"扫描二维码"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"将扫描器对准下方二维码,即可开始收听"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"二维码的格式无效"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index d5ba27fc2a05..a36e4e3987df 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"要重設訪客嗎?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"要移除訪客嗎?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"重設"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"移除"</string>
<string name="guest_resetting" msgid="7822120170191509566">"正在重設訪客…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"拍照"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"選擇圖片"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"開啟螢幕"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"允許開啟螢幕"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"允許應用程式開啟螢幕。應用程式獲授權後,可在您未有明確表明意圖的情況下隨時開啟螢幕。"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"掃瞄 QR 碼"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"如要開始收聽,請將掃瞄器對準下方的 QR 碼"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR 碼格式無效"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index b51b113b40b4..78ac9d9938c7 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"要重設訪客嗎?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"要移除訪客嗎?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"重設"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"移除"</string>
<string name="guest_resetting" msgid="7822120170191509566">"正在重設訪客…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"拍照"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"選擇圖片"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"開啟螢幕"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"允許開啟螢幕"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"允許應用程式開啟螢幕。如果授予這項權限,即使你未明確指示,應用程式也隨時可能會開啟螢幕。"</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"掃描 QR 圖碼"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"如要開始收聽,請將掃描器對準下方的 QR 圖碼"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"QR 圖碼格式無效"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index ee6851d92de8..2e0665c354bc 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -596,8 +596,7 @@
<string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Setha kabusha isimenywa?"</string>
<string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Susa isihambeli?"</string>
<string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Setha kabusha"</string>
- <!-- no translation found for guest_remove_guest_confirm_button (7858123434954143879) -->
- <skip />
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Susa"</string>
<string name="guest_resetting" msgid="7822120170191509566">"Ukusetha kabusha isimenywa…"</string>
<string name="user_image_take_photo" msgid="467512954561638530">"Thatha isithombe"</string>
<string name="user_image_choose_photo" msgid="1363820919146782908">"Khetha isithombe"</string>
@@ -653,10 +652,7 @@
<string name="turn_screen_on_title" msgid="3266937298097573424">"Vula isikrini"</string>
<string name="allow_turn_screen_on" msgid="6194845766392742639">"Vumela ukuvula isikrini"</string>
<string name="allow_turn_screen_on_description" msgid="43834403291575164">"Vumela i-app ivule isikrini. Uma kuvunyiwe, i-app ingavula isikrini noma nini ngaphandle kwenhloso yakho esobala."</string>
- <!-- no translation found for bt_le_audio_scan_qr_code (3521809854780392679) -->
- <skip />
- <!-- no translation found for bt_le_audio_scan_qr_code_scanner (4679500020630341107) -->
- <skip />
- <!-- no translation found for bt_le_audio_qr_code_is_not_valid_format (6092191081849434734) -->
- <skip />
+ <string name="bt_le_audio_scan_qr_code" msgid="3521809854780392679">"Skena ikhodi ye-QR"</string>
+ <string name="bt_le_audio_scan_qr_code_scanner" msgid="4679500020630341107">"Ukuze uqale ukulalela, beka ikhodi ye-QR ngezansi"</string>
+ <string name="bt_le_audio_qr_code_is_not_valid_format" msgid="6092191081849434734">"Ikhodi ye-QR ayiyona ifomethi evumelekile"</string>
</resources>
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtils.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtils.java
index fa4ae6712aaa..6535665b7653 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtils.java
@@ -24,6 +24,8 @@ import android.util.Log;
import androidx.annotation.ChecksSdkIntAtLeast;
+import com.android.internal.annotations.VisibleForTesting;
+
/* Utility class is to confirm the Wi-Fi function is available by enterprise restriction */
public class WifiEnterpriseRestrictionUtils {
private static final String TAG = "WifiEntResUtils";
@@ -76,6 +78,26 @@ public class WifiEnterpriseRestrictionUtils {
return true;
}
+ /**
+ * Confirm Wi-Fi state is allowed to change to whether user restriction is set
+ *
+ * @param context A context
+ * @return whether the device is permitted to change Wi-Fi state
+ */
+ public static boolean isChangeWifiStateAllowed(Context context) {
+ if (!hasUserRestrictionFromT(context, UserManager.DISALLOW_CHANGE_WIFI_STATE)) return true;
+ Log.w(TAG, "WI-FI state isn't allowed to change due to user restriction.");
+ return false;
+ }
+
+ @VisibleForTesting
+ static boolean hasUserRestrictionFromT(Context context, String restrictionKey) {
+ if (!isAtLeastT()) return false;
+ final UserManager userManager = context.getSystemService(UserManager.class);
+ if (userManager == null) return false;
+ return userManager.hasUserRestriction(restrictionKey);
+ }
+
@ChecksSdkIntAtLeast(api=Build.VERSION_CODES.TIRAMISU)
private static boolean isAtLeastT() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU;
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtilsTest.java
index f6af09a34388..e9326dd39faa 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiEnterpriseRestrictionUtilsTest.java
@@ -15,8 +15,11 @@
*/
package com.android.settingslib.wifi;
+import static android.os.UserManager.DISALLOW_CHANGE_WIFI_STATE;
+
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -50,6 +53,8 @@ public class WifiEnterpriseRestrictionUtilsTest {
mContext = spy(ApplicationProvider.getApplicationContext());
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mUserManager.getUserRestrictions()).thenReturn(mBundle);
+ ReflectionHelpers.setStaticField(
+ Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.TIRAMISU);
}
@Test
@@ -129,4 +134,41 @@ public class WifiEnterpriseRestrictionUtilsTest {
assertThat(WifiEnterpriseRestrictionUtils.isAddWifiConfigAllowed(mContext)).isTrue();
}
+
+ @Test
+ public void isChangeWifiStateAllowed_hasDisallowRestriction_shouldReturnFalse() {
+ when(mUserManager.hasUserRestriction(DISALLOW_CHANGE_WIFI_STATE)).thenReturn(true);
+
+ assertThat(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).isFalse();
+ }
+
+ @Test
+ public void isChangeWifiStateAllowed_hasNoDisallowRestriction_shouldReturnTrue() {
+ when(mUserManager.hasUserRestriction(DISALLOW_CHANGE_WIFI_STATE)).thenReturn(false);
+
+ assertThat(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).isTrue();
+ }
+
+ @Test
+ public void hasUserRestrictionFromT_setSDKForS_shouldReturnTrue() {
+ ReflectionHelpers.setStaticField(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.S);
+
+ assertThat(WifiEnterpriseRestrictionUtils.hasUserRestrictionFromT(mContext, "key"))
+ .isFalse();
+ }
+
+ @Test
+ public void hasUserRestrictionFromT_setSDKForT_shouldReturnHasUserRestriction() {
+ ReflectionHelpers.setStaticField(
+ Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.TIRAMISU);
+ when(mUserManager.hasUserRestriction(anyString())).thenReturn(false);
+
+ assertThat(WifiEnterpriseRestrictionUtils.hasUserRestrictionFromT(mContext, "key"))
+ .isFalse();
+
+ when(mUserManager.hasUserRestriction(anyString())).thenReturn(true);
+
+ assertThat(WifiEnterpriseRestrictionUtils.hasUserRestrictionFromT(mContext, "key"))
+ .isTrue();
+ }
}
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
index 74b759fcdcf9..f934b1f3ab99 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt
@@ -432,7 +432,8 @@ class ActivityLaunchAnimator(
right = windowBounds.right
)
val callback = this@ActivityLaunchAnimator.callback!!
- val windowBackgroundColor = callback.getBackgroundColor(window.taskInfo)
+ val windowBackgroundColor = window.taskInfo?.let { callback.getBackgroundColor(it) }
+ ?: window.backgroundColor
// Make sure we use the modified timings when animating a dialog into an app.
val launchAnimator = if (controller.isDialogLaunch) {
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteTransitionAdapter.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteTransitionAdapter.kt
index 2e9a16fffe9a..47c11010c072 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteTransitionAdapter.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/RemoteTransitionAdapter.kt
@@ -138,7 +138,7 @@ class RemoteTransitionAdapter {
info: TransitionInfo,
t: SurfaceControl.Transaction
): RemoteAnimationTarget {
- return RemoteAnimationTarget(
+ val target = RemoteAnimationTarget(
/* taskId */ if (change.taskInfo != null) change.taskInfo!!.taskId else -1,
/* mode */ newModeToLegacyMode(change.mode),
/* leash */ createLeash(info, change, order, t),
@@ -160,6 +160,8 @@ class RemoteTransitionAdapter {
/* taskInfo */ change.taskInfo,
/* allowEnterPip */ change.allowEnterPip,
/* windowType */ WindowManager.LayoutParams.INVALID_WINDOW_TYPE)
+ target.backgroundColor = change.backgroundColor
+ return target
}
/**
diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt
index d15b8c169535..ca557796462f 100644
--- a/packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt
+++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ViewHierarchyAnimator.kt
@@ -37,7 +37,6 @@ class ViewHierarchyAnimator {
private const val DEFAULT_DURATION = 500L
private val DEFAULT_INTERPOLATOR = Interpolators.STANDARD
private val DEFAULT_ADDITION_INTERPOLATOR = Interpolators.STANDARD_DECELERATE
- private val DEFAULT_BOUNDS = setOf(Bound.LEFT, Bound.TOP, Bound.RIGHT, Bound.BOTTOM)
/** The properties used to animate the view bounds. */
private val PROPERTIES = mapOf(
@@ -61,8 +60,7 @@ class ViewHierarchyAnimator {
/**
* Instruct the animator to watch for changes to the layout of [rootView] and its children
- * and animate them. The animation can be limited to a subset of [bounds]. It uses the
- * given [interpolator] and [duration].
+ * and animate them. It uses the given [interpolator] and [duration].
*
* If a new layout change happens while an animation is already in progress, the animation
* is updated to continue from the current values to the new end state.
@@ -74,40 +72,31 @@ class ViewHierarchyAnimator {
*
* Returns true if the [rootView] is already visible and will be animated, false otherwise.
* To animate the addition of a view, see [animateAddition].
- *
- * TODO(b/221418522): remove the ability to select which bounds to animate and always
- * animate all of them.
*/
@JvmOverloads
fun animate(
rootView: View,
- bounds: Set<Bound> = DEFAULT_BOUNDS,
interpolator: Interpolator = DEFAULT_INTERPOLATOR,
duration: Long = DEFAULT_DURATION
): Boolean {
- return animate(rootView, bounds, interpolator, duration, ephemeral = false)
+ return animate(rootView, interpolator, duration, ephemeral = false)
}
/**
* Like [animate], but only takes effect on the next layout update, then unregisters itself
* once the first animation is complete.
- *
- * TODO(b/221418522): remove the ability to select which bounds to animate and always
- * animate all of them.
*/
@JvmOverloads
fun animateNextUpdate(
rootView: View,
- bounds: Set<Bound> = DEFAULT_BOUNDS,
interpolator: Interpolator = DEFAULT_INTERPOLATOR,
duration: Long = DEFAULT_DURATION
): Boolean {
- return animate(rootView, bounds, interpolator, duration, ephemeral = true)
+ return animate(rootView, interpolator, duration, ephemeral = true)
}
private fun animate(
rootView: View,
- bounds: Set<Bound>,
interpolator: Interpolator,
duration: Long,
ephemeral: Boolean
@@ -123,26 +112,24 @@ class ViewHierarchyAnimator {
return false
}
- val listener = createUpdateListener(bounds, interpolator, duration, ephemeral)
+ val listener = createUpdateListener(interpolator, duration, ephemeral)
recursivelyAddListener(rootView, listener)
return true
}
/**
* Returns a new [View.OnLayoutChangeListener] that when called triggers a layout animation
- * for the specified [bounds], using [interpolator] and [duration].
+ * using [interpolator] and [duration].
*
* If [ephemeral] is true, the listener is unregistered after the first animation. Otherwise
* it keeps listening for further updates.
*/
private fun createUpdateListener(
- bounds: Set<Bound>,
interpolator: Interpolator,
duration: Long,
ephemeral: Boolean
): View.OnLayoutChangeListener {
return createListener(
- bounds,
interpolator,
duration,
ephemeral
@@ -156,17 +143,7 @@ class ViewHierarchyAnimator {
* Any animations already in progress continue until their natural conclusion.
*/
fun stopAnimating(rootView: View) {
- val listener = rootView.getTag(R.id.tag_layout_listener)
- if (listener != null && listener is View.OnLayoutChangeListener) {
- rootView.setTag(R.id.tag_layout_listener, null /* tag */)
- rootView.removeOnLayoutChangeListener(listener)
- }
-
- if (rootView is ViewGroup) {
- for (i in 0 until rootView.childCount) {
- stopAnimating(rootView.getChildAt(i))
- }
- }
+ recursivelyRemoveListener(rootView)
}
/**
@@ -224,7 +201,6 @@ class ViewHierarchyAnimator {
ignorePreviousValues: Boolean
): View.OnLayoutChangeListener {
return createListener(
- DEFAULT_BOUNDS,
interpolator,
duration,
ephemeral = true,
@@ -235,7 +211,7 @@ class ViewHierarchyAnimator {
/**
* Returns a new [View.OnLayoutChangeListener] that when called triggers a layout animation
- * for the specified [bounds], using [interpolator] and [duration].
+ * using [interpolator] and [duration].
*
* If [ephemeral] is true, the listener is unregistered after the first animation. Otherwise
* it keeps listening for further updates.
@@ -244,7 +220,6 @@ class ViewHierarchyAnimator {
* [ignorePreviousValues] controls whether the previous values should be taken into account.
*/
private fun createListener(
- bounds: Set<Bound>,
interpolator: Interpolator,
duration: Long,
ephemeral: Boolean,
@@ -300,10 +275,11 @@ class ViewHierarchyAnimator {
)
val boundsToAnimate = mutableSetOf<Bound>()
- bounds.forEach { bound ->
- if (endValues.getValue(bound) != startValues.getValue(bound)) {
- boundsToAnimate.add(bound)
- }
+ if (startValues.getValue(Bound.LEFT) != left) boundsToAnimate.add(Bound.LEFT)
+ if (startValues.getValue(Bound.TOP) != top) boundsToAnimate.add(Bound.TOP)
+ if (startValues.getValue(Bound.RIGHT) != right) boundsToAnimate.add(Bound.RIGHT)
+ if (startValues.getValue(Bound.BOTTOM) != bottom) {
+ boundsToAnimate.add(Bound.BOTTOM)
}
if (boundsToAnimate.isNotEmpty()) {
@@ -462,6 +438,20 @@ class ViewHierarchyAnimator {
}
}
+ private fun recursivelyRemoveListener(view: View) {
+ val listener = view.getTag(R.id.tag_layout_listener)
+ if (listener != null && listener is View.OnLayoutChangeListener) {
+ view.setTag(R.id.tag_layout_listener, null /* tag */)
+ view.removeOnLayoutChangeListener(listener)
+ }
+
+ if (view is ViewGroup) {
+ for (i in 0 until view.childCount) {
+ recursivelyRemoveListener(view.getChildAt(i))
+ }
+ }
+ }
+
private fun getBound(view: View, bound: Bound): Int? {
return view.getTag(bound.overrideTag) as? Int
}
@@ -513,11 +503,10 @@ class ViewHierarchyAnimator {
// When an animation is cancelled, a new one might be taking over. We shouldn't
// unregister the listener yet.
if (ephemeral && !cancelled) {
- val listener = view.getTag(R.id.tag_layout_listener)
- if (listener != null && listener is View.OnLayoutChangeListener) {
- view.setTag(R.id.tag_layout_listener, null /* tag */)
- view.removeOnLayoutChangeListener(listener)
- }
+ // The duration is the same for the whole hierarchy, so it's safe to remove
+ // the listener recursively. We do this because some descendant views might
+ // not change bounds, and therefore not animate and leak the listener.
+ recursivelyRemoveListener(view)
}
}
@@ -538,8 +527,7 @@ class ViewHierarchyAnimator {
CENTER, LEFT, TOP_LEFT, TOP, TOP_RIGHT, RIGHT, BOTTOM_RIGHT, BOTTOM, BOTTOM_LEFT
}
- // TODO(b/221418522): make this private once it can't be passed as an arg anymore.
- enum class Bound(val label: String, val overrideTag: Int) {
+ private enum class Bound(val label: String, val overrideTag: Int) {
LEFT("left", R.id.tag_override_left) {
override fun setValue(view: View, value: Int) {
view.left = value
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
index b4fac5cbb6ab..0f10589dfcf9 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
@@ -22,7 +22,6 @@ import android.view.MotionEvent;
import com.android.systemui.plugins.annotations.ProvidesInterface;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -112,7 +111,7 @@ public interface FalsingManager {
boolean isReportingEnabled();
/** From com.android.systemui.Dumpable. */
- void dump(FileDescriptor fd, PrintWriter pw, String[] args);
+ void dump(PrintWriter pw, String[] args);
/**
* Don't call this. It's meant for internal use to allow switching between implementations.
diff --git a/packages/SystemUI/res-keyguard/layout/footer_actions.xml b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
index 6a1d62d5c611..7cab0c9c8d23 100644
--- a/packages/SystemUI/res-keyguard/layout/footer_actions.xml
+++ b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
@@ -23,7 +23,7 @@
android:layout_height="@dimen/footer_actions_height"
android:elevation="@dimen/qs_panel_elevation"
android:paddingTop="8dp"
- android:paddingBottom="4dp"
+ android:paddingBottom="@dimen/qs_footer_actions_bottom_padding"
android:background="@drawable/qs_footer_actions_background"
android:gravity="center_vertical"
android:layout_gravity="bottom"
diff --git a/packages/SystemUI/res/layout/media_session_view.xml b/packages/SystemUI/res/layout/media_session_view.xml
index 23d7211867ca..b67b7bc3b92e 100644
--- a/packages/SystemUI/res/layout/media_session_view.xml
+++ b/packages/SystemUI/res/layout/media_session_view.xml
@@ -157,7 +157,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:barrierDirection="start"
- app:constraint_referenced_ids="actionPrev,media_progress_bar,actionNext,action0,action1,action2,action3,action4"
+ app:constraint_referenced_ids="actionPrev,media_scrubbing_elapsed_time,media_progress_bar,actionNext,media_scrubbing_total_time,action0,action1,action2,action3,action4"
/>
<androidx.constraintlayout.widget.Barrier
android:id="@+id/media_action_barrier_end"
@@ -167,7 +167,7 @@
app:layout_constraintTop_toBottomOf="@id/media_seamless"
app:layout_constraintBottom_toBottomOf="parent"
app:barrierDirection="end"
- app:constraint_referenced_ids="actionPrev,media_progress_bar,actionNext,action0,action1,action2,action3,action4"
+ app:constraint_referenced_ids="actionPrev,media_scrubbing_elapsed_time,media_progress_bar,actionNext,media_scrubbing_total_time,action0,action1,action2,action3,action4"
app:layout_constraintStart_toStartOf="parent"
/>
@@ -177,7 +177,7 @@
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:barrierDirection="top"
- app:constraint_referenced_ids="actionPrev,media_progress_bar,actionNext,action0,action1,action2,action3,action4"
+ app:constraint_referenced_ids="actionPrev,media_scrubbing_elapsed_time,media_progress_bar,actionNext,media_scrubbing_total_time,action0,action1,action2,action3,action4"
/>
<!-- Button visibility will be controlled in code -->
@@ -192,6 +192,22 @@
android:layout_marginTop="0dp"
/>
+ <!-- Elapsed time, shown only when scrubbing -->
+ <!-- The space to the left of the progress bar will either be actionPrev or
+ media_scrubbing_elapsed_time, so they use the same layout constraints. Visibilities of
+ elements are controlled in code. -->
+ <TextView
+ android:id="@+id/media_scrubbing_elapsed_time"
+ style="@style/MediaPlayer.ScrubbingTime"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_marginStart="4dp"
+ android:layout_marginEnd="0dp"
+ android:layout_marginBottom="@dimen/qs_media_padding"
+ android:layout_marginTop="0dp"
+ android:visibility="gone"
+ />
+
<!-- Seek Bar -->
<!-- As per Material Design on Bidirectionality, this is forced to LTR in code -->
<SeekBar
@@ -218,6 +234,22 @@
android:layout_marginBottom="@dimen/qs_media_padding"
android:layout_marginTop="0dp" />
+ <!-- Total time, shown only when scrubbing -->
+ <!-- The space to the right of the progress bar will either be actionNext or
+ media_scrubbing_total_time, so they use the same layout constraints. Visibilities of
+ elements are controlled in code. -->
+ <TextView
+ android:id="@+id/media_scrubbing_total_time"
+ style="@style/MediaPlayer.ScrubbingTime"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_marginStart="0dp"
+ android:layout_marginEnd="@dimen/qs_media_action_spacing"
+ android:layout_marginBottom="@dimen/qs_media_padding"
+ android:layout_marginTop="0dp"
+ android:visibility="gone"
+ />
+
<ImageButton
android:id="@+id/action0"
style="@style/MediaPlayer.SessionAction.Secondary"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 1feeede180d3..309a95f922d4 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Gesig is gestaaf"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Bevestig"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tik op Bevestig om te voltooi"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Gestaaf"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Gebruik PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Dit deblokkeer toegang vir alle programme en dienste wat toegelaat word om jou mikrofoon te gebruik."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Dit deblokkeer toegang vir alle programme en dienste wat toegelaat word om jou kamera te gebruik."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Dit deblokkeer toegang vir alle programme en dienste wat toegelaat word om jou kamera of mikrofoon te gebruik."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofoon is geblokkeer"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera is geblokkeer"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Die mikrofoon en kamera word geblokkeer"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Om te deblokkeer, moet jy die privaatheidskakelaar op jou toestel na die Mikrofoon Aan-posisie toe beweeg om mikrofoontoegang toe te laat. Raadpleeg die toestel se handleiding om die privaatheidskakelaar op jou toestel te kry."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Om te deblokkeer, moet jy die privaatheidskakelaar op jou toestel na die Kamera Aan-posisie toe beweeg om kameratoegang toe te laat. Raadpleeg die toestel se handleiding om die privaatheidskakelaar op jou toestel te kry."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Om te deblokkeer, moet jy die privaatheidskakelaar op jou toestel na die deblokkeer-posisie toe beweeg om toegang toe te laat. Raadpleeg die toestel se handleiding om die privaatheidskakelaar op jou toestel te kry."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofoon beskikbaar"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera beskikbaar"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofoon en kamera beskikbaar"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Ander toestel"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Wissel oorsig"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Jy sal nie deur geluide en vibrasies gepla word nie, behalwe deur wekkers, herinneringe, geleenthede en bellers wat jy spesifiseer. Jy sal steeds enigiets hoor wat jy kies om te speel, insluitend musiek, video\'s en speletjies."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tik weer om oop te maak"</string>
<string name="tap_again" msgid="1315420114387908655">"Tik weer"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swiep op om oop te maak"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Druk om oop te maak"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Swiep op om weer te probeer"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ontsluit om NFC te gebruik"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Hierdie toestel behoort aan jou organisasie"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Voeg by"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Voorgestel deur <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Toestel is gesluit"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Wys en beheer toestelle van sluitskerm af?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Jy kan vir jou eksterne toestelle kontroles op die sluitskerm byvoeg.\n\nJou toestelprogram kan jou dalk toelaat om sommige toestelle te beheer sonder om jou foon of tablet te ontsluit.\n\nJy kan enige tyd in Instellings veranderings maak."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Beheer toestelle van sluitskerm af?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Jy kan sommige toestelle beheer sonder om jou foon of tablet te ontsluit.\n\nJou toestelprogram bepaal watter toestelle op dié manier beheer kan word."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nee, dankie"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN bevat letters of simbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifieer <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Verkeerde PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Maak die program oop om hierdie sessie uit te saai."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Onbekende program"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Hou op uitsaai"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Hoe uitsaai werk"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Saai uit"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Mense in jou omtrek met versoenbare Bluetooth-toestelle kan na die media luister wat jy uitsaai"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Om na jou uitsending te luister, kan mense in die omtrek met versoenbare Bluetooth-toestelle jou QR-kode skandeer of jou uitsaainaam en -wagwoord gebruik"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Uitsaainaam"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Wagwoord"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Stoor"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Bounommer"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Bounommer is na knipbord gekopieer."</string>
<string name="basic_status" msgid="2315371112182658176">"Maak gesprek oop"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktiewe programme"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stop"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Gestop"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Klaar"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Gekopieer"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Van <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Maak kopieer-UI toe"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 66bb3a3fb4b6..0cf2d1d52b20 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"መልክ ተረጋግጧል"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"ተረጋግጧል"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"ለማጠናቀቅ አረጋግጥን መታ ያድርጉ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"የተረጋገጠ"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ፒን ይጠቀሙ"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ይህ የእርስዎን ማይክሮፎን እንዲጠቀሙ የተፈቀደላቸው የሁሉም መተግበሪያዎች እና አገልግሎቶች መዳረሻ እገዳን ያነሳል።"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ይህ ካሜራዎን እንዲጠቀሙ ለተፈቀደላቸው ሁሉም መተግበሪያዎች እና አገልግሎቶች መዳረሻን እገዳ ያነሳል።"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ይህ የእርስዎን ካሜራ ወይም ማይክሮፎን እንዲጠቀሙ የተፈቀደላቸው የሁሉም መተግበሪያዎች እና አገልግሎቶች መዳረሻ እገዳን ያነሳል።"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"ማይክሮፎን ታግዷል"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ካሜራ ታግዷል"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"ማይክሮፎኑ እና ካሜራው ታግደዋል"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"እገዳውን ማንሳት እንዲችሉ የማይክሮፎን መዳረሻን ለመፍቀድ በመሣሪያዎ ላይ ያለውን የግላዊነት መቀየሪያውን ማይክሮፎን ወዳለበት ቦታ ያንቀሳቅሱት። በመሣሪያዎ ላይ የግላዊነት መቀየሪውን ለማግኘት የመሣሪያውን መመሪያ ይመልከቱ።"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"እገዳውን ማንሳት እንዲችሉ የካሜራ መዳረሻን ለመፍቀድ በመሣሪያዎ ላይ ያለውን የግላዊነት መቀየሪያውን ካሜራ ወዳለበት ቦታ ያንቀሳቅሱት። በመሣሪያዎ ላይ የግላዊነት መቀየሪውን ለማግኘት የመሣሪያውን መመሪያ ይመልከቱ።"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"እገዳቸውን ማንሳት እንዲችሉ መዳረሻን ለመፍቀድ በመሣሪያዎ ላይ ያለውን የግላዊነት መቀየሪያውን ወደ ያልታገደ ቦታ ያንቀሳቅሱት። በመሣሪያዎ ላይ የግላዊነት መቀየሪውን ለማግኘት የመሣሪያውን መመሪያ ይመልከቱ።"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"ማይክሮፎን አለ"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ካሜራ አለ"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"ማይክሮፎን እና ካሜራ አለ"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ሌላ መሣሪያ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"አጠቃላይ እይታን ቀያይር"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"እርስዎ ከወሰንዋቸው ማንቂያዎች፣ አስታዋሾች፣ ክስተቶች እና ደዋዮች በስተቀር፣ በድምጾች እና ንዝረቶች አይረበሹም። ሙዚቃ፣ ቪዲዮዎች እና ጨዋታዎች ጨምሮ ለመጫወት የሚመርጡትን ማንኛውም ነገር አሁንም ይሰማሉ።"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ለመክፈት ዳግም መታ ያድርጉ"</string>
<string name="tap_again" msgid="1315420114387908655">"እንደገና መታ ያድርጉ"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ለመክፈት በጣት ወደ ላይ ጠረግ ያድርጉ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ለመክፈት ይጫኑ"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"እንደገና ለመሞከር ወደ ላይ ይጥረጉ"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCን ለመጠቀም ይክፈቱ"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ይህ መሣሪያ የድርጅትዎ ነው"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"አክል"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"በ<xliff:g id="APP">%s</xliff:g> የተጠቆመ"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"መሣሪያ ተቆልፏል"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"ከማያ ገጽ ቆልፍ ላይ መሳሪያዎች ይታዩ እና ይቆጣጠሩ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ለውጫዊ መሳሪያዎችዎ መቆጣጠሪያዎችን ወደ ማያ ገጽ ቆልፍ ማከል ይችላሉ።\n\nየእርስዎ መሣሪያ መተግበሪያ የእርስዎን ስልክ ወይም ጡባዊ ሳይከፍቱ አንዳንድ መሣሪያዎችን እንዲቆጣጠሩ ሊፈቅድልዎ ይችላል።\n\nበቅንብሮች ውስጥ በማንኛውም ጊዜ ለውጦችን ማድረግ ይችላሉ።"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"መሳሪያዎች ከማያ ገጽ ቆልፍ ይቆጣጠሩ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"የእርስዎን ስልክ ወይም ጡባዊ ሳይከፍቱ አንዳንድ መሳሪያዎችን መቆጣጠር ይችላሉ።\n\nየእርስዎ መሣሪያ መተግበሪያ የትኞቹ መሣሪያዎች በዚህ መንገድ ሊቆጣጠሩ እንደሚችሉ ይወስናል።"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"አይ፣ አመሰግናለሁ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"አዎ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"ፒን ፊደሎችን ወይም ምልክቶችን ይይዛል"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> አረጋግጥ"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"የተሳሳተ ፒን"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ይህን ክፍለ ጊዜ cast ለማድረግ፣ እባክዎ መተግበሪያውን ይክፈቱ።"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"የማይታወቅ መተግበሪያ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Cast ማድረግ አቁም"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ማሰራጨት እንዴት እንደሚሠራ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ስርጭት"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ተኳሃኝ የብሉቱዝ መሣሪያዎች ያላቸው በአቅራቢያዎ ያሉ ሰዎች እርስዎ እያሰራጩት ያሉትን ሚዲያ ማዳመጥ ይችላሉ"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"የእርስዎን ስርጭት ለማዳመጥ ተኳሃኝ የብሉቱዝ መሣሪያዎች ያላቸው በአቅራቢያ ያሉ ሰዎች የQR ኮድዎን መቃኘት ወይም የእርስዎን ስርጭት ስም እና የይለፍ ቃል መጠቀም ይችላሉ"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"የስርጭት ስም"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"የይለፍ ቃል"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"አስቀምጥ"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"የግንብ ቁጥር"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"የገንባ ቁጥር ወደ ቅንጥብ ሰሌዳ ተቀድቷል።"</string>
<string name="basic_status" msgid="2315371112182658176">"ውይይት ይክፈቱ"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ገቢር መተግበሪያዎች"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"መቆሚያ"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ቆሟል"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ተከናውኗል"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"ተቀድቷል"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"ከ<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"ዩአይ ቅዳን አሰናብት"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 63195118cdfb..cd1f6352cad6 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -34,19 +34,19 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"التدوير التلقائي للشاشة"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"هل تريد السماح لتطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> بالدخول إلى <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"‏هل تريد السماح لتطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> بالدخول إلى <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟\nلم يتم منح هذا التطبيق إذن تسجيل، ولكن يمكنه تسجيل الصوت من خلال جهاز USB هذا."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"هل تريد السماح لتطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> بالوصول إلى <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"هل تريد فتح تطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> لإدارة <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"هل تريد السماح لتطبيق \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" بالوصول إلى <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"هل تريد فتح تطبيق \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" لإدارة <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"‏لم يتم منح هذا التطبيق إذن تسجيل، ولكن يمكنه تسجيل الصوت من خلال جهاز USB هذا. قد يحول استخدام التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> على هذا الجهاز دون سماع المكالمات والإشعارات والمنبّهات."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"قد يحول استخدام التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> على هذا الجهاز دون سماع المكالمات والإشعارات والمنبّهات."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"هل تريد السماح لتطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> بالدخول إلى <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>؟"</string>
<string name="usb_device_confirm_prompt" msgid="4091711472439910809">"هل تريد فتح <xliff:g id="APPLICATION">%1$s</xliff:g> للتعامل مع <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"‏هل تريد فتح تطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> للتعامل مع <xliff:g id="USB_DEVICE">%2$s</xliff:g>؟\nلم يتم منح هذا التطبيق إذن تسجيل، ولكن يمكنه تسجيل الصوت من خلال جهاز USB هذا."</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"هل تريد فتح تطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> للتعامل مع <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>؟"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"هل تريد فتح تطبيق \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" لإدارة <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>؟"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"‏لا يعمل أي تطبيق مثبت مع ملحق UEB هذا. مزيد من المعلومات عن هذا الملحق على <xliff:g id="URL">%1$s</xliff:g>."</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"‏ملحق USB"</string>
<string name="label_view" msgid="6815442985276363364">"عرض"</string>
- <string name="always_use_device" msgid="210535878779644679">"فتح تطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> دائمًا عند توصيل <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
- <string name="always_use_accessory" msgid="1977225429341838444">"فتح تطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> دائمًا عند توصيل <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
+ <string name="always_use_device" msgid="210535878779644679">"فتح تطبيق \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" دائمًا عند توصيل <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
+ <string name="always_use_accessory" msgid="1977225429341838444">"فتح تطبيق \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" دائمًا عند توصيل <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"‏هل تريد السماح بتصحيح أخطاء USB؟"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"‏الملف المرجعي الرئيسي لـ RSA في هذا الكمبيوتر هو:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="4003121804294739548">"السماح دائمًا من هذا الكمبيوتر"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"تمّت مصادقة الوجه."</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"تمّ التأكيد."</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"يمكنك النقر على \"تأكيد\" لإكمال المهمة."</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"مصادقة"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"استخدام رقم تعريف شخصي"</string>
@@ -300,24 +300,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"يؤدي هذا الخيار إلى إزالة حظر الوصول بالنسبة إلى كل التطبيقات والخدمات المسموح لها باستخدام الميكروفون."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"يؤدي هذا الخيار إلى إزالة حظر الوصول بالنسبة إلى كل التطبيقات والخدمات المسموح لها باستخدام الكاميرا."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"يؤدي هذا الخيار إلى إزالة حظر الوصول بالنسبة إلى كل التطبيقات والخدمات المسموح لها باستخدام الكاميرا أو الميكروفون."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"تم حظر الميكروفون"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"تم حظر الكاميرا"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"تم حظر الميكروفون والكاميرا"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"لإزالة الحظر، حرّك مفتاح الخصوصية بجهازك إلى وضع تفعيل الميكروفون للسماح بالوصول إلى الميكروفون. يُرجى الاطّلاع على دليل الجهاز لتحديد مكان مفتاح الخصوصية على جهازك."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"لإزالة الحظر، حرّك مفتاح الخصوصية بجهازك إلى وضع تفعيل الكاميرا للسماح بالوصول إلى الكاميرا. يُرجى الاطّلاع على دليل الجهاز لتحديد مكان مفتاح الخصوصية على جهازك."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"لإزالة حظر الكاميرا والميكروفون، حرّك مفتاح الخصوصية بجهازك إلى وضع إزالة الحظر للسماح بالوصول إلى الكاميرا. يُرجى الاطّلاع على دليل الجهاز لتحديد مكان مفتاح الخصوصية على جهازك."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"يمكنك الوصول إلى الميكروفون الآن."</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"يمكنك الوصول إلى الكاميرا الآن."</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"يمكنك الوصول إلى الميكروفون والكاميرا الآن."</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"جهاز آخر"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"تبديل \"النظرة العامة\""</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"لن يتم إزعاجك بالأصوات والاهتزاز، باستثناء المُنبِّهات والتذكيرات والأحداث والمتصلين الذين تحددهم. وسيظل بإمكانك سماع أي عناصر أخرى تختار تشغيلها، بما في ذلك الموسيقى والفيديوهات والألعاب."</string>
@@ -328,7 +319,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"انقر مرة أخرى للفتح"</string>
<string name="tap_again" msgid="1315420114387908655">"انقر مرة أخرى"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"يمكنك الفتح بالتمرير سريعًا لأعلى."</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"اضغط لفتح الجهاز."</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"مرِّر سريعًا للأعلى لإعادة المحاولة."</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"‏افتح قفل الشاشة لاستخدام تقنية NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"هذا الجهاز يخص مؤسستك."</string>
@@ -724,7 +718,7 @@
<string name="mobile_data" msgid="4564407557775397216">"بيانات الجوّال"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<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="8912204177152950766">"<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="5389597396308001471">"‏تم إيقاف شبكة Wi-Fi"</string>
+ <string name="wifi_is_off" msgid="5389597396308001471">"‏شبكة Wi-Fi متوقفة."</string>
<string name="bt_is_off" msgid="7436344904889461591">"تم إيقاف البلوتوث."</string>
<string name="dnd_is_off" msgid="3185706903793094463">"تم إيقاف وضع \"عدم الإزعاج\""</string>
<string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية (<xliff:g id="ID_1">%s</xliff:g>)."</string>
@@ -812,18 +806,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"إضافة"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"اقتراح من <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"الجهاز مُقفل."</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"هل تريد عرض أجهزتك والتحكم فيها من شاشة القفل؟"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"يمكنك إضافة عناصر تحكم لشاشة القفل الخاصة بأجهزتك الخارجية.\n\nقد يسمح لك تطبيق الجهاز بالتحكم في بعض الأجهزة بدون فتح قفل هاتفك أو جهازك اللوحي.\n\nيمكنك إجراء التغييرات في أي وقت من الإعدادات."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"هل تريد التحكم في الأجهزة من شاشة القفل؟"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"يمكنك التحكم في بعض الأجهزة بدون فتح قفل هاتفك أو جهازك اللوحي.\n\nيحدِّد تطبيق الجهاز أيًا من الأجهزة يمكن التحكم فيه على هذا النحو."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"لا، شكرًا"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"نعم"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"يشتمل رقم التعريف الشخصي على أحرف أو رموز."</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"إثبات ملكية <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"رقم تعريف شخصي خاطئ"</string>
@@ -873,20 +861,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"لبث هذه الجلسة، يُرجى فتح التطبيق"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"تطبيق غير معروف"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"إيقاف البث"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"كيفية عمل البث"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"البث"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"يمكن للأشخاص القريبين منك الذين لديهم أجهزة متوافقة تتضمّن بلوتوث الاستماع إلى الوسائط التي تبثها."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"لكي يتمكّنوا من الاستماع إلى البث الخاص بك، يمكن للمستخدمين القريبين منك الذين لديهم أجهزة تتضمَّن بلوتوث إجراء مسح ضوئي لرمز الاستجابة السريعة أو استخدام اسم البث وكلمة المرور الخاصين بك."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"اسم البث"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"كلمة المرور"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"حفظ"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"رقم الإصدار"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"تم نسخ رقم الإصدار إلى الحافظة."</string>
<string name="basic_status" msgid="2315371112182658176">"محادثة مفتوحة"</string>
@@ -942,7 +923,7 @@
<string name="non_carrier_network_unavailable" msgid="770049357024492372">"لا تتوفّر شبكات أخرى."</string>
<string name="all_network_unavailable" msgid="4112774339909373349">"لا تتوفّر أي شبكات."</string>
<string name="turn_on_wifi" msgid="1308379840799281023">"Wi-Fi"</string>
- <string name="tap_a_network_to_connect" msgid="1565073330852369558">"انقر على إحدى الشبكات للاتصال بالإنترنت"</string>
+ <string name="tap_a_network_to_connect" msgid="1565073330852369558">"انقر على إحدى الشبكات للاتصال بالإنترنت."</string>
<string name="unlock_to_view_networks" msgid="5072880496312015676">"فتح القفل لعرض الشبكات"</string>
<string name="wifi_empty_list_wifi_on" msgid="3864376632067585377">"جارٍ البحث عن شبكات…"</string>
<string name="wifi_failed_connect_message" msgid="4161863112079000071">"تعذّر الاتصال بالشبكة."</string>
@@ -967,8 +948,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"التطبيقات النشطة"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"إيقاف"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"متوقّف"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"تم"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"تم النسخ."</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"من <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"إغلاق واجهة مستخدم النسخ"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 0b5892e74a92..12f133c3c8d3 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"মুখমণ্ডলৰ বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰা হ’ল"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"নিশ্চিত কৰিলে"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"সম্পূৰ্ণ কৰিবলৈ নিশ্চিত কৰক-ত টিপক"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰা হ’ল"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"পিন ব্যৱহাৰ কৰক"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"এইটোৱে আপোনাৰ মাইক্ৰ\'ফ\'ন ব্যৱহাৰ কৰিবলৈ অনুমতি দিয়া আটাইবোৰ এপ্ আৰু সেৱাৰ বাবে এক্সেছ অৱৰোধৰ পৰা আঁতৰায়।"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"এইটোৱে আপোনাৰ কেমেৰা ব্যৱহাৰ কৰিবলৈ অনুমতি দিয়া আটাইবোৰ এপ্ আৰু সেৱাৰ বাবে এক্সেছ অৱৰোধৰ পৰা আঁতৰায়।"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"এইটোৱে আপোনাৰ কেমেৰা অথবা মাইক্ৰ\'ফ\'ন ব্যৱহাৰ কৰিবলৈ অনুমতি দিয়া আটাইবোৰ এপ্ আৰু সেৱাৰ বাবে এক্সেছ অৱৰোধৰ পৰা আঁতৰায়।"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"মাইক্ৰ’ফ’ন অৱৰোধ কৰি থোৱা আছে"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"কেমেৰা অৱৰোধ কৰি থোৱা আছে"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"মাইক আৰু কেমেৰা অৱৰোধ কৰা আছে"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"অৱৰোধৰ পৰা আঁতৰাবলৈ, মাইক্ৰ’ফ’নৰ এক্সেছ দিবলৈ আপোনাৰ ডিভাইচত গোপনীয়তাৰ ছুইচটো মাইক্ৰ’ফ’ন অন স্থিতিলৈ নিয়ক। আপোনাৰ ডিভাইচত গোপনীয়তাৰ ছুইচটোৰ স্থান জানিবলৈ ডিভাইচৰ মেনুৱেলখন চাওক।"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"অৱৰোধৰ পৰা আঁতৰাবলৈ, কেমেৰাৰ এক্সেছ দিবলৈ আপোনাৰ ডিভাইচত গোপনীয়তাৰ ছুইচটো কেমেৰা অন স্থিতিলৈ নিয়ক। আপোনাৰ ডিভাইচত গোপনীয়তাৰ ছুইচটোৰ স্থান জানিবলৈ ডিভাইচৰ মেনুৱেলখন চাওক।"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"সেইবোৰক অৱৰোধৰ পৰা আঁতৰাবলৈ, এক্সেছ অনুমতি দিবলৈ আপোনাৰ ডিভাইচত গোপনীয়তাৰ ছুইচটো অৱৰোধৰ পৰা আঁতৰাবলৈ স্থিতিলৈ নিয়ক। আপোনাৰ ডিভাইচত গোপনীয়তাৰ ছুইচটোৰ স্থান জানিবলৈ ডিভাইচৰ মেনুৱেলখন চাওক।"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"মাইক্ৰ’ফ’ন উপলব্ধ"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"কেমেৰা উপলব্ধ"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"মাইক্ৰ’ফ’ন আৰু কেমেৰা উপলব্ধ"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"অন্য ডিভাইচ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"অৱলোকন ট’গল কৰক"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"আপুনি নিৰ্দিষ্ট কৰা এলাৰ্ম, ৰিমাইণ্ডাৰ, ইভেন্ট আৰু কল কৰোঁতাৰ বাহিৰে আন কোনো শব্দৰ পৰা আপুনি অসুবিধা নাপাব। কিন্তু, সংগীত, ভিডিঅ\' আৰু খেলসমূহকে ধৰি আপুনি প্লে কৰিব খোজা যিকোনো বস্তু তথাপি শুনিব পাৰিব।"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"খুলিবলৈ পুনৰাই টিপক"</string>
<string name="tap_again" msgid="1315420114387908655">"পুনৰ টিপক"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"খুলিবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"খুলিবলৈ টিপক"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"পুনৰ চেষ্টা কৰিবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ব্যৱহাৰ কৰিবলৈ আনলক কৰক"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"এই ডিভাইচটো আপোনাৰ প্ৰতিষ্ঠানৰ"</string>
@@ -843,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"এই ছেশ্বনটো কাষ্ট কৰিবলৈ, অনুগ্ৰহ কৰি এপ্‌টো খোলক"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"অজ্ঞাত এপ্"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"কাষ্ট বন্ধ কৰক"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"সম্প্ৰচাৰ কৰাটোৱে কেনেকৈ কাম কৰে"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"সম্প্ৰচাৰ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"সমিল ব্লুটুথ ডিভাইচৰ সৈতে আপোনাৰ নিকটৱৰ্তী স্থানত থকা লোকসকলে আপুনি সম্প্ৰচাৰ কৰা মিডিয়াটো শুনিব পাৰে"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"আপোনাৰ সম্প্ৰচাৰটো শুনিবলৈ, সমিল ব্লুটুথ ডিভাইচৰ সৈতে আপোনাৰ নিকটৱৰ্তী স্থানত থকা লোকসকলে আপোনাৰ কিউআৰ ক’ড স্কেন কৰিব অথবা আপোনাৰ সম্প্ৰচাৰৰ নাম আৰু পাছৱৰ্ড ব্যৱহাৰ কৰিব পাৰে"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"সম্প্ৰচাৰ নাম"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"পাছৱৰ্ড"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"ছেভ কৰক"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"বিল্ডৰ নম্বৰ"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ক্লিপব’ৰ্ডলৈ বিল্ডৰ নম্বৰ প্ৰতিলিপি কৰা হ’ল।"</string>
<string name="basic_status" msgid="2315371112182658176">"বাৰ্তালাপ খোলক"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index bd65b2140371..39524c610488 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Üz doğrulandı"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Təsdiqləndi"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tamamlamaq üçün \"Təsdiq edin\" seçiminə toxunun"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Doğrulandı"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN istifadə edin"</string>
@@ -285,31 +285,22 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekran yazması"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Başlayın"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Dayandırın"</string>
- <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Bir əlli rejim"</string>
+ <string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Birəlli rejim"</string>
<string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Cihaz mikrofonu blokdan çıxarılsın?"</string>
<string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Cihaz kamerası blokdan çıxarılsın?"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Cihaz kamerası və mikrofonu blokdan çıxarılsın?"</string>
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Kamera və mikrofon istifadə edən bütün tətbiq və xidmətlərə giriş verir."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Kamera və mikrofon istifadə edən bütün tətbiq və xidmətlərə giriş verir."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Kamera və mikrofon istifadə edən bütün tətbiq və xidmətlərə giriş verir."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon blok edilib"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera blok edilib"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon və kamera blok edilib"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Blokdan çıxarmaq üçün cihazınızda məxfilik açarını \"mikrofon aktivdir\" vəziyyətinə keçirərək mikrofona giriş icazəsi verin. Cihazınızda məxfilik açarını tapmaq üçün cihazın təlimatlarına baxın."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Blokdan çıxarmaq üçün cihazınızda məxfilik açarını \"kamera aktivdir\" vəziyyətinə keçirərək kameraya giriş icazəsi verin. Cihazınızda məxfilik açarını tapmaq üçün cihazın təlimatlarına baxın."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Blokdan çıxarmaq üçün cihazınızda məxfilik açarını \"blokdan çıxarılıb\" vəziyyətinə keçirərək giriş icazəsi verin. Cihazınızda məxfilik açarını tapmaq üçün cihazın təlimatlarına baxın."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon əlçatandır"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera əlçatandır"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon və kamera əlçatandır"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Digər cihaz"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"İcmala Keçin"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Seçdiyiniz siqnal, xatırladıcı, tədbir və zənglər istisna olmaqla səslər və vibrasiyalar Sizi narahat etməyəcək. Musiqi, video və oyunlar da daxil olmaqla oxutmaq istədiyiniz hər şeyi eşidəcəksiniz."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Açmaq üçün yenidən tıklayın"</string>
<string name="tap_again" msgid="1315420114387908655">"Yenidən toxunun"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Açmaq üçün yuxarı sürüşdürün"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Açmaq üçün basın"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Yenidən cəhd etmək üçün yuxarı sürüşdürün"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC istifadə etmək üçün kiliddən çıxarın"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Bu cihaz təşkilatınıza məxsusdur"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Əlavə edin"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> tərəfindən təklif edilib"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Cihaz kilidlənib"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Kilid ekranından cihazlar göstərilsin və idarə edilsin?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Xarici cihazlarınız üçün kilid ekranına nizamlayıcılar əlavə edə bilərsiniz.\n\nCihaz tətbiqiniz sizə telefon və ya planşetinizin kilidini açmadan bəzi cihazları idarə etməyə imkan verə bilər.\n\nİstənilən vaxt Ayarlarda dəyişiklik edə bilərsiniz."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Cihazları kilid ekranından idarə etmək istəyirsiniz?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Telefon və ya planşetinizin kilidini açmadan bəzi cihazları idarə edə bilərsiniz.\n\nCihaz tətbiqiniz hansı cihazların bu şəkildə idarə oluna biləcəyini müəyyən edir."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Xeyr, təşəkkür"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Bəli"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN hərflər və ya simvollar ehtiva edir"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> cihazını doğrulayın"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Yanlış PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Bu sessiyanı yayımlamaq üçün tətbiqi açın."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Naməlum tətbiq"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Yayımı dayandırın"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Yayım necə işləyir"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Yayım"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Uyğun Bluetooth cihazları olan yaxınlığınızdakı insanlar yayımladığınız medianı dinləyə bilər"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Yayımınızı dinləmək üçün uyğun Bluetooth cihazları olan yaxınlıqdakı insanlar QR kodunuzu skan edə və ya yayım adınızı və parolunuzu istifadə edə bilər."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Yayım Adı"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Parol"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Saxlayın"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Montaj nömrəsi"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Versiya nömrəsi mübadilə buferinə kopyalandı."</string>
<string name="basic_status" msgid="2315371112182658176">"Açıq söhbət"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktiv tətbiqlər"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Dayandırın"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Dayandırılıb"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Oldu"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopyalandı"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Mənbə: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"UI kopyalanmasını qapadın"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index f65f6da5746f..e9839b980ac2 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -32,14 +32,14 @@
<string name="battery_saver_start_action" msgid="8353766979886287140">"Uključi"</string>
<string name="battery_saver_dismiss_action" msgid="7199342621040014738">"Ne, hvala"</string>
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Automatsko rotiranje ekrana"</string>
- <string name="usb_device_permission_prompt" msgid="4414719028369181772">"Želite li da dozvolite da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_device_permission_prompt" msgid="4414719028369181772">"Dozvoljavate da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Želite li da dozvolite da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nOva aplikacija nema dozvolu za snimanje, ali bi mogla da snima zvuk pomoću ovog USB uređaja."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Želite li da dozvolite da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Dozvoljavate da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Želite li da otvorite aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> da biste koristili uređaj <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ova aplikacija nema dozvolu za snimanje, ali bi mogla da snima zvuk pomoću ovog USB uređaja. Ako koristite aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> sa ovim uređajem, možda nećete čuti pozive, obaveštenja i alarme."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Ako koristite aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> sa ovim uređajem, možda nećete čuti pozive, obaveštenja i alarme."</string>
- <string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Želite li da dozvolite da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
- <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Želite li da otvorite aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> da biste koristili uređaj <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Dozvoljavate da <xliff:g id="APPLICATION">%1$s</xliff:g> pristupa uređaju <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
+ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Želite da otvorite <xliff:g id="APPLICATION">%1$s</xliff:g> da biste koristili <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Želite li da otvorite aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> radi rukovanja uređajem <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nOva aplikacija nema dozvolu za snimanje, ali bi mogla da snima zvuk pomoću ovog USB uređaja."</string>
<string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Želite li da otvorite aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> da biste koristili uređaj <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Instalirane aplikacije ne funkcionišu sa ovim USB pomoćnim uređajem. Saznajte više o njemu na adresi <xliff:g id="URL">%1$s</xliff:g>"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Lice je potvrđeno"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potvrđeno"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Dodirnite Potvrdi da biste završili"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Identitet je potvrđen"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Koristite PIN"</string>
@@ -294,24 +294,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ovim će se odblokirati pristup za sve aplikacije i usluge koje imaju dozvolu za korišćenje mikrofona."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ovim će se odblokirati pristup za sve aplikacije i usluge koje imaju dozvolu za korišćenje kamere."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Ovim će se odblokirati pristup za sve aplikacije i usluge koje imaju dozvolu za korišćenje kamere ili mikrofona."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon je blokiran"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera je blokirana"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon i kamera su blokirani"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Da biste odblokirali, pomerite prekidač za privatnost na uređaju na poziciju uključeno za mikrofon kako biste omogućili pristup mikrofonu. Pogledajte priručnik za uređaj da biste pronašli prekidač za privatnost na uređaju."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Da biste odblokirali, pomerite prekidač za privatnost na uređaju na poziciju uključeno za kameru kako biste omogućili pristup kameri. Pogledajte priručnik za uređaj da biste pronašli prekidač za privatnost na uređaju."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Da biste ih odblokirali, pomerite prekidač za privatnost na uređaju na poziciju odblokirano kako biste omogućili pristup. Pogledajte priručnik za uređaj da biste pronašli prekidač za privatnost na uređaju."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon je dostupan"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera je dostupna"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon i kamera su dostupni"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Drugi uređaj"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Uključi/isključi pregled"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Neće vas uznemiravati zvukovi i vibracije osim za alarme, podsetnike, događaje i pozivaoce koje navedete. I dalje ćete čuti sve što odaberete da pustite, uključujući muziku, video snimke i igre."</string>
@@ -322,7 +313,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Dodirnite ponovo da biste otvorili"</string>
<string name="tap_again" msgid="1315420114387908655">"Dodirnite ponovo"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Prevucite nagore da biste otvorili"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pritisnite da biste otvorili"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Prevucite nagore da biste probali ponovo"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Otključajte da biste koristili NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Ovaj uređaj pripada organizaciji"</string>
@@ -794,18 +788,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Dodaj"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Predlaže <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Uređaj je zaključan"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Želite li da prikazujete i kontrolišete uređaje sa zaključanog ekrana?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Možete da dodate kontrole za spoljne uređaje na zaključani ekran.\n\nAplikacija na uređaju može da vam omogući da kontrolišete neke uređaje bez otključavanja telefona ili tableta.\n\nTo možete da promenite kad god želite u Podešavanjima."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Želite li da kontrolišete uređaje sa zaključanog ekrana?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Neke uređaje možete da kontrolišete bez otključavanja telefona ili tableta.\n\nAplikacija na uređaju određuje koji uređaji mogu da se kontrolišu na ovaj način."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ne, hvala"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Da"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN sadrži slova ili simbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifikujte: <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Pogrešan PIN"</string>
@@ -855,20 +843,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Da biste prebacivali ovu sesiju, otvorite aplikaciju."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nepoznata aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zaustavi prebacivanje"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kako funkcioniše emitovanje"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Emitovanje"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Ljudi u blizini sa kompatibilnim Bluetooth uređajima mogu da slušaju medijski sadržaj koji emitujete"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Da bi slušali emitovanje, ljudi u blizini sa kompatibilnim Bluetooth uređajima mogu da skeniraju QR kôd ili da koriste naziv i lozinku emitovanja"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Naziv emitovanja"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Lozinka"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Sačuvaj"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Broj verzije"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Broj verzije je kopiran u privremenu memoriju."</string>
<string name="basic_status" msgid="2315371112182658176">"Otvorite konverzaciju"</string>
@@ -946,8 +927,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktivne aplikacije"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Zaustavi"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Zaustavljeno"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gotovo"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopirano je"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Iz: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Odbaci kopiranje korisničkog interfejsa"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index f7c2580d80d3..2c8ab6f90506 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"Засталося <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Не ўдалося выканаць зарадку праз USB"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Выкарыстоўвайце зараднае прыстасаванне з камплекта прылады"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Уключыць рэжым эканоміі зараду?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Уключыць рэжым энергазберажэння?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Інфармацыя пра рэжым эканоміі зараду"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Уключыць"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Уключыць"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Твар распазнаны"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Пацверджана"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Націсніце \"Пацвердзіць\", каб завяршыць"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Распазнана"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Увесці PIN-код"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Доступ адкрыецца для ўсіх праграм і сэрвісаў, якім дазволена выкарыстоўваць мікрафон."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Доступ адкрыецца для ўсіх праграм і сэрвісаў, якім дазволена выкарыстоўваць камеру."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Доступ адкрыецца для ўсіх праграм і сэрвісаў, якім дазволена выкарыстоўваць камеру ці мікрафон."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Мікрафон заблакіраваны"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камера заблакіравана"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Мікрафон і камера заблакіраваны"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Каб атрымаць доступ да мікрафона, перавядзіце на прыладзе пераключальнік прыватнасці ў становішча \"мікрафон уключаны\". Інфармацыю пра размяшчэнне пераключальніка прыватнасці вы знойдзеце ў дапаможніку па выкарыстанні прылады."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Каб атрымаць доступ да камеры, перавядзіце на прыладзе пераключальнік прыватнасці ў становішча \"камера ўключана\". Інфармацыю пра размяшчэнне пераключальніка прыватнасці вы знойдзеце ў дапаможніку па выкарыстанні прылады."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Каб атрымаць доступ, перавядзіце на прыладзе пераключальнік прыватнасці ў становішча \"разблакіравана\". Інфармацыю пра размяшчэнне пераключальніка прыватнасці вы знойдзеце ў дапаможніку па выкарыстанні прылады."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Мікрафон можна выкарыстоўваць"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камеру можна выкарыстоўваць"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Мікрафон і камеру можна выкарыстоўваць"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Іншая прылада"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Уключыць/выключыць агляд"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Вас не будуць турбаваць гукі і вібрацыя, за выключэннем будзільнікаў, напамінаў, падзей і выбраных вамі абанентаў. Вы будзеце чуць усё, што ўключыце, у тым ліку музыку, відэа і гульні."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Дакраніцеся яшчэ раз, каб адкрыць"</string>
<string name="tap_again" msgid="1315420114387908655">"Націсніце яшчэ раз"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Каб адкрыць, прагарніце ўверх"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Націсніце, каб адкрыць"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Прагартайце ўверх, каб паўтарыць спробу"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Разблакіруйце, каб выкарыстоўваць NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Гэта прылада належыць вашай арганізацыі"</string>
@@ -421,7 +415,7 @@
<string name="zen_mode_and_condition" msgid="5043165189511223718">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
<string name="accessibility_volume_settings" msgid="1458961116951564784">"Налады гуку"</string>
<string name="volume_odi_captions_tip" msgid="8825655463280990941">"Аўтаматычныя субцітры"</string>
- <string name="accessibility_volume_close_odi_captions_tip" msgid="8924753283621160480">"Падказка \"Схавайце цітры\""</string>
+ <string name="accessibility_volume_close_odi_captions_tip" msgid="8924753283621160480">"Закрыць падказку пра субцітры"</string>
<string name="volume_odi_captions_content_description" msgid="4172765742046013630">"Накладанне субцітраў"</string>
<string name="volume_odi_captions_hint_enable" msgid="2073091194012843195">"уключыць"</string>
<string name="volume_odi_captions_hint_disable" msgid="2518846326748183407">"адключыць"</string>
@@ -800,18 +794,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Дадаць"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Прапанавана праграмай \"<xliff:g id="APP">%s</xliff:g>\""</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Прылада блакіравана"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Паказваць прылады і кіраваць імі з экрана блакіроўкі?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Вы можаце дадаць на экран блакіроўкі элементы кіравання знешнімі прыладамі.\n\nДзякуючы праграме на вашай прыладзе вы можаце кіраваць некаторымі прыладамі без разблакіроўкі тэлефона ці планшэта.\n\nУнесці змяненні можна ў любы час у Наладах."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Кіраваць прыладамі з экрана блакіроўкі?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Вы можаце кіраваць некаторымі прыладамі без разблакіроўкі тэлефона ці планшэта.\n\nПраграма на вашай прыладзе вызначае, якімі прыладамі можна кіраваць такім спосабам."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Не, дзякуй"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Так"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-код складаецца з літар або знакаў"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Спраўдзіце прыладу \"<xliff:g id="DEVICE">%s</xliff:g>\""</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Няправільны PIN-код"</string>
@@ -861,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Для трансляцыі гэтага сеанса адкрыйце праграму."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Невядомая праграма"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Спыніць трансляцыю"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Як адбываецца трансляцыя"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Трансляцыя"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Людзі паблізу, у якіх ёсць прылады з Bluetooth, змогуць праслухваць мультымедыйнае змесціва, якое вы трансліруеце"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Каб слухаць трансляцыю, людзі паблізу, у якіх ёсць сумяшчальныя прылады з Bluetooth, могуць адсканіраваць ваш QR-код або скарыстаць назву і пароль трансляцыі"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Назва трансляцыі"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Пароль"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Захаваць"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Нумар зборкі"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Нумар зборкі скапіраваны ў буфер абмену."</string>
<string name="basic_status" msgid="2315371112182658176">"Адкрытая размова"</string>
@@ -953,8 +934,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Актыўныя праграмы"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Спыніць"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Спынена"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Гатова"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Скапіравана"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"З праграмы \"<xliff:g id="APPNAME">%1$s</xliff:g>\""</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Закрыць інтэрфейс капіравання"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 9e9350d4f3e3..376ed069b99b 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -35,7 +35,7 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Да се разреши ли на <xliff:g id="APPLICATION">%1$s</xliff:g> достъп до <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Наистина ли искате да разрешите на <xliff:g id="APPLICATION">%1$s</xliff:g> достъп до <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nНа приложението не е предоставено разрешение за записване, но е възможно да запише звук чрез това USB устройство."</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Да се разреши ли на <xliff:g id="APPLICATION">%1$s</xliff:g> достъп до <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Да се използва ли <xliff:g id="APPLICATION">%1$s</xliff:g> за работата с(ъс) <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Да се използва ли <xliff:g id="APPLICATION">%1$s</xliff:g> за <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Приложението няма разрешение за записване, но може да записва звук чрез това USB устройство. Ако използвате <xliff:g id="APPLICATION">%1$s</xliff:g> с това устройство, е възможно да не чувате обажданията, известията и будилниците."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Ако използвате <xliff:g id="APPLICATION">%1$s</xliff:g> с това устройство, е възможно да не чувате обажданията, известията и будилниците."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Да се разреши ли на <xliff:g id="APPLICATION">%1$s</xliff:g> достъп до <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
@@ -45,8 +45,8 @@
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Инстал. приложения не работят с този аксесоар за USB. Научете повече на адрес <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"Аксесоар за USB"</string>
<string name="label_view" msgid="6815442985276363364">"Преглед"</string>
- <string name="always_use_device" msgid="210535878779644679">"<xliff:g id="APPLICATION">%1$s</xliff:g> да се отваря винаги при връзка с/ъс <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
- <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="APPLICATION">%1$s</xliff:g> да се отваря винаги при връзка с/ъс <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
+ <string name="always_use_device" msgid="210535878779644679">"<xliff:g id="APPLICATION">%1$s</xliff:g> да се отваря винаги при връзка с(ъс) <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
+ <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="APPLICATION">%1$s</xliff:g> да се отваря винаги при връзка с(ъс) <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"Да се разреши ли отстраняването на грешки през USB?"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"Отпечатъкът на RSA ключа на компютъра е:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="4003121804294739548">"Винаги да се разрешава от този компютър"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Лицето е удостоверено"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Потвърдено"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Докоснете „Потвърждаване“ за завършване"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Удостоверено"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Използване на ПИН"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Това действие отблокира достъпа за всички приложения и услуги, които имат разрешение да използват микрофона ви."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Това действие отблокира достъпа за всички приложения и услуги, които имат разрешение да използват камерата ви."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Това действие отблокира достъпа за всички приложения и услуги, които имат разрешение да използват камерата или микрофона ви."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофонът е блокиран"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камерата е блокирана"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофонът и камерата са блокирани"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"За да го отблокирате, преместете превключвателя за поверителността на устройството си във включено положение за микрофона, за да разрешите достъпа до него. Вижте ръководството за устройството, за да разберете къде се намира превключвателят."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"За да я отблокирате, преместете превключвателя за поверителността на устройството си във включено положение за камерата, за да разрешите достъпа до нея. Вижте ръководството за устройството, за да разберете къде се намира превключвателят."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"За да ги отблокирате, преместете превключвателя за поверителността на устройството си в отблокирано положение, за да разрешите достъп. Вижте ръководството за устройството, за да разберете къде се намира превключвателят."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофонът е налице"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камерата е налице"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофонът и камерата са налице"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Друго устройство"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Превключване на общия преглед"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Няма да бъдете обезпокоявани от звуци и вибрирания освен от будилници, напомняния, събития и обаждания от посочени от вас контакти. Пак ще чувате всичко, което изберете да се пусне, включително музика, видеоклипове и игри."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Докоснете отново, за да отворите"</string>
<string name="tap_again" msgid="1315420114387908655">"Докоснете отново"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Прекарайте пръст нагоре, за да отключите"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Натиснете за отваряне"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Плъзнете бързо нагоре, за да опитате отново"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Отключете, за да използвате NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Това устройство принадлежи на организацията ви"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Добавяне"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Предложено от <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"У-вото е заключено"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Да се показват ли устройствата на заключения екран и да се контролират ли оттам?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Можете да добавите към заключения екран контроли за външните си устройства.\n\nПриложението на устройството ви може да ви дава възможност да управлявате някои устройства, без да отключвате телефона или таблета си.\n\nПо всяко време можете да правите промени в „Настройки“."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Да се контролират ли устройствата от заключения екран?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Имате възможност да контролирате някои устройства, без да отключвате телефона или таблета си.\n\nПриложението на устройството ви определя кои устройства могат да бъдат контролирани по този начин."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Не, благодаря"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Да"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"ПИН кодът съдържа букви или символи"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Потвърждаване на <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Грешен ПИН код"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"За да предавате тази сесия, моля, отворете приложението."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Неизвестно приложение"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Спиране на предаването"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Как работи предаването"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Предаване"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Хората в близост със съвместими устройства с Bluetooth могат да слушат мултимедията, която предавате"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"За да слушат предаваното от вас, хората в близост със съвместими устройства с Bluetooth могат да сканират QR кода ви или да използват името и паролата на предаването ви"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Име на предаването"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Парола"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Запазване"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Номер на компилацията"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Номерът на компилацията е копиран в буферната памет."</string>
<string name="basic_status" msgid="2315371112182658176">"Отворен разговор"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Активни приложения"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Спиране"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Спряно"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Готово"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Копирано"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"От <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Отхвърляне на ПИ за копиране"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 7b8a75e678fa..4fc09a2065c2 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ফেস যাচাই করা হয়েছে"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"কনফার্ম করা হয়েছে"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"সম্পূর্ণ করতে \'কনফার্ম করুন\' বোতামে ট্যাপ করুন"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"প্রমাণীকৃত"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"পিন ব্যবহার করুন"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"এটার জন্য মাইক্রোফোনের অ্যাক্সেস সেই সব অ্যাপ এবং পরিষেবার জন্য আনব্লক হয়ে যাবে, যাতে আপনার মাইক্রোফোন ব্যবহার করার অনুমতি দেওয়া হয়েছে।"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"এটার জন্য ক্যামেরার অ্যাক্সেস সেই সব অ্যাপ এবং পরিষেবার জন্য আনব্লক হয়ে যাবে, যাতে আপনার ক্যামেরা ব্যবহারের অনুমতি দেওয়া হয়েছে।"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"এটার জন্য ক্যামেরা অথবা মাইক্রোফোনের অ্যাক্সেস সেই সব অ্যাপ এবং পরিষেবার জন্য আনব্লক হয়ে যাবে, যাতে আপনার ক্যামেরা অথবা মাইক্রোফোন ব্যবহারের অনুমতি দেওয়া হয়েছে।"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"মাইক্রোফোন ব্লক করা আছে"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ক্যামেরা ব্লক করা আছে"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"মাইক্রোফোন ও ক্যামেরা ব্লক করা আছে"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"আনব্লক করতে, আপনাকে মাইক্রোফোনের অ্যাক্সেস দিতে হবে। এর জন্য ডিভাইসের প্রাইভেসি সুইচ \'ক্যামেরা চালু আছে\' পজিশনে নিয়ে যান। আপনার ডিভাইসে প্রাইভেসি সুইচ খুঁজে পেতে ডিভাইসের ম্যানুয়ালে রেফার করুন।"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"আনব্লক করতে, আপনাকে ক্যামেরার অ্যাক্সেস দিতে হবে। এর জন্য ডিভাইসের প্রাইভেসি সুইচ \'ক্যামরো চালু আছে\' পজিশনে নিয়ে যান। আপনার ডিভাইসে প্রাইভেসি সুইচ খুঁজে পেতে ডিভাইসের ম্যানুয়ালে রেফার করুন।"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"এগুলি আনব্লক করতে, আপনাকে অ্যাক্সেসের অনুমতি দিতে হবে। এর জন্য ডিভাইসের প্রাইভেসি সুইচ \'আনব্লক করুন\' পজিশনে নিয়ে যান। আপনার ডিভাইসে প্রাইভেসি সুইচ খুঁজে পেতে ডিভাইসের ম্যানুয়ালে রেফার করুন।"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"মাইক্রোফোন উপলভ্য"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ক্যামেরা উপলভ্য"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"মাইক্রোফোন ও ক্যামেরা উপলভ্য"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"অন্য ডিভাইস"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"\'এক নজরে\' বৈশিষ্ট্যটি চালু বা বন্ধ করুন"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"অ্যালার্ম, রিমাইন্ডার, ইভেন্ট, এবং আপনার নির্দিষ্ট করে দেওয়া ব্যক্তিদের কল ছাড়া অন্য কোনও আওয়াজ বা ভাইব্রেশন হবে না। তবে সঙ্গীত, ভিডিও, এবং গেম সহ আপনি যা কিছু চালাবেন তার আওয়াজ শুনতে পাবেন।"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"খোলার জন্য আবার আলতো চাপুন"</string>
<string name="tap_again" msgid="1315420114387908655">"আবার ট্যাপ করুন"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"খোলার জন্য উপরে সোয়াইপ করুন"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"আনলক করার জন্য প্রেস করুন"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"আবার চেষ্টা করতে উপরের দিকে সোয়াইপ করুন"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ব্যবহার করতে আনলক করুন"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"এই ডিভাইসটি আপনার প্রতিষ্ঠানের"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"যোগ করুন"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> সাজেস্ট করেছে"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"ডিভাইস লক করা আছে"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"লক স্ক্রিন থেকে ডিভাইস দেখতে এবং নিয়ন্ত্রণ করতে চান?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"লক স্ক্রিনে আপনার বাইরের ডিভাইসের জন্য কন্ট্রোল যোগ করা যাবে।\n\nআপনার ফোন বা ট্যাবলেট আনলক না করেই আপনার ডিভাইস অ্যাপ হয়ত কিছু ডিভাইস নিয়ন্ত্রণ করার সুবিধা দেবে\n\nসেটিংস থেকে যেকোনও সময়ে আপনি পরিবর্তন করতে পারবেন।"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"লক স্ক্রিন থেকে ডিভাইস নিয়ন্ত্রণ করতে চান?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"আপনি ফোন বা ট্যাবলেট আনলক না করেই কিছু ডিভাইস নিয়ন্ত্রণ করতে পারবেন।\n\nএইভাবে কোন ডিভাইস নিয়ন্ত্রণ করা হবে সেটি আপনার ডিভাইস অ্যাপ ঠিক করে।"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"না থাক"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"হ্যাঁ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"পিন-এ অক্ষর বা চিহ্ন রয়েছে"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> যাচাই করুন"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"ভুল পিন"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"এই সেশন কাস্ট করার জন্য, অ্যাপ খুলুন।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"অজানা অ্যাপ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"কাস্ট করা বন্ধ করুন"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ব্রডকাস্ট কীভাবে কাজ করে"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"সম্প্রচার করুন"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"আশপাশে লোকজন যাদের মানানসই ব্লুটুথ ডিভাইস আছে, তারা আপনার ব্রডকাস্ট করা মিডিয়া শুনতে পারবেন"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"আপনার ব্রডকাস্ট শুনতে, আশপাশে লোকজন যাদের মানানসই ব্লুটুথ ডিভাইস আছে, তারা আপনার QR কোড স্ক্যান করতে অথবা আপনার ব্রডকাস্ট নাম এবং পাসওয়ার্ড ব্যবহার করতে পারবেন"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ব্রডকাস্টের নাম"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"পাসওয়ার্ড"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"সেভ করুন"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"বিল্ড নম্বর"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"বিল্ড নম্বর ক্লিপবোর্ডে কপি করা হয়েছে।"</string>
<string name="basic_status" msgid="2315371112182658176">"খোলা কথোপকথন"</string>
@@ -926,7 +907,7 @@
<string name="see_all_networks" msgid="3773666844913168122">"সবকটি দেখুন"</string>
<string name="to_switch_networks_disconnect_ethernet" msgid="6698111101156951955">"নেটওয়ার্ক বদলাতে ইথারনেট ডিসকানেক্ট করুন"</string>
<string name="wifi_scan_notify_message" msgid="3753839537448621794">"ডিভাইস সংক্রান্ত অভিজ্ঞতা আরও ভাল করতে, অ্যাপ ও পরিষেবা যেকোনও সময় আপনার ওয়াই-ফাই নেটওয়ার্ক স্ক্যান করতে পারবে, এমনকি ডিভাইসের ওয়াই-ফাই বন্ধ করা থাকলেও। ওয়াই-ফাই স্ক্যানিং সেটিংস থেকে আপনি এটি পরিবর্তন করতে পারবেন। "<annotation id="link">"পরিবর্তন করুন"</annotation></string>
- <string name="turn_off_airplane_mode" msgid="8425587763226548579">"\'বিমান\' মোড বন্ধ করুন"</string>
+ <string name="turn_off_airplane_mode" msgid="8425587763226548579">"\'বিমান মোড\' বন্ধ করুন"</string>
<string name="qs_tile_request_dialog_text" msgid="3501359944139877694">"<xliff:g id="APPNAME">%1$s</xliff:g> নিম্নলিখিত টাইল দ্রুত সেটিংস মেনুতে যোগ করতে চায়"</string>
<string name="qs_tile_request_dialog_add" msgid="4888460910694986304">"টাইল যোগ করুন"</string>
<string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"টাইল যোগ করবেন না"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"অ্যাক্টিভ অ্যাপ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"বন্ধ করুন"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"থামানো হয়েছে"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"হয়ে গেছে"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"কপি করা হয়েছে"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> থেকে"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"কপি করা UI বাতিল করুন"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index bc9a97de4e5a..e692d3ca7777 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -35,13 +35,13 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Dozvoliti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup uređaju: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Dozvoliti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nOvoj aplikaciji nije dato odobrenje za snimanje, ali može snimati zvuk putem ovog USB uređaja."</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Dozvoliti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup dodatku: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje dodatkom: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje uređajem: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ovoj aplikaciji nije dato odobrenje za snimanje, ali može snimati zvuk putem ovog USB uređaja. Korištenje aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g> s ovim uređajem može vas spriječiti da čujete pozive, obavještenja i alarme."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Korištenje aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g> s ovim uređajem može vas spriječiti da čujete pozive, obavještenja i alarme."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Dozvoliti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup dodatku: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje uređajem: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Želite li upravljati uređajem <xliff:g id="USB_DEVICE">%2$s</xliff:g> putem aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>?\nOvoj aplikaciji nije dato odobrenje za snimanje, ali može snimati zvuk putem ovog USB uređaja."</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje dodatkom: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje uređajem: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Nema instaliranih aplikacija za ovaj USB uređaj. Saznajte više o uređaju na <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"USB periferni uređaj"</string>
<string name="label_view" msgid="6815442985276363364">"Prikaži"</string>
@@ -94,10 +94,10 @@
<string name="screenrecord_start_label" msgid="1750350278888217473">"Započeti snimanje?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"Prilikom snimanja, Android sistem može snimiti sve osjetljive informacije koje su vidljive na vašem ekranu ili koje reproducirate na uređaju. To uključuje lozinke, informacije za plaćanje, fotografije, poruke i zvuk."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Snimi zvučni zapis"</string>
- <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Zvuk uređaja"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Zvuk na uređaju"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvuk s vašeg uređaja, naprimjer muzika, pozivi i melodije zvona"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Mikrofon"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvuk i mikrofon uređaja"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvuk na uređaju i mikrofon"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Započni"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Snimanje ekrana"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Snimanje ekrana i zvuka"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Lice je provjereno"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potvrđeno"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Dodirnite Potvrdi da završite"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Otključano pomoću lica. Pritisnite ikonu otključavanja da biste nastavili."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentificirano"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Koristi PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Koristi uzorak"</string>
@@ -243,7 +242,7 @@
<string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"WiFi mreža nije povezana"</string>
<string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Osvjetljenje"</string>
<string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzija boja"</string>
- <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ispravka boje"</string>
+ <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ispravka boja"</string>
<string name="quick_settings_more_user_settings" msgid="1064187451100861954">"Korisničke postavke"</string>
<string name="quick_settings_done" msgid="2163641301648855793">"Gotovo"</string>
<string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zatvori"</string>
@@ -294,24 +293,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ovim se deblokira pristup za sve aplikacije i usluge kojima je dozvoljeno da koriste vaš mikrofon."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ovim se deblokira pristup za sve aplikacije i usluge kojima je dozvoljeno da koriste vašu kameru."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Ovim se deblokira pristup za sve aplikacije i usluge kojima je dozvoljeno da koriste vašu kameru ili mikrofon."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon je blokiran"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera je blokirana"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon i kamera su blokirani"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Da ga deblokirate, pomjerite prekidač za privatnost na uređaju u položaj za uključen mikrofon da dozvolite pristup mikrofonu. Pogledajte priručnik uređaja da locirate prekidač za privatnost na uređaju."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Da ga deblokirate, pomjerite prekidač za privatnost na uređaju u položaj za uključenu kameru da dozvolite pristup kameri. Pogledajte priručnik uređaja da locirate prekidač za privatnost na uređaju."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Da ga deblokirate, pomjerite prekidač za privatnost na uređaju u otključan položaj da dozvolite pristup. Pogledajte priručnik uređaja da locirate prekidač za privatnost na uređaju."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon je dostupan"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera je dostupna"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon i kamera su dostuni"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Drugi uređaj"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Pregled uključivanja/isključivanja"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Neće vas ometati zvukovi i vibracije, osim alarma, podsjetnika, događaja i pozivalaca koje odredite. I dalje ćete čuti sve što ste odabrali za reprodukciju, uključujući muziku, videozapise i igre."</string>
@@ -322,7 +312,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Dodirnite ponovo da otvorite"</string>
<string name="tap_again" msgid="1315420114387908655">"Ponovo dodirnite"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Prevucite da otvorite"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pritisnite da otvorite"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Pritisnite ikonu otključavanja da biste otvorili"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Otključano pomoću lica. Pritisnite ikonu otključavanja da biste otvorili."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Prevucite prema gore da pokušate ponovo"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Otključajte da koristite NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Ovaj uređaj pripada vašoj organizaciji"</string>
@@ -709,7 +700,7 @@
<string name="mobile_data" msgid="4564407557775397216">"Prijenos podataka"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<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="8912204177152950766">"<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="5389597396308001471">"WiFi veza je isključena"</string>
+ <string name="wifi_is_off" msgid="5389597396308001471">"WiFi je isključen"</string>
<string name="bt_is_off" msgid="7436344904889461591">"Bluetooth je isključen"</string>
<string name="dnd_is_off" msgid="3185706903793094463">"Način rada Ne ometaj je isključen"</string>
<string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Opciju Ne ometaju uključilo je automatsko pravilo (<xliff:g id="ID_1">%s</xliff:g>)."</string>
@@ -782,7 +773,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"uklonite iz omiljenog"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Premjesti na poziciju <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
- <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Odaberite kontrole kojim želite pristupati pomoću Brzih postavki"</string>
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Odaberite kontrole kojim želite pristupati iz Brzih postavki"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"Držite i prevucite da preuredite kontrole"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"Sve kontrole su uklonjene"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Promjene nisu sačuvane"</string>
@@ -794,18 +785,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Dodaj"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Predlaže <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Uređaj je zaključan"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Prikazati uređaje i kontrolirati njima sa zaključanog ekrana?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Na zaključani ekran možete dodati kontrole za eksterne uređaje.\n\nAplikacija vašeg uređaja vam može omogućiti da kontrolirate određene uređaje bez otključavanja telefona ili tableta.\n\nPromjene možete izvršiti bilo kada u Postavkama."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Kontrolirati uređaje sa zaključanog ekrana?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Neke uređaje možete kontrolirati bez otključavanja telefona ili tableta.\n\nAplikacija vašeg uređaja određuje koji uređaji se mogu kontrolirati na ovaj način."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ne, hvala"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Da"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN sadrži slova ili simbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Potvrdite uređaj <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Pogrešan PIN"</string>
@@ -855,20 +840,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Da emitirate ovu sesiju, otvorite aplikaciju."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nepoznata aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zaustavi emitiranje"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kako funkcionira emitiranje"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Emitirajte"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Osobe u vašoj blizini s kompatibilnim Bluetooth uređajima mogu slušati medijske sadržaje koje emitirate"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Da slušate omiljeno emitiranje, osobe u blizini s kompatibilnim Bluetooth uređajima mogu skenirati vaš QR kôd ili koristiti vaše ime i lozinku za emitiranje"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Naziv emitiranja"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Lozinka"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Sačuvaj"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Broj verzije"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Broj verzije je kopiran u međumemoriju."</string>
<string name="basic_status" msgid="2315371112182658176">"Otvoreni razgovor"</string>
@@ -909,7 +887,7 @@
<string name="person_available" msgid="2318599327472755472">"Dostupan/na je"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Došlo je do problema prilikom očitavanja mjerača stanja baterije"</string>
<string name="battery_state_unknown_notification_text" msgid="13720937839460899">"Dodirnite za više informacija"</string>
- <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Nije postavljen alarm"</string>
+ <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Nema nijednog alarma"</string>
<string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Senzor za otisak prsta"</string>
<string name="accessibility_authenticate_hint" msgid="798914151813205721">"autentificiranje"</string>
<string name="accessibility_enter_hint" msgid="2617864063504824834">"pristup uređaju"</string>
@@ -946,8 +924,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktivne aplikacije"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Zaustavi"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Zaustavljeno"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gotovo"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopirano"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Iz aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Odbaci kopirani korisnički interfejs"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 6efb930bdd34..f8eb7b271ec1 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Cara autenticada"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmat"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Toca Confirma per completar"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticat"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Utilitza el PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Aquesta opció desbloqueja l\'accés de tots els serveis i aplicacions que tenen permís per utilitzar el micròfon."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Aquesta opció desbloqueja l\'accés de tots els serveis i aplicacions que tenen permís per utilitzar la càmera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Aquesta opció desbloqueja l\'accés de tots els serveis i aplicacions que tenen permís per utilitzar la càmera o el micròfon."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"El micròfon està bloquejat"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"La càmera està bloquejada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"El micròfon i la càmera estan bloquejats"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Per desbloquejar-lo, mou l\'interruptor de privadesa del dispositiu a la posició Micròfon activat per permetre l\'accés al micròfon. Consulta el manual del dispositiu per localitzar l\'interruptor de privadesa al teu dispositiu."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Per desbloquejar-la, mou l\'interruptor de privadesa del dispositiu a la posició Càmera activada per permetre l\'accés a la càmera. Consulta el manual del dispositiu per localitzar l\'interruptor de privadesa al teu dispositiu."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Per desbloquejar-los, mou l\'interruptor de privadesa del dispositiu a la posició de desbloqueig per permetre l\'accés. Consulta el manual del dispositiu per localitzar l\'interruptor de privadesa al teu dispositiu."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Micròfon disponible"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Càmera disponible"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Càmera i micròfon disponibles"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Un altre dispositiu"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activa o desactiva Aplicacions recents"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"No t\'interromprà cap so ni cap vibració, tret dels de les alarmes, recordatoris, esdeveniments i trucades de les persones que especifiquis. Continuaràs sentint tot allò que decideixis reproduir, com ara música, vídeos i jocs."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Torna a tocar per obrir-la."</string>
<string name="tap_again" msgid="1315420114387908655">"Torna a tocar"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Llisca cap amunt per obrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Prem per obrir"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Llisca cap a dalt per tornar-ho a provar"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloqueja per utilitzar l\'NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Aquest dispositiu pertany a la teva organització"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Afegeix"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Suggerit per <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Dispositiu bloquejat"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vols mostrar i controlar dispositius a la pantalla de bloqueig?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Pots afegir controls dels teus dispositius externs a la pantalla de bloqueig.\n\nL\'aplicació del dispositiu et pot permetre controlar alguns dispositius sense desbloquejar el telèfon o la tauleta.\n\nPots fer canvis en qualsevol moment a Configuració."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Vols controlar dispositius des de la pantalla de bloqueig?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Pots controlar alguns dispositius sense desbloquejar el telèfon o la tauleta.\n\nL\'aplicació del dispositiu determina quins dispositius es poden controlar d\'aquesta manera."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"No, gràcies"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Sí"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"El PIN conté lletres o símbols"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifica <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN incorrecte"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Per emetre aquesta sessió, obre l\'aplicació."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicació desconeguda"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Atura l\'emissió"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Com funciona l\'emissió"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Emet"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Les persones properes amb dispositius Bluetooth compatibles poden escoltar el contingut multimèdia que emets"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Per escoltar la teva emissió, les persones properes amb dispositius Bluetooth compatibles poden escanejar el teu codi QR o utilitzar el nom i la contrasenya de l\'emissió"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nom de l\'emissió"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Contrasenya"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Desa"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilació"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"El número de compilació s\'ha copiat al porta-retalls."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversa oberta"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aplicacions actives"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Atura"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Aturada"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Fet"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"S\'ha copiat"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"De: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ignora la IU de còpia"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 35be86a2b64e..eec539fc7592 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -97,7 +97,7 @@
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Zvuk zařízení"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvuk ze zařízení, například hudba, hovory a vyzvánění"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Mikrofon"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvuk a mikrofon zařízení"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvuk zařízení a mikrofon"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Spustit"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Nahrávání obrazovky"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Nahrávání obrazovky a zvuku"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Obličej byl ověřen"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potvrzeno"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Ověření dokončíte klepnutím na Potvrdit"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Ověřeno"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Použít kód PIN"</string>
@@ -233,8 +233,8 @@
<string name="quick_settings_user_title" msgid="8673045967216204537">"Uživatel"</string>
<string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string>
<string name="quick_settings_internet_label" msgid="6603068555872455463">"Internet"</string>
- <string name="quick_settings_networks_available" msgid="1875138606855420438">"Dostupné sítě"</string>
- <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"Nedostupné sítě"</string>
+ <string name="quick_settings_networks_available" msgid="1875138606855420438">"Sítě jsou k dispozici"</string>
+ <string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"Sítě nejsou k dispozici"</string>
<string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Žádné sítě Wi-Fi nejsou k dispozici"</string>
<string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"Zapínání…"</string>
<string name="quick_settings_cast_title" msgid="2279220930629235211">"Vzdálená obrazovka"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Tímto odblokujete přístup všem aplikacím a službám, které mají povoleno používat váš mikrofon."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Tímto odblokujete přístup všem aplikacím a službám, které mají povoleno používat váš fotoaparát."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Tímto odblokujete přístup všem aplikacím a službám, které mají povoleno používat váš fotoaparát či mikrofon."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon je blokován"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Fotoaparát je blokován"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon a fotoaparát jsou blokovány"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Pokud blokování chcete zrušit, posunutím přepínače ochrany soukromí do zapnuté pozice pro mikrofon povolte přístup k mikrofonu. Umístění přepínače ochrany soukromí na zařízení najdete v příručce k zařízení."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Pokud blokování chcete zrušit, posunutím přepínače ochrany soukromí do zapnuté pozice pro fotoaparát povolte přístup k fotoaparátu. Umístění přepínače ochrany soukromí na zařízení najdete v příručce k zařízení."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Pokud je chcete odblokovat, posunutím přepínače ochrany soukromí do neblokované pozice povolte přístup. Umístění přepínače ochrany soukromí na zařízení najdete v příručce k zařízení."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon je k dispozici"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Fotoaparát je k dispozici"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon a fotoaparát jsou k dispozici"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Další zařízení"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Přepnout přehled"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Nebudou vás rušit zvuky ani vibrace s výjimkou budíků, upozornění, událostí a volajících, které zadáte. Nadále uslyšíte veškerý obsah, který si sami pustíte (např. hudba, videa nebo hry)."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Oznámení otevřete opětovným klepnutím"</string>
<string name="tap_again" msgid="1315420114387908655">"Znovu klepněte"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Otevřete přejetím prstem nahoru"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Stisknutím otevřete"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Přejetím nahoru to zkusíte znovu"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC vyžaduje odemknutou obrazovku"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Toto zařízení patří vaší organizaci"</string>
@@ -855,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pokud chcete odesílat relaci, otevřete aplikaci."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Neznámá aplikace"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zastavit odesílání"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Jak vysílání funguje"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Vysílání"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Lidé ve vašem okolí s kompatibilními zařízeními Bluetooth mohou poslouchat média, která vysíláte"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"K poslechu vašeho vysílání mohou lidé poblíž s kompatibilními zařízeními Bluetooth naskenovat váš QR kód nebo použít název vysílání a heslo"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Název vysílání"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Heslo"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Uložit"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Číslo sestavení"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Číslo sestavení bylo zkopírováno do schránky."</string>
<string name="basic_status" msgid="2315371112182658176">"Otevřít konverzaci"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index cd3998d1d23a..a1eb92a6a1ab 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Ansigtet er godkendt"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Bekræftet"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tryk på Bekræft for at udføre"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Godkendt"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Brug pinkode"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Dette fjerner adgangsblokeringen for alle apps og tjenester, der har tilladelse til at bruge din mikrofon."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Dette fjerner adgangsblokeringen for alle apps og tjenester, der har tilladelse til at bruge dit kamera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Dette fjerner adgangsblokeringen for alle apps og tjenester, der har tilladelse til at bruge dit kamera eller din mikrofon."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofonen er blokeret"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kameraet er blokeret"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofonen og kameraet er blokeret"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Du kan fjerne blokeringen ved at slå kontakten for privatliv til på din enhed, så mikrofonen får adgang. Gå til enhedens manual for at finde kontakten for privatliv på din enhed."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Du kan fjerne blokeringen ved at slå kontakten for privatliv til på din enhed, så kameraet får adgang. Gå til enhedens manual for at finde kontakten for privatliv på din enhed."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Du kan fjerne blokeringen af dem ved at slå kontakten for privatliv til på din enhed, så de får adgang. Gå til enhedens manual for at finde kontakten for privatliv på din enhed."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon kan benyttes"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera kan benyttes"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon og kamera kan benyttes"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Anden enhed"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Slå Oversigt til/fra"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Du bliver ikke forstyrret af lyde eller vibrationer, undtagen fra alarmer, påmindelser, begivenheder og opkald fra udvalgte personer, du selv angiver. Du kan stadig høre alt, du vælger at afspille, f.eks. musik, videoer og spil."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tryk igen for at åbne"</string>
<string name="tap_again" msgid="1315420114387908655">"Tryk igen"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Stryg opad for at åbne"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Tryk for at åbne"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Stryg opad for at prøve igen"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Lås op for at bruge NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Denne enhed tilhører din organisation"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Tilføj"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Foreslået af <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Enheden er låst"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vil du se og styre enheder via låseskærmen?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Du kan tilføje styringselementer til dine eksterne enheder på låseskærmen.\n\nMed din enhedsapp kan du muligvis styre visse enheder uden at låse op for din telefon eller tablet.\n\nDu kan til enhver tid foretage ændringer i Indstillinger."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Vil du styre enheder via låseskærmen?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Du kan styre visse enheder uden at låse op for din telefon eller tablet.\n\nDin enhedsapp bestemmer, hvilke enheder der kan styres på denne måde."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nej tak"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Pinkoden indeholder bogstaver eller symboler"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Bekræft <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Forkert pinkode"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Åbn appen for at caste denne session."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ukendt app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stop med at caste"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Sådan fungerer udsendelser"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Udsendelse"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Personer i nærheden, som har kompatible Bluetooth-enheder, kan lytte til det medie, du udsender"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Personer i nærheden, som har kompatible Bluetooth-enheder, kan lytte til din udsendelse ved at scanne din QR-kode eller bruge navnet på og adgangskoden til din udsendelse"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Navn på udsendelse"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Adgangskode"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Gem"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Buildnummer"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Buildnummeret blev kopieret til udklipsholderen."</string>
<string name="basic_status" msgid="2315371112182658176">"Åben samtale"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktive apps"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stop"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Stoppet"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Udfør"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopieret"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Fra <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Luk brugerfladen for kopi"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 08262c346ed1..96d77bad9cc1 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -22,7 +22,7 @@
<string name="app_label" msgid="4811759950673118541">"System-UI"</string>
<string name="battery_low_title" msgid="5319680173344341779">"Energiesparmodus aktivieren?"</string>
<string name="battery_low_description" msgid="3282977755476423966">"Dein Akkustand beträgt <xliff:g id="PERCENTAGE">%s</xliff:g>. Im Energiesparmodus wird das dunkle Design aktiviert und es werden Hintergrundaktivitäten eingeschränkt sowie Benachrichtigungen verzögert empfangen."</string>
- <string name="battery_low_intro" msgid="5148725009653088790">"Im Energiesparmodus wird das dunkle Design aktiviert und es werden Hintergrundaktivitäten eingeschränkt sowie Benachrichtigungen verzögert empfangen."</string>
+ <string name="battery_low_intro" msgid="5148725009653088790">"Im Energiesparmodus wird das dunkle Design aktiviert. Hintergrundaktivitäten werden eingeschränkt sowie Benachrichtigungen verzögert empfangen."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> verbleibend"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Aufladen über USB nicht möglich"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Verwende das mit dem Gerät gelieferte Ladegerät"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Gesicht authentifiziert"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Bestätigt"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Zum Abschließen auf \"Bestätigen\" tippen"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authentifiziert"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN verwenden"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Dadurch wird die Blockierung des Zugriffs für alle Apps und Dienste aufgehoben, die dein Mikrofon verwenden dürfen."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Dadurch wird die Blockierung des Zugriffs für alle Apps und Dienste aufgehoben, die deine Kamera verwenden dürfen."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Dadurch wird die Blockierung des Zugriffs für alle Apps und Dienste aufgehoben, die deine Kamera oder dein Mikrofon verwenden dürfen."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon blockiert"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera blockiert"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon und Kamera blockiert"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Um die Blockierung aufzuheben und den Zugriff zu erlauben, musst du den Schalter für den Datenschutz an deinem Gerät auf die Position zum Aktivieren des Mikrofons bringen. In der Anleitung deines Geräts findest du Informationen dazu, wo der sich Schalter für den Datenschutz an deinem Gerät befindet."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Um die Blockierung aufzuheben und den Zugriff zu erlauben, musst du den Schalter für den Datenschutz an deinem Gerät auf die Position zum Aktivieren der Kamera bringen. In der Anleitung deines Geräts findest du Informationen dazu, wo der sich Schalter für den Datenschutz an deinem Gerät befindet."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Um den Zugriff zu erlauben, musst du den Schalter für den Datenschutz an deinem Gerät auf die Position zum Aufheben der Blockierung bringen. In der Anleitung deines Geräts findest du Informationen dazu, wo der sich Schalter für den Datenschutz an deinem Gerät befindet."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon verfügbar"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera verfügbar"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon und Kamera verfügbar"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Sonstiges Gerät"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Übersicht ein-/ausblenden"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe, Erinnerungen, Termine sowie Anrufe von zuvor von dir festgelegten Personen. Du hörst jedoch weiterhin Sound, wenn du dir Musik anhörst, Videos ansiehst oder Spiele spielst."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Erneut tippen, um Benachrichtigung zu öffnen"</string>
<string name="tap_again" msgid="1315420114387908655">"Noch einmal tippen"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Zum Öffnen nach oben wischen"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Zum Öffnen klicken"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Zum Wiederholen nach oben wischen"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Zur Verwendung von NFC entsperren"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Dieses Gerät gehört deiner Organisation"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Hinzufügen"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Vorgeschlagen von <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Gerät gesperrt"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Geräte auf Sperrbildschirm anzeigen und steuern?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Du kannst dem Sperrbildschirm Steuerelemente für deine externen Geräte hinzufügen.\n\nDie App deines Geräts ermöglicht dir eventuell, einige Geräte zu steuern, ohne dein Smartphone oder Tablet zu entsperren.\n\nDu kannst jederzeit Änderungen in den Einstellungen vornehmen."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Geräte über den Sperrbildschirm steuern?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Du kannst einige Geräte steuern, ohne das Smartphone oder Tablet zu entsperren.\n\nDie App deines Geräts bestimmt, welche Geräte auf diese Weise gesteuert werden können."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nein danke"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Die PIN enthält Buchstaben oder Symbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> bestätigen"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Falsche PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Öffne zum Streamen dieser Sitzung die App."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Unbekannte App"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Streaming beenden"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Funktionsweise von Nachrichten an alle"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Nachricht an alle"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Personen, die in der Nähe sind und kompatible Bluetooth-Geräten haben, können sich die Medien anhören, die du per Nachricht an alle sendest"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Personen, die in der Nähe sind und kompatible Bluetooth-Geräte haben, können zum Anhören deiner Nachricht an alle deinen QR-Code scannen oder den Namen und das Passwort verwenden, die du festgelegt hast"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Name für Nachricht an alle"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Passwort"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Speichern"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Build-Nummer"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Build-Nummer in Zwischenablage kopiert."</string>
<string name="basic_status" msgid="2315371112182658176">"Offene Unterhaltung"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktive Apps"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Beenden"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Beendet"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Fertig"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopiert"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Von <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Kopieren-Benutzeroberfläche schließen"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 89f4c7546fed..319dca584e5f 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -35,7 +35,7 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Να επιτρέπεται η πρόσβαση της εφαρμογής <xliff:g id="APPLICATION">%1$s</xliff:g> στη συσκευή <xliff:g id="USB_DEVICE">%2$s</xliff:g>;"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Να επιτρέπεται στην εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> να έχει πρόσβαση στη συσκευή <xliff:g id="USB_DEVICE">%2$s</xliff:g>;\nΔεν έχει εκχωρηθεί άδεια εγγραφής σε αυτήν την εφαρμογή, αλλά μέσω αυτής της συσκευής USB θα μπορεί να εγγράφει ήχο."</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Να επιτρέπεται στην εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g> η πρόσβαση στη συσκευή <xliff:g id="USB_DEVICE">%2$s</xliff:g>;"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Άνοιγμα της εφαρμογής <xliff:g id="APPLICATION">%1$s</xliff:g> για τη διαχείριση της συσκευής <xliff:g id="USB_DEVICE">%2$s</xliff:g>;"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Άνοιγμα <xliff:g id="APPLICATION">%1$s</xliff:g> για διαχείριση συσκευής <xliff:g id="USB_DEVICE">%2$s</xliff:g>;"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Δεν έχει εκχωρηθεί άδεια εγγραφής σε αυτήν την εφαρμογή, αλλά μέσω αυτής της συσκευής USB θα μπορεί να εγγράφει ήχο. Η χρήση της εφαρμογής <xliff:g id="APPLICATION">%1$s</xliff:g> με αυτήν τη συσκευή μπορεί να σας εμποδίσει να ακούσετε κλήσεις, ειδοποιήσεις και ξυπνητήρια."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Η χρήση της εφαρμογής <xliff:g id="APPLICATION">%1$s</xliff:g> με αυτήν τη συσκευή μπορεί να σας εμποδίσει να ακούσετε κλήσεις, ειδοποιήσεις και ξυπνητήρια."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Να επιτρέπεται η πρόσβαση της εφαρμογής <xliff:g id="APPLICATION">%1$s</xliff:g> στο αξεσουάρ <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>;"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Έγινε έλεγχος ταυτότητας προσώπου"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Επιβεβαιώθηκε"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Πατήστε Επιβεβαίωση για ολοκλήρωση"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Ολοκληρώθηκε ο έλεγχος ταυτότητας"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Χρήση PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Με αυτόν τον τρόπο καταργείται ο αποκλεισμός της πρόσβασης για όλες τις εφαρμογές και υπηρεσίες που επιτρέπεται να χρησιμοποιούν το μικρόφωνό σας."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Με αυτόν τον τρόπο καταργείται ο αποκλεισμός της πρόσβασης για όλες τις εφαρμογές και υπηρεσίες που επιτρέπεται να χρησιμοποιούν την κάμερά σας."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Με αυτόν τον τρόπο καταργείται ο αποκλεισμός της πρόσβασης για όλες τις εφαρμογές και υπηρεσίες που επιτρέπεται να χρησιμοποιούν την κάμερα ή το μικρόφωνό σας."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Το μικρόφωνο έχει αποκλειστεί"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Η κάμερα έχει αποκλειστεί"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Το μικρόφωνο και η κάμερά σας έχουν αποκλειστεί"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Για την κατάργηση του αποκλεισμού, μετακινήστε τον διακόπτη απορρήτου της συσκευής σας στη θέση ενεργοποίησης για το μικρόφωνο, προκειμένου να επιτρέψετε την πρόσβαση στο μικρόφωνο. Ανατρέξτε στο εγχειρίδιο χρήσης της συσκευής σας για να εντοπίσετε τον διακόπτη απορρήτου στη συσκευή."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Για την κατάργηση του αποκλεισμού, μετακινήστε τον διακόπτη απορρήτου της συσκευής σας στη θέση ενεργοποίησης για την κάμερα, προκειμένου να επιτρέψετε την πρόσβαση στην κάμερα. Ανατρέξτε στο εγχειρίδιο χρήσης της συσκευής σας για να εντοπίσετε τον διακόπτη απορρήτου στη συσκευή."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Για την κατάργηση του αποκλεισμού τους, μετακινήστε τον διακόπτη απορρήτου της συσκευής σας στη θέση μη αποκλεισμού, προκειμένου να επιτρέψετε την πρόσβαση. Ανατρέξτε στο εγχειρίδιο χρήσης της συσκευής σας για να εντοπίσετε τον διακόπτη απορρήτου στη συσκευή."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Διαθέσιμο μικρόφωνο"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Διαθέσιμη κάμερα"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Διαθέσιμη κάμερα και μικρόφωνο"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Άλλη συσκευή"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Εναλλαγή επισκόπησης"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Δεν θα ενοχλείστε από ήχους και δονήσεις, παρά μόνο από ξυπνητήρια, υπενθυμίσεις, συμβάντα και καλούντες που έχετε καθορίσει. Θα εξακολουθείτε να ακούτε όλο το περιεχόμενο που επιλέγετε να αναπαραγάγετε, συμπεριλαμβανομένης της μουσικής, των βίντεο και των παιχνιδιών."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Πατήστε ξανά για να ανοίξετε"</string>
<string name="tap_again" msgid="1315420114387908655">"Πατήστε ξανά"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Σύρετε προς τα επάνω για άνοιγμα"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Πατήστε για άνοιγμα"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Σύρετε προς τα πάνω για να δοκιμάσετε ξανά"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ξεκλείδωμα για χρήση του NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Αυτή η συσκευή ανήκει στον οργανισμό σας."</string>
@@ -843,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Για μετάδοση της περιόδου σύνδεσης, ανοίξτε την εφαρμογή."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Άγνωστη εφαρμογή"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Διακοπή μετάδοσης"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Πώς λειτουργεί η μετάδοση"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Μετάδοση"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Οι άνθρωποι με συμβατές συσκευές Bluetooth που βρίσκονται κοντά σας μπορούν να ακούσουν το μέσο που μεταδίδετε."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Για να ακούσουν τη μετάδοσή σας, οι άνθρωποι με συμβατές συσκευές Bluetooth που βρίσκονται σε κοντινή απόσταση μπορούν είτε να σαρώσουν τον κωδικό QR είτε να χρησιμοποιήσουν το όνομα μετάδοσης και τον αντίστοιχο κωδικό πρόσβασης."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Όνομα μετάδοσης"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Κωδικός πρόσβασης"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Αποθήκευση"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Αριθμός έκδοσης"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Ο αριθμός έκδοσης αντιγράφηκε στο πρόχειρο."</string>
<string name="basic_status" msgid="2315371112182658176">"Άνοιγμα συνομιλίας"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index d995f5145d5f..b3ab570b28e2 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Face authenticated"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmed"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tap Confirm to complete"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Unlocked by face. Press the unlock icon to continue."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authenticated"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Use PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Use pattern"</string>
@@ -311,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string>
<string name="tap_again" msgid="1315420114387908655">"Tap again"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Press to open"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Press the unlock icon to open"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Unlocked by face. Press the unlock icon to open."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"This device belongs to your organisation"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index d98088dce129..6939dfc27d75 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Face authenticated"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmed"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tap Confirm to complete"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Unlocked by face. Press the unlock icon to continue."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authenticated"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Use PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Use pattern"</string>
@@ -311,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string>
<string name="tap_again" msgid="1315420114387908655">"Tap again"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Press to open"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Press the unlock icon to open"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Unlocked by face. Press the unlock icon to open."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"This device belongs to your organisation"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index d995f5145d5f..b3ab570b28e2 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Face authenticated"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmed"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tap Confirm to complete"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Unlocked by face. Press the unlock icon to continue."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authenticated"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Use PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Use pattern"</string>
@@ -311,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string>
<string name="tap_again" msgid="1315420114387908655">"Tap again"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Press to open"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Press the unlock icon to open"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Unlocked by face. Press the unlock icon to open."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"This device belongs to your organisation"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index d995f5145d5f..b3ab570b28e2 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Face authenticated"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmed"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tap Confirm to complete"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Unlocked by face. Press the unlock icon to continue."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authenticated"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Use PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Use pattern"</string>
@@ -311,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string>
<string name="tap_again" msgid="1315420114387908655">"Tap again"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Press to open"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Press the unlock icon to open"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Unlocked by face. Press the unlock icon to open."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"This device belongs to your organisation"</string>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 1ee103508aab..53cd65b1459d 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎Face authenticated‎‏‎‎‏‎"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‏‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎Confirmed‎‏‎‎‏‎"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‎‎Tap Confirm to complete‎‏‎‎‏‎"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎Unlocked by face. Press the unlock icon to continue.‎‏‎‎‏‎"</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‎‏‎‎‏‎‎‎Authenticated‎‏‎‎‏‎"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‎‎‎‏‎‏‎Use PIN‎‏‎‎‏‎"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‎Use pattern‎‏‎‎‏‎"</string>
@@ -311,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‎‏‎‎‎‎‏‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎Tap again to open‎‏‎‎‏‎"</string>
<string name="tap_again" msgid="1315420114387908655">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎‎‎‎‏‎‏‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‏‎Tap again‎‏‎‎‏‎"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‎Swipe up to open‎‏‎‎‏‎"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎Press to open‎‏‎‎‏‎"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‏‏‎‎‎‎‏‎‏‏‎‎‏‎‎‏‎Press the unlock icon to open‎‏‎‎‏‎"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎Unlocked by face. Press the unlock icon to open.‎‏‎‎‏‎"</string>
<string name="keyguard_retry" msgid="886802522584053523">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‏‎Swipe up to try again‎‏‎‎‏‎"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎Unlock to use NFC‎‏‎‎‏‎"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‏‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎This device belongs to your organization‎‏‎‎‏‎"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 4ad0b88c10c0..8fb5623b465c 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"Queda un <xliff:g id="PERCENTAGE">%s</xliff:g> de batería."</string>
<string name="invalid_charger_title" msgid="938685362320735167">"No se puede cargar mediante USB"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Usa el cargador que se incluyó con el dispositivo"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"¿Deseas activar Ahorro de batería?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"¿Quieres activar el Ahorro de batería?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Acerca del Ahorro de batería"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Activar"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Activar"</string>
@@ -92,12 +92,12 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Procesando grabación pantalla"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación constante para una sesión de grabación de pantalla"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"¿Comenzar a grabar?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Durante la grabación, el sistema Android puede capturar la información sensible que aparezca en la pantalla o que se reproduzca en el dispositivo. Se incluyen contraseñas, información de pago, fotos, mensajes y audio."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Durante la grabación, el sistema Android puede capturar cualquier información sensible que aparezca en la pantalla o que se reproduzca en el dispositivo. Se incluyen contraseñas, información de pago, fotos, mensajes y audio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Grabar audio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio del dispositivo"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sonidos del dispositivo, como música, llamadas y tonos"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Micrófono"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Micrófono y audio del dispositivo"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Audio del dispositivo y micrófono"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Iniciar"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Grabando pantalla"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Grabando pantalla y audio"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Se autenticó el rostro"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmado"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Presiona Confirmar para completar"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticado"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Usar PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Esta acción desbloquea el acceso para todos los servicios y las apps que tengan permitido usar el micrófono."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Esta acción desbloquea el acceso para todos los servicios y las apps que tengan permitido usar la cámara."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Esta acción permite que todas las aplicaciones y servicios que tengan permiso puedan usar la cámara o el micrófono."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"El micrófono está bloqueado"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"La cámara está bloqueada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"El micrófono y la cámara están bloqueados"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Para desbloquearlo, mueve el interruptor de privacidad del dispositivo a la posición de micrófono activado a fin de permitir el acceso al micrófono. Consulta el manual del dispositivo para encontrar el interruptor de privacidad."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Para desbloquearla, mueve el interruptor de privacidad del dispositivo a la posición de cámara activada a fin de permitir el acceso a la cámara. Consulta el manual del dispositivo para encontrar el interruptor de privacidad."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Para desbloquearlos, mueve el interruptor de privacidad del dispositivo a la posición de desactivados a fin de permitir el acceso. Consulta el manual del dispositivo para encontrar el interruptor de privacidad."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Micrófono disponible"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Cámara disponible"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Micrófono y cámara disponibles"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Otro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Ocultar o mostrar Recientes"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"No te molestarán los sonidos ni las vibraciones, excepto las alarmas, los recordatorios, los eventos y las llamadas de los emisores que especifiques. Podrás escuchar el contenido que reproduzcas, como música, videos y juegos."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Presiona de nuevo para abrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Presiona otra vez"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Desliza el dedo hacia arriba para abrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Presiona para abrir"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Desliza el dedo hacia arriba para volver a intentarlo"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquea el dispositivo para usar NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Este dispositivo pertenece a tu organización"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Agregar"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Sugerido por <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Dispos. bloqueado"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"¿Quieres mostrar y controlar dispositivos desde la pantalla de bloqueo?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Puedes agregar controles para dispositivos externos a la pantalla de bloqueo.\n\nLa app de tu dispositivo podría permitirte controlar algunos dispositivos sin desbloquear el teléfono o la tablet.\n\nPuedes realizar cambios en cualquier momento en Configuración."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"¿Quieres controlar dispositivos desde la pantalla de bloqueo?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Puedes controlar algunos dispositivos sin desbloquear el teléfono o la tablet.\n\nLa app de tu dispositivo determina los que se pueden controlar de esa manera."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"No, gracias"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Sí"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"El PIN contiene letras o símbolos"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verificar <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN incorrecto"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para transmitir esta sesión, abre la app"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconocida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Detener transmisión"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Cómo funciona la transmisión"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmisión"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Las personas cercanas con dispositivos Bluetooth compatibles pueden escuchar el contenido multimedia que transmites"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Para escuchar la transmisión, las personas cercanas con dispositivos Bluetooth compatibles pueden escanear tu código QR o usar tu nombre y contraseña de transmisión"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nombre de transmisión"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Contraseña"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Guardar"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilación"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Se copió el número de compilación en el portapapeles."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversación abierta"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Apps activas"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Detener"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Detenida"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Listo"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Se copió"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"De <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Descartar la copia de la IU"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 11982f558d32..e2f0b9bf24f8 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Cara autenticada"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmada"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Toca Confirmar para completar la acción"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Se ha autenticado"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Usar PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Si lo haces, todas las aplicaciones y servicios que tengan permiso podrán usar tu micrófono."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Si lo haces, todas las aplicaciones y servicios que tengan permiso podrán usar tu cámara."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Si lo haces, todas las aplicaciones y servicios que tengan permiso podrán usar tu cámara o tu micrófono."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"El micrófono está bloqueado"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"La cámara está bloqueada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"El micrófono y la cámara están bloqueados"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Para desbloquearlo, mueve el interruptor de privacidad del dispositivo a la posición de micrófono activado para permitir el acceso al micrófono. Consulta el manual del dispositivo para localizar el interruptor de privacidad."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Para desbloquearla, mueve el interruptor de privacidad del dispositivo a la posición de cámara activada para permitir el acceso a la cámara. Consulta el manual del dispositivo para localizar el interruptor de privacidad."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Para desbloquearlos, mueve el interruptor de privacidad del dispositivo a la posición de desbloqueo para permitir el acceso. Consulta el manual del dispositivo para localizar el interruptor de privacidad."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Micrófono disponible"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Cámara disponible"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Micrófono y cámara disponible"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Otro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Mostrar u ocultar aplicaciones recientes"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"No te molestarán los sonidos ni las vibraciones, excepto las alarmas, los recordatorios, los eventos y las llamadas que especifiques. Seguirás escuchando el contenido que quieras reproducir, como música, vídeos y juegos."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Toca de nuevo para abrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Toca de nuevo"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Desliza el dedo hacia arriba para abrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pulsa para abrirlo"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Desliza el dedo hacia arriba para volverlo a intentar"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquea para usar el NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Este dispositivo pertenece a tu organización"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Añadir"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Sugerido por <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Dispositivo bloqueado"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"¿Mostrar y controlar otros dispositivos en la pantalla de bloqueo?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Puedes añadir controles de tus dispositivos externos a la pantalla de bloqueo.\n\nPuede que la aplicación de tu dispositivo permita que controles algunos dispositivos sin desbloquear tu teléfono o tablet.\n\nPuedes hacer cambios en cualquier momento en Ajustes."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"¿Controlar dispositivos desde la pantalla de bloqueo?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Puedes controlar algunos dispositivos sin desbloquear tu teléfono o tablet.\n\nLa aplicación de tu dispositivo determina qué dispositivos se pueden controlar de esta forma."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"No, gracias"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Sí"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"El PIN contiene letras o símbolos"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifica <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN incorrecto"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para enviar esta sesión, abre la aplicación."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicación desconocida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Dejar de enviar contenido"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Cómo funciona la emisión"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Emisión"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Las personas cercanas con dispositivos Bluetooth compatibles pueden escuchar el contenido multimedia que emites"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Para escuchar la emisión, las personas cercanas con dispositivos Bluetooth compatibles pueden escanear tu código QR o usar tu nombre y contraseña de emisión"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nombre de emisión"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Contraseña"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Guardar"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilación"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Número de compilación copiado en el portapapeles."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversación abierta"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aplicaciones activas"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Detener"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Detenida"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Hecho"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Copiado"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Cerrar la interfaz de copia"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 875e8f35ef01..59e18e08be03 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Nägu on autenditud"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Kinnitatud"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Lõpuleviimiseks puudutage nuppu Kinnita"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenditud"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Kasuta PIN-koodi"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Sellega tühistatakse juurdepääsu blokeerimine kõikide rakenduste ja teenuste puhul, millel on lubatud mikrofoni kasutada."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Sellega tühistatakse juurdepääsu blokeerimine kõikide rakenduste ja teenuste puhul, millel on lubatud kaamerat kasutada."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Sellega tühistatakse juurdepääsu blokeerimine kõikide rakenduste ja teenuste puhul, millel on lubatud kaamerat või mikrofoni kasutada."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon on blokeeritud"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kaamera on blokeeritud"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon ja kaamera on blokeeritud"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Deblokeerimiseks lülitage oma seadme privaatsuse lüliti mikrofoni sisselülitatud asendisse, et mikrofonile juurdepääs lubada. Seadme privaatsuse lüliti leidmiseks vaadake seadme kasutusjuhendit."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Deblokeerimiseks lülitage oma seadme privaatsuse lüliti kaamera sisselülitatud asendisse, et kaamerale juurdepääs lubada. Seadme privaatsuse lüliti leidmiseks vaadake seadme kasutusjuhendit."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Nende deblokeerimiseks lülitage oma seadme privaatsuse lüliti deblokeeritud asendisse, et juurdepääs lubada. Seadme privaatsuse lüliti leidmiseks vaadake seadme kasutusjuhendit."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon on saadaval"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kaamera on saadaval"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon ja kaamera on saadaval"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Muu seade"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Lehe Ülevaade sisse- ja väljalülitamine"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Helid ja värinad ei sega teid. Kuulete siiski enda määratud äratusi, meeldetuletusi, sündmusi ja helistajaid. Samuti kuulete kõike, mille esitamise ise valite, sh muusika, videod ja mängud."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Avamiseks puudutage uuesti"</string>
<string name="tap_again" msgid="1315420114387908655">"Puudutage uuesti"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Pühkige avamiseks üles"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Avamiseks vajutage"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Uuesti proovimiseks pühkige üles"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC kasutamiseks avage."</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"See seade kuulub teie organisatsioonile"</string>
@@ -472,7 +466,7 @@
<string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Avage kasutamiseks"</string>
<string name="wallet_error_generic" msgid="257704570182963611">"Teie kaartide hankimisel ilmnes probleem, proovige hiljem uuesti"</string>
<string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lukustuskuva seaded"</string>
- <string name="qr_code_scanner_title" msgid="5290201053875420785">"Skannige QR-kood"</string>
+ <string name="qr_code_scanner_title" msgid="5290201053875420785">"QR-koodi skannimine"</string>
<string name="status_bar_work" msgid="5238641949837091056">"Tööprofiil"</string>
<string name="status_bar_airplane" msgid="4848702508684541009">"Lennukirežiim"</string>
<string name="zen_alarm_warning" msgid="7844303238486849503">"Te ei kuule järgmist äratust kell <xliff:g id="WHEN">%1$s</xliff:g>"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Lisa"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Soovitas <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Seade on lukustatud"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Kas soovite seadmete juhtelemente lukustuskuval kuvada ja kasutada?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Võite lukustuskuvale oma väliste seadmete juhtelemendid lisada.\n\nTeie seadmerakendus võib võimaldada teil teatud seadmeid ilma telefoni või tahvelarvutit avamata hallata.\n\nSaate igal ajal seadetes muudatusi teha."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Kas soovite seadmeid lukustuskuva kaudu hallata?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Võite teatud seadmeid ilma telefoni või tahvelarvutit avamata hallata.\n\nTeie seadmerakendus määrab, milliseid seadmeid saab sel viisil hallata."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Tänan, ei"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Jah"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-kood sisaldab tähti või sümboleid"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Kinnitage <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Vale PIN-kood"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Selle seansi ülekandmiseks avage rakendus."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Tundmatu rakendus"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Lõpeta ülekanne"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kuidas ülekandmine toimib?"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Ülekanne"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Teie läheduses olevad inimesed, kellel on ühilduvad Bluetooth-seadmed, saavad kuulata teie ülekantavat meediat"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Teie ülekande kuulamiseks saavad läheduses olevad inimesed, kellel on ühilduvad Bluetooth-seadmed, skannida teie QR-koodi või kasutada teie ülekande nime ja parooli"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Ülekande nimi"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Parool"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salvesta"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Järgunumber"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Järgunumber kopeeriti lõikelauale."</string>
<string name="basic_status" msgid="2315371112182658176">"Avage vestlus"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktiivsed rakendused"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Peata"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Peatatud"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Valmis"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopeeritud"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Rakendusest <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Koopiast loobumise kasutajaliides"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index c286dccd98f6..0f2aeccffcec 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -92,7 +92,7 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Pantaila-grabaketa prozesatzen"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Pantailaren grabaketa-saioaren jakinarazpen jarraitua"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Grabatzen hasi nahi duzu?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Pantaila grabatzen duzun bitartean, Android sistemak detektatu egin dezake pantailan agertzen den edo gailuak erreproduzitzen duen kontuzko informazioa; besteak beste, pasahitzak, ordainketa-informazioa, argazkiak, mezuak eta audioa."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Pantaila grabatzen duzun bitartean, baliteke Android sistemak pantailan agertzen den edo gailuak erreproduzitzen duen kontuzko informazioa detektatzea; besteak beste, pasahitzak, ordainketa-informazioa, argazkiak, mezuak eta audioa."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Grabatu audioa"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Gailuaren audioa"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Gailuko soinuak; adibidez, musika, deiak eta tonuak"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Autentifikatu da aurpegia"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Berretsita"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Amaitzeko, sakatu \"Berretsi\""</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentifikatuta"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Erabili PINa"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Mikrofonoa atzitzeko baimena duten aplikazio eta zerbitzu guztiek erabili ahalko dute."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Kamera atzitzeko baimena duten aplikazio eta zerbitzu guztiek erabili ahalko dute."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Kamera edo mikrofonoa atzitzeko baimena duten aplikazio eta zerbitzu guztiek erabili ahalko dituzte."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Blokeatuta dago mikrofonoa"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Blokeatuta dago kamera"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Blokeatuta daude mikrofonoa eta kamera"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Hura desblokeatzeko, ezarri gailuaren pribatutasun-etengailua mikrofonoa aktibatuta egon dadin, kamerarako sarbidea emateko. Gailuaren pribatutasun-etengailua aurkitzeko, irakurri gailuaren eskuliburua."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Hura desblokeatzeko, ezarri gailuaren pribatutasun-etengailua kamera aktibatuta egon dadin, kamerarako sarbidea emateko. Gailuaren pribatutasun-etengailua aurkitzeko, irakurri gailuaren eskuliburua."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Haiek desblokeatzeko, ezarri gailuaren pribatutasun-etengailua desblokeatuta egon daitezen, sarbidea emateko. Gailuaren pribatutasun-etengailua aurkitzeko, irakurri gailuaren eskuliburua."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofonoa erabilgarri dago"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera erabilgarri dago"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofonoa eta kamera erabilgarri daude"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Beste gailu bat"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Aldatu ikuspegi orokorra"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Gailuak ez du egingo ez soinurik ez dardararik, baina alarmak, gertaera eta abisuen tonuak, eta aukeratzen dituzun deitzaileen dei-tonuak joko ditu. Bestalde, zuk erreproduzitutako guztia entzungo duzu, besteak beste, musika, bideoak eta jokoak."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Irekitzeko, ukitu berriro"</string>
<string name="tap_again" msgid="1315420114387908655">"Sakatu berriro"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Pasatu hatza gora irekitzeko"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Sakatu irekitzeko"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Berriro saiatzeko, pasatu hatza gora"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desblokea ezazu NFC erabiltzeko"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Gailu hau zure erakundearena da"</string>
@@ -704,7 +698,7 @@
<string name="mobile_data" msgid="4564407557775397216">"Datu-konexioa"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<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="8912204177152950766">"<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="5389597396308001471">"Wi-Fi konexioa desaktibatuta dago"</string>
+ <string name="wifi_is_off" msgid="5389597396308001471">"Wifi-konexioa desaktibatuta dago"</string>
<string name="bt_is_off" msgid="7436344904889461591">"Bluetooth bidezko konexioa desaktibatuta dago"</string>
<string name="dnd_is_off" msgid="3185706903793094463">"Ez molestatzeko modua desaktibatuta dago"</string>
<string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Ez molestatzeko modua aktibatu du arau automatiko batek (<xliff:g id="ID_1">%s</xliff:g>)."</string>
@@ -776,7 +770,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"kendu gogokoetatik"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Eraman <xliff:g id="NUMBER">%d</xliff:g>garren postura"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrolatzeko aukerak"</string>
- <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Aukeratu atzitu nahi dituzunak Ezarpen bizkorrak menutik"</string>
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Aukeratu Ezarpen bizkorrak menutik atzitu nahi dituzunak"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"Kontrolatzeko aukerak antolatzeko, eduki itzazu sakatuta, eta arrastatu"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"Kendu dira kontrolatzeko aukera guztiak"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Ez dira gorde aldaketak"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Gehitu"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> aplikazioak iradoki du"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Gailua blokeatuta"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Gailuak pantaila blokeatuan ikusi eta kontrolatu nahi dituzu?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Kanpoko gailuak kontrolatzeko aukerak gehi ditzakezu pantaila blokeatuan.\n\nBaliteke telefonoa edo tableta desblokeatu gabe gailu batzuk kontrolatzeko baimena ematea gailuaren aplikazioak.\n\nAldaketak egiteko, joan Ezarpenak atalera."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Gailuak pantaila blokeatuan kontrolatu nahi dituzu?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Gailu batzuk telefonoa edo tableta desblokeatu gabe kontrola ditzakezu.\n\nGailuaren aplikazioak zehaztuko du zer gailu kontrola daitezkeen modu horretan."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ez, eskerrik asko"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Bai"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN kodeak hizkiak edo ikurrak ditu"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Egiaztatu <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN okerra"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Saioa ireki nahi baduzu, ireki aplikazioa."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplikazio ezezaguna"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Utzi igortzeari"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Nola funtzionatzen dute iragarpenek?"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Iragarri"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Bluetooth bidezko gailu bateragarriak dituzten inguruko pertsonek iragartzen ari zaren multimedia-edukia entzun dezakete"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Iragarpena entzuteko, Bluetooth bidezko gailu bateragarriak dituzten inguruko pertsonek zure QR kodea eskanea dezakete, edo zure iragarpenaren izena eta pasahitza erabili"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Iragarpenaren izena"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Pasahitza"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Gorde"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Konpilazio-zenbakia"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Kopiatu da konpilazio-zenbakia arbelean."</string>
<string name="basic_status" msgid="2315371112182658176">"Elkarrizketa irekia"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktibo dauden aplikazioak"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Gelditu"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Geldituta"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Eginda"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopiatu da"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Jatorria: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Kopiatutako UIa baztertzeko botoia"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 45d661a17661..c4255db3e2f2 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -22,7 +22,7 @@
<string name="app_label" msgid="4811759950673118541">"میانای کاربر سیستم"</string>
<string name="battery_low_title" msgid="5319680173344341779">"«بهینه‌سازی باتری» روشن شود؟"</string>
<string name="battery_low_description" msgid="3282977755476423966">"<xliff:g id="PERCENTAGE">%s</xliff:g> از باتری‌تان باقی مانده است. «بهینه‌سازی باتری» زمینه تیره را روشن می‌کند، فعالیت‌های پس‌زمینه را محدود می‌کند، و اعلان‌ها را به‌تأخیر می‌اندازد."</string>
- <string name="battery_low_intro" msgid="5148725009653088790">"«بهینه‌سازی باتری» زمینه تیره را روشن می‌کند، فعالیت‌های پس‌زمینه را محدود می‌کند، و اعلان‌ها را به‌تأخیر می‌اندازد."</string>
+ <string name="battery_low_intro" msgid="5148725009653088790">"«بهینه‌سازی باتری» زمینه «تیره» را روشن می‌کند، فعالیت‌های پس‌زمینه را محدود می‌کند، و اعلان‌ها را به‌تأخیر می‌اندازد."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> باقی مانده است"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"‏ازطریق USB شارژ نمی‌شود"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"از شارژر ارائه‌شده با دستگاه استفاده کنید"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"چهره اصالت‌سنجی شد"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"تأیید شد"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"برای تکمیل، روی تأیید ضربه بزنید"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"راستی‌آزمایی‌شده"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"استفاده از پین"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"با این کار دسترسی برای همه برنامه‌ها و سرویس‌هایی که مجاز هستند از میکروفونتان استفاده کنند لغو انسداد می‌شود."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"با این کار دسترسی برای همه برنامه‌ها و سرویس‌هایی که مجاز هستند از دوربینتان استفاده کنند لغو انسداد می‌شود."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"با این کار دسترسی برای همه برنامه‌ها و دستگاه‌هایی که مجاز هستند از دوربین یا میکروفونتان استفاده کنند لغو انسداد می‌شود."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"میکروفن مسدود شده است"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"دوربین مسدود شده است"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"میکروفون و دوربین مسدود شده‌اند"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"برای لغو انسداد، کلید حریم‌خصوصی روی دستگاه را به موقعیت میکروفون روشن ببرید تا دسترسی به میکروفون مجاز شود. برای پیدا کردن کلید حریم‌خصوصی روی دستگاه، به دفترچه راهنمای دستگاه مراجعه کنید."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"برای لغو انسداد، کلید حریم‌خصوصی روی دستگاه را به موقعیت دوربین روشن ببرید تا دسترسی به دوربین مجاز شود. برای پیدا کردن کلید حریم‌خصوصی روی دستگاه، به دفترچه راهنمای دستگاه مراجعه کنید."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"برای لغو انسداد آن، کلید حریم‌خصوصی روی دستگاه را به موقعیت لغو انسداد ببرید تا دسترسی مجاز شود. برای پیدا کردن کلید حریم‌خصوصی روی دستگاه، به دفترچه راهنمای دستگاه مراجعه کنید."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"میکروفون دردسترس است"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"دوربین دردسترس است"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"میکروفون و دوربین دردسترس‌اند"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"دستگاه دیگر"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"تغییر وضعیت نمای کلی"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"به‌جز هشدارها، یادآوری‌ها، رویدادها و تماس‌گیرندگانی که خودتان مشخص می‌کنید، هیچ صدا و لرزشی نخواهید داشت. همچنان صدای مواردی را که پخش می‌کنید می‌شنوید (ازجمله صدای موسیقی، ویدیو و بازی)."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"دوباره ضربه بزنید تا باز شود"</string>
<string name="tap_again" msgid="1315420114387908655">"دوباره ضربه بزنید"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"برای باز کردن، انگشتتان را تند به‌بالا بکشید"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"برای باز کردن فشار دهید"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"برای امتحان مجدد، انگشتتان را تند به‌بالا بکشید"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"‏برای استفاده از NFC، قفل را باز کنید"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"این دستگاه به سازمان شما تعلق دارد"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"افزودن"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"پیشنهاد <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"دستگاه قفل است"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"امکان دیدن و کنترل دستگاه‌ها از صفحه قفل وجود داشته باشد؟"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"می‌توانید کنترل‌هایی برای دستگاه‌های خارجی به صفحه قفل اضافه کنید.\n\nبرنامه دستگاهتان ممکن است به شما اجازه دهد بعضی‌از دستگاه‌ها را بدون باز کردن قفل تلفن یا رایانه لوحی‌تان کنترل کنید.\n\nهرزمان بخواهید می‌توانید در «تنظیمات» تغییراتی اعمال کنید."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"امکان کنترل دستگاه‌ها از صفحه قفل وجود داشته باشد؟"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"می‌توانید بعضی‌از دستگاه‌ها را بدون باز کردن قفل تلفن یا رایانه لوحی‌تان کنترل کنید.\n\nبرنامه دستگاهتان تعیین می‌کند کدام دستگاه‌ها را می‌توان به این روش کنترل کرد."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"نه متشکرم"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"بله"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"پین شامل حروف یا نماد است"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"تأیید <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"پین اشتباه است"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"برای ارسال محتوای این جلسه، لطفاً برنامه را باز کنید."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"برنامه ناشناس"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"توقف ارسال محتوا"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"همه‌فرتستی چطور کار می‌کند"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"همه‌فرستی"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"‏افرادی که در اطرافتان دستگاه‌های Bluetooth سازگار دارند می‌توانند به رسانه‌ای که همه‌فرستی می‌کنید گوش کنند"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"‏افرادی که در اطرافتان دستگاه Bluetooth سازگار دارند می‌توانند با اسکن کردن کد QR شما یا بااستفاده از نام و گذرواژه همه‌فرستی‌تان به آن گوش دهند"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"نام همه‌فرستی"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"گذرواژه"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"ذخیره کردن"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"شماره ساخت"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"شماره ساخت در بریده‌دان کپی شد."</string>
<string name="basic_status" msgid="2315371112182658176">"باز کردن مکالمه"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"برنامه‌های فعال"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"متوقف کردن"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"متوقف شده"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"تمام"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"کپی شد"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"از <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"رد کردن رابط کاربری کپی کردن"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 28e430579871..f5b20a09e032 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -35,13 +35,13 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Saako <xliff:g id="APPLICATION">%1$s</xliff:g> käyttöoikeuden (<xliff:g id="USB_DEVICE">%2$s</xliff:g>)?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Saako <xliff:g id="APPLICATION">%1$s</xliff:g> tämän pääsyoikeuden: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nSovellus ei ole saanut tallennuslupaa, mutta voi tallentaa ääntä tämän USB-laitteen avulla."</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Saako <xliff:g id="APPLICATION">%1$s</xliff:g> pääsyn (<xliff:g id="USB_DEVICE">%2$s</xliff:g>)?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Avataanko <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_DEVICE">%2$s</xliff:g> voidaan ottaa käyttöön?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Avaa <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_DEVICE">%2$s</xliff:g> voidaan ottaa käyttöön?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Sovellus ei ole saanut tallennuslupaa mutta voi tallentaa audiota tämän USB-laitteen avulla. Jos <xliff:g id="APPLICATION">%1$s</xliff:g> on käytössä laitteella, puheluita, ilmoituksia ja herätyksiä ei välttämättä kuulu."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Jos <xliff:g id="APPLICATION">%1$s</xliff:g> on käytössä laitteella, puheluita, ilmoituksia ja herätyksiä ei välttämättä kuulu."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Saako <xliff:g id="APPLICATION">%1$s</xliff:g> käyttöoikeuden (<xliff:g id="USB_ACCESSORY">%2$s</xliff:g>)?"</string>
- <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Avataanko <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_DEVICE">%2$s</xliff:g> voidaan ottaa käyttöön?"</string>
+ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Avaa <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_DEVICE">%2$s</xliff:g> voidaan ottaa käyttöön?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Avataanko <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_DEVICE">%2$s</xliff:g> voidaan ottaa käyttöön?\nSovellus ei ole saanut tallennuslupaa, mutta voi tallentaa ääntä tämän USB-laitteen avulla."</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Avataanko <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> voidaan ottaa käyttöön?"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Avaa <xliff:g id="APPLICATION">%1$s</xliff:g>, jotta <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> voidaan ottaa käyttöön?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Asennetut sov. eivät toimi tämän USB-laitteen kanssa. Lisätietoja laitteesta: <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"USB-lisälaite"</string>
<string name="label_view" msgid="6815442985276363364">"Näytä"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Kasvot tunnistettu"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Vahvistettu"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Valitse lopuksi Vahvista"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Todennettu"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Käytä PIN-koodia"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Tämä kumoaa kaikkien sellaisten sovellusten ja palveluiden eston, joilla on lupa käyttää mikrofoniasi."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Tämä kumoaa kaikkien sellaisten sovellusten ja palveluiden eston, joilla on lupa käyttää kameraasi."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Tämä kumoaa eston kaikkien sellaisten sovellusten ja palveluiden osalta, joilla on lupa käyttää kameraasi tai mikrofoniasi."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofoni on estetty"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera on estetty"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofoni ja kamera on estetty"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Jos haluat poistaa eston, salli pääsy mikrofoniin siirtämällä laitteen yksityisyysvalitsinta. Katso laitteen käyttöohjeesta, mistä löydät yksityisyysvalitsimen."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Jos haluat poistaa eston, salli pääsy kameraan siirtämällä laitteen yksityisyysvalitsinta. Katso laitteen käyttöohjeesta, mistä löydät yksityisyysvalitsimen."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Jos haluat poistaa eston, salli pääsy siirtämällä laitteen yksityisyysvalitsinta. Katso laitteen käyttöohjeesta, mistä löydät yksityisyysvalitsimen."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofoni käytettävissä"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera käytettävissä"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofoni ja kamera käytettävissä"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Muu laite"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Näytä/piilota viimeisimmät"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Äänet ja värinät eivät häiritse sinua, paitsi jos ne ovat hälytyksiä, muistutuksia, tapahtumia tai määrittämiäsi soittajia. Kuulet edelleen kaiken valitsemasi sisällön, kuten musiikin, videot ja pelit."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Avaa napauttamalla uudelleen"</string>
<string name="tap_again" msgid="1315420114387908655">"Napauta uudelleen"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Avaa pyyhkäisemällä ylös"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Avaa painamalla"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Yritä uudelleen pyyhkäisemällä ylös"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Avaa lukitus, jotta voit käyttää NFC:tä"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Organisaatiosi omistaa tämän laitteen"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Lisää"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Ehdottaja: <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Laite lukittu"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Haluatko nähdä ja hallita laitteita lukitusnäytöltä?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Voit lisätä lukitusnäytölle ohjaimia ulkoisia laitteita varten.\n\nLaitteen sovellus voi sallia joidenkin laitteiden ohjaamisen avaamatta puhelimen tai tabletin lukitusta.\n\nVoit milloin tahansa tehdä muutoksia asetuksissa."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Haluatko ohjata laitteita lukitusnäytöllä?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Voit ohjata joitakin laitteita avaamatta puhelimen tai tabletin lukitusta.\n\nRiippuu laitteen sovelluksesta, mitä laitteita voi ohjata näin."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ei kiitos"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Kyllä"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-koodi sisältää kirjaimia tai symboleja"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Vahvista <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Väärä PIN-koodi"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Jos haluat striimata tämän käyttökerran, avaa sovellus."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Tuntematon sovellus"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Lopeta striimaus"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Miten lähetys toimii"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Lähetys"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Lähistöllä olevat ihmiset, joilla on yhteensopiva Bluetooth-laite, voivat kuunnella lähettämääsi mediaa"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Jos lähistöllä olevat ihmiset haluavat kuunnella lähetystäsi ja heillä on yhteensopiva Bluetooth-laite, he voivat skannata QR-koodin tai käyttää lähetyksen nimeä ja salasanaa"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Lähetyksen nimi"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Salasana"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Tallenna"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Koontiversion numero"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Koontiversion numero kopioitu leikepöydälle"</string>
<string name="basic_status" msgid="2315371112182658176">"Avaa keskustelu"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktiiviset sovellukset"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Lopeta"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Pysäytetty"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Valmis"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopioitu"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Lähde: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Hylkää kopioitu UI"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index f908590f6020..61eeb0c15936 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Visage authentifié"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmé"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Touchez Confirmer pour terminer"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authentifié"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Utiliser un NIP"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Cette action débloque l\'accès pour toutes les applications et tous les services autorisés à utiliser le microphone."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Cette action débloque l\'accès pour toutes les applications et pour tous les services autorisés à utiliser l\'appareil photo."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Cette action débloque l\'accès pour toutes les applications et tous les services autorisés à utiliser l\'appareil photo ou le microphone."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Le microphone est bloqué"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"L\'appareil photo est bloqué"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Le microphone et l\'appareil photo sont bloqués"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Pour le débloquer, autorisez l\'accès en basculant le commutateur de confidentialité de votre appareil à la position Activé. Consultez le manuel de l\'appareil pour localiser le commutateur de confidentialité de celui-ci."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Pour le débloquer, autorisez l\'accès en basculant le commutateur de confidentialité de votre appareil à la position Activé. Consultez le manuel de l\'appareil pour localiser le commutateur de confidentialité de celui-ci."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Pour les débloquer, autorisez l\'accès en basculant le commutateur de confidentialité de votre appareil à la position Débloqué. Consultez le manuel de l\'appareil pour localiser le commutateur de confidentialité de celui-ci."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microphone disponible"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Appareil photo disponible"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Microphone et appareil photo disponibles"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Autre appareil"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Basculer l\'aperçu"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Vous ne serez pas dérangé par les sons et les vibrations, sauf pour les alarmes, les rappels, les événements et les appelants que vous sélectionnez. Vous entendrez tout ce que vous choisissez d\'écouter, y compris la musique, les vidéos et les jeux."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Touchez à nouveau pour ouvrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Toucher de nouveau"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Balayez l\'écran vers le haut pour ouvrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Appuyez pour ouvrir"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Balayez l\'écran vers le haut pour réessayer"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Déverrouillez l\'écran pour utiliser la CCP"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Cet appareil appartient à votre organisation"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Ajouter"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Suggestion de <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Appareil verrouillé"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Afficher et contrôler les appareils à partir de l\'écran de verrouillage?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Vous pouvez ajouter des commandes pour vos appareils externes à l\'écran de verrouillage.\n\nL\'application de votre appareil peut vous permettre de contrôler certains appareils sans déverrouiller votre téléphone ou votre tablette.\n\nVous pouvez apporter des modifications à tout moment dans les paramètres."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Contrôler les appareils à partir de l\'écran de verrouillage?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Vous pouvez contrôler certains appareils sans déverrouiller votre téléphone ou votre tablette.\n\nL\'application de votre appareil détermine quels appareils peuvent être contrôlés de cette manière."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Non merci"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Oui"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Le NIP contient des lettres ou des symboles"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Vérifier <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"NIP incorrect"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pour diffuser cette session, veuillez ouvrir l\'application."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Application inconnue"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Arrêter la diffusion"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Fonctionnement de la diffusion"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Diffusion"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Les personnes à proximité disposant d\'appareils Bluetooth compatibles peuvent écouter le contenu multimédia que vous diffusez"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Pour écouter votre diffusion, les personnes à proximité disposant d\'appareils Bluetooth compatibles peuvent numériser votre code QR ou utiliser votre nom de diffusion et votre mot de passe"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nom de diffusion"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Mot de passe"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Enregistrer"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numéro de version"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Le numéro de version a été copié dans le presse-papiers."</string>
<string name="basic_status" msgid="2315371112182658176">"Ouvrir la conversation"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Applications actives"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Arrêter"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Arrêtée"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"OK"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Copié"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"À partir de <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ignorer la copie de l\'IU"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 22f547c084d0..17f1468f5e6f 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -34,8 +34,8 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Rotation automatique de l\'écran"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Autoriser <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder à <xliff:g id="USB_DEVICE">%2$s</xliff:g> ?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Autoriser <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder à <xliff:g id="USB_DEVICE">%2$s</xliff:g> ?\nCette application n\'a pas été autorisée à effectuer des enregistrements, mais elle pourrait enregistrer du contenu audio via ce périphérique USB."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Autoriser <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder au <xliff:g id="USB_DEVICE">%2$s</xliff:g> ?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Ouvrir <xliff:g id="APPLICATION">%1$s</xliff:g> pour gérer le <xliff:g id="USB_DEVICE">%2$s</xliff:g> ?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Autoriser l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder à <xliff:g id="USB_DEVICE">%2$s</xliff:g> ?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Ouvrir l\'application <xliff:g id="APPLICATION">%1$s</xliff:g> pour gérer <xliff:g id="USB_DEVICE">%2$s</xliff:g> ?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Cette appli n\'a pas été autorisée à enregistrer de contenus audio, mais elle peut le faire via ce périphérique USB. En utilisant <xliff:g id="APPLICATION">%1$s</xliff:g> avec ce périphérique, vous risquez de ne pas entendre les appels, notifications et alarmes."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Vous risquez de ne pas entendre les appels, notifications et alarmes si vous utilisez <xliff:g id="APPLICATION">%1$s</xliff:g> avec ce périphérique."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Autoriser <xliff:g id="APPLICATION">%1$s</xliff:g> à accéder à <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> ?"</string>
@@ -94,10 +94,10 @@
<string name="screenrecord_start_label" msgid="1750350278888217473">"Démarrer l\'enregistrement ?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"Durant l\'enregistrement, le système Android peut capturer les infos sensibles affichées à l\'écran ou lues sur votre appareil. Cela inclut les mots de passe, les infos de paiement, les photos, les messages et l\'audio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Enregistrer l\'audio"</string>
- <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Appareil"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio de l\'appareil"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Son provenant de l\'appareil (musique, appels et sonneries, etc.)"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Micro"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Appareil et micro"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Audio de l\'appareil et micro"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Démarrer"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Enregistrement de l\'écran…"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Enregistrement de l\'écran et de l\'audio…"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Visage authentifié"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmé"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Appuyez sur \"Confirmer\" pour terminer"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Authentifié"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Utiliser un code PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Cette action débloque l\'accès à tous les services et applis autorisés à utiliser votre micro."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Cette action débloque l\'accès à tous les services et applis autorisés à utiliser votre appareil photo."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Cette action débloque l\'accès pour tous les services et applis autorisés à utiliser votre appareil photo ou votre micro."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Le micro est bloqué"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"La caméra est bloquée"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Le micro et la caméra sont bloqués"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Pour débloquer le micro et autoriser l\'accès à celui-ci, placez le bouton de désactivation qui se trouve sur votre appareil en position \"micro activé\". Reportez-vous au manuel de l\'appareil pour connaître l\'emplacement du bouton de désactivation sur votre appareil."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Pour débloquer la caméra et autoriser l\'accès à celle-ci, placez le bouton de désactivation qui se trouve sur votre appareil en position \"caméra activée\". Reportez-vous au manuel de l\'appareil pour connaître l\'emplacement du bouton de désactivation sur votre appareil."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Pour les débloquer et autoriser l\'accès à ceux-ci, placez le bouton de désactivation qui se trouve sur votre appareil en position \"débloqué\". Reportez-vous au manuel de l\'appareil pour connaître l\'emplacement du bouton de désactivation sur votre appareil."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Micro accessible"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Caméra accessible"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Micro et caméra accessibles"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Autre appareil"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activer/Désactiver l\'aperçu"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes, des rappels, des événements et des appels des contacts de votre choix. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Appuyer à nouveau pour ouvrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Appuyer à nouveau"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Balayer vers le haut pour ouvrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Appuyez pour ouvrir"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Balayez l\'écran vers le haut pour réessayer"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Déverrouillez l\'écran pour pouvoir utiliser NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Cet appareil appartient à votre organisation"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Ajouter"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Suggérée par <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Appareil verrouillé"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Afficher et contrôler les appareils depuis l\'écran de verrouillage ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Vous pouvez ajouter des commandes pour vos appareils externes sur l\'écran de verrouillage.\n\nL\'appli de votre appareil peut vous autoriser à contrôler certains appareils sans déverrouiller votre téléphone ou tablette.\n\nVous pouvez apporter des modifications à tout moment dans les paramètres."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Contrôler des appareils depuis l\'écran de verrouillage ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Vous pouvez contrôler certains appareils sans déverrouiller votre téléphone ou tablette.\n\nL\'appli de votre appareil détermine les appareils qui peuvent être contrôlés de cette manière."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Non, merci"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Oui"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Le code contient des lettres ou des symboles"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Valider <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Code incorrect"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pour caster cette session, veuillez ouvrir l\'appli."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Appli inconnue"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Arrêter la diffusion"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Fonctionnement des annonces"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Annonce"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Les personnes à proximité équipées d\'appareils Bluetooth compatibles peuvent écouter le contenu multimédia que vous diffusez"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Pour écouter votre annonce, les personnes à proximité équipées d\'appareils Bluetooth compatibles peuvent scanner votre code QR ou utiliser le nom et le mot de passe de votre annonce"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nom de l\'annonce"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Mot de passe"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Enregistrer"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numéro de build"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Numéro de build copié dans le presse-papiers."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversation ouverte"</string>
@@ -918,7 +899,7 @@
<string name="non_carrier_network_unavailable" msgid="770049357024492372">"Aucun autre réseau disponible"</string>
<string name="all_network_unavailable" msgid="4112774339909373349">"Aucun réseau disponible"</string>
<string name="turn_on_wifi" msgid="1308379840799281023">"Wi-Fi"</string>
- <string name="tap_a_network_to_connect" msgid="1565073330852369558">"Appuyez sur un réseau pour vous connecter"</string>
+ <string name="tap_a_network_to_connect" msgid="1565073330852369558">"Appuyez sur un réseau pour vous y connecter"</string>
<string name="unlock_to_view_networks" msgid="5072880496312015676">"Déverrouiller pour afficher les réseaux"</string>
<string name="wifi_empty_list_wifi_on" msgid="3864376632067585377">"Recherche de réseaux…"</string>
<string name="wifi_failed_connect_message" msgid="4161863112079000071">"Échec de la connexion au réseau"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Applis actives"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Arrêter"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Arrêtée"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"OK"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Copié"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"De <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Désactiver l\'interface de copie"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 41b7cef85607..a3655f7f390e 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -92,10 +92,10 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Procesando gravación pantalla"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificación en curso sobre unha sesión de gravación de pantalla"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Queres iniciar a gravación?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Durante a gravación, o sistema Android pode captar información confidencial visible na pantalla ou reproducila no dispositivo. Isto inclúe contrasinais, información de pago, fotos, mensaxes e audio."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Durante a gravación, o sistema Android pode captar información confidencial que apareza na pantalla ou se reproduza no dispositivo, como contrasinais, información de pago, fotos, mensaxes e audio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Gravar audio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio do dispositivo"</string>
- <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Son do dispositivo, por exemplo, música, chamadas e tons de chamada"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Son do dispositivo (por exemplo, música, chamadas e tons de chamada)"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Micrófono"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Audio e micrófono do dispositivo"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Iniciar"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Autenticouse a cara"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmada"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Toca Confirmar para completar o proceso"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticado"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Usar PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Con esta acción desbloquearase o acceso ao micrófono para todas as aplicacións e servizos que teñan permiso para utilizalo."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Con esta acción desbloquearase o acceso á cámara para todas as aplicacións e servizos que teñan permiso para utilizala."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Con esta acción desbloquearase o acceso á cámara ou ao micrófono para todas as aplicacións e servizos que teñan permiso para utilizalos."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"O micrófono está bloqueado"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"A cámara está bloqueada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"O micrófono e a cámara están bloqueados"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Se queres desbloquear o acceso ao micrófono, despraza o interruptor de privacidade do dispositivo á posición de micrófono activado. Para localizar o interruptor de privacidade do dispositivo, consulta o manual deste."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Se queres desbloquear o acceso á cámara, despraza o interruptor de privacidade do dispositivo á posición de cámara activada. Para localizar o interruptor de privacidade do dispositivo, consulta o manual deste."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Se queres desbloquear o acceso, despraza o interruptor de privacidade do dispositivo á posición de desbloqueo. Para localizar o interruptor de privacidade do dispositivo, consulta o manual deste."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"O micrófono está dispoñible"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"A cámara está dispoñible"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"O micrófono e a cámara están dispoñibles"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Activar/desactivar Visión xeral"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Non te molestará ningún son nin vibración, agás os procedentes de alarmas, recordatorios, eventos e os emisores de chamada especificados. Seguirás escoitando todo aquilo que decidas reproducir, mesmo a música, os vídeos e os xogos."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Toca de novo para abrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Toca de novo"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Pasa o dedo cara arriba para abrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Preme para abrir"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Pasa o dedo cara arriba para tentalo de novo"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquea o dispositivo para utilizar a NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Este dispositivo pertence á túa organización."</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Engadir"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Control suxerido por <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Disposit. bloqueado"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Queres que se mostren dispositivos na pantalla de bloqueo e poder controlalos desde ela?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Podes engadir á pantalla de bloqueo controis para os dispositivos externos.\n\nÉ posible que a aplicación do dispositivo che permita controlar algúns dispositivos sen desbloquear o teléfono ou a tableta.\n\nPodes realizar cambios cando queiras en Configuración."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Queres controlar dispositivos desde a pantalla de bloqueo?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Podes controlar algúns dispositivos sen desbloquear o teléfono ou a tableta.\n\nA aplicación do dispositivo determina os dispositivos que se poden controlar deste xeito."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Non, grazas"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Si"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"O PIN contén letras ou símbolos"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verificar <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"O PIN é incorrecto"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para emitir esta sesión, abre a aplicación."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicación descoñecida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Deter emisión"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Como funcionan as difusións?"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Difusión"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"As persoas que estean preto de ti e que dispoñan de dispositivos Bluetooth compatibles poden escoitar o contido multimedia que difundas"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Para escoitar a túa difusión, as persoas que estean preto e que teñan dispositivos Bluetooth compatibles poden escanear o teu código QR ou utilizar o nome e o contrasinal da difusión"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome da difusión"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Contrasinal"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Gardar"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilación"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Copiouse o número de compilación no portapapeis."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aplicacións activas"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Deter"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Detida"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Feito"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Copiouse"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"De <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ignorar interface de copia"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 619a03db13fa..614101147542 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -92,7 +92,7 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"સ્ક્રીન રેકૉર્ડિંગ ચાલુ છે"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"સ્ક્રીન રેકોર્ડિંગ સત્ર માટે ચાલુ નોટિફિકેશન"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"રેકોર્ડિંગ શરૂ કરીએ?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"રેકોર્ડ કરતી વખતે, Android System તમારી સ્ક્રીન પર દેખાતી હોય અથવા તમારા ડિવાઇસ પર ચલાવવામાં આવતી હોય તેવી કોઈપણ સંવેદનશીલ માહિતીને કૅપ્ચર કરી શકે છે. આમાં પાસવર્ડ, ચુકવણીની માહિતી, ફોટા, સંદેશા અને ઑડિયોનો સમાવેશ થાય છે."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"રેકોર્ડ કરતી વખતે, Android System તમારી સ્ક્રીન પર દેખાતી હોય અથવા તમારા ડિવાઇસ પર ચલાવવામાં આવતી હોય તેવી કોઈપણ સંવેદનશીલ માહિતીને કૅપ્ચર કરી શકે છે. આમાં પાસવર્ડ, ચુકવણીની માહિતી, ફોટા, મેસેજ અને ઑડિયોનો સમાવેશ થાય છે."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"ઑડિયો રેકોર્ડ કરો"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"ડિવાઇસનો ઑડિયો"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"મ્યુઝિક, કૉલ અને રિંગટોન જેવા તમારા ડિવાઇસના સાઉન્ડ"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ચહેરાનું પ્રમાણીકરણ થયું"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"પુષ્ટિ કરી"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"પરીક્ષણ પૂર્ણ કરવા કન્ફર્મ કરોને ટૅપ કરો"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"પ્રમાણિત"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"પિનનો ઉપયોગ કરો"</string>
@@ -256,7 +256,7 @@
<item quantity="one">%d ઉપકરણ</item>
<item quantity="other">%d ઉપકરણો</item>
</plurals>
- <string name="quick_settings_flashlight_label" msgid="4904634272006284185">"ફ્લેશલાઇટ"</string>
+ <string name="quick_settings_flashlight_label" msgid="4904634272006284185">"ફ્લૅશલાઇટ"</string>
<string name="quick_settings_flashlight_camera_in_use" msgid="4820591564526512571">"કૅમેરાનો ઉપયોગ થાય છે"</string>
<string name="quick_settings_cellular_detail_title" msgid="792977203299358893">"મોબાઇલ ડેટા"</string>
<string name="quick_settings_cellular_detail_data_usage" msgid="6105969068871138427">"ડેટા વપરાશ"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"આ તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી ધરાવતી તમામ ઍપ અને સેવાઓ માટે ઍક્સેસને અનબ્લૉક કરે છે."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"આ તમારા કૅમેરાનો ઉપયોગ કરવાની મંજૂરી ધરાવતી તમામ ઍપ અને સેવાઓ માટે ઍક્સેસને અનબ્લૉક કરે છે."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"આ તમારા કૅમેરા અથવા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી ધરાવતી તમામ ઍપ અને સેવાઓ માટે ઍક્સેસને અનબ્લૉક કરે છે."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"માઇક્રોફોનને બ્લૉક કરવામાં આવ્યો છે"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"કૅમેરાને બ્લૉક કરવામાં આવ્યો છે"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"માઇક અને કૅમેરા બ્લૉક કરવામાં આવ્યા છે"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"અનબ્લૉક કરવા માટે, માઇક્રોફોનના ઍક્સેસની મંજૂરી આપવા, તમારા ડિવાઇસ પરના પ્રાઇવસી સ્વિચને \'માઇક્રોફોન ચાલુ છે\' ધરાવતી સ્થિતિ પર ખસેડો. તમારા ડિવાઇસ પર પ્રાઇવસી સ્વિચ શોધવા માટે, ડિવાઇસના મેન્યુઅલનો સંદર્ભ લો."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"અનબ્લૉક કરવા માટે, કૅમેરાના ઍક્સેસની મંજૂરી આપવા, તમારા ડિવાઇસ પરના પ્રાઇવસી સ્વિચને \'કૅમેરા ચાલુ છે\' ધરાવતી સ્થિતિ પર ખસેડો. તમારા ડિવાઇસ પર પ્રાઇવસી સ્વિચ શોધવા માટે, ડિવાઇસના મેન્યુઅલનો સંદર્ભ લો."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"તેમને અનબ્લૉક કરવા માટે, ઍક્સેસની મંજૂરી આપવા, તમારા ડિવાઇસ પરના પ્રાઇવસી સ્વિચને \'અનબ્લૉક કરવામાં આવ્યું\' ધરાવતી સ્થિતિ પર ખસેડો. તમારા ડિવાઇસ પર પ્રાઇવસી સ્વિચ શોધવા માટે, ડિવાઇસના મેન્યુઅલનો સંદર્ભ લો."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"માઇક્રોફોનનો ઍક્સેસ ઉપલબ્ધ છે"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"કૅમેરાનો ઍક્સેસ ઉપલબ્ધ છે"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"માઇક્રોફોન અને કૅમેરાનો ઍક્સેસ ઉપલબ્ધ છે"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"અન્ય ડિવાઇસ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ઝલકને ટૉગલ કરો"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"અલાર્મ, રિમાઇન્ડર, ઇવેન્ટ અને તમે ઉલ્લેખ કરો તે કૉલર સિવાય તમને ધ્વનિ કે વાઇબ્રેશન દ્વારા ખલેલ પહોંચાડવામાં આવશે નહીં. સંગીત, વીડિઓ અને રમતો સહિત તમે જે કંઈપણ ચલાવવાનું પસંદ કરશો તે સંભળાતું રહેશે."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ખોલવા માટે ફરીથી ટૅપ કરો"</string>
<string name="tap_again" msgid="1315420114387908655">"ફરીથી ટૅપ કરો"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ખોલવા માટે ઉપરની તરફ સ્વાઇપ કરો"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"અનલૉક કરવા માટે દબાવો"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"ફરી પ્રયાસ કરવા માટે ઉપરની તરફ સ્વાઇપ કરો"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCનો ઉપયોગ કરવા માટે અનલૉક કરો"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"આ ડિવાઇસ તમારી સંસ્થાની માલિકીનું છે"</string>
@@ -356,7 +350,7 @@
<string name="user_remove_user_message" msgid="6702834122128031833">"આ વપરાશકર્તાની તમામ ઍપ્લિકેશનો અને ડેટા કાઢી નાખવામાં આવશે."</string>
<string name="user_remove_user_remove" msgid="8387386066949061256">"કાઢી નાખો"</string>
<string name="media_projection_dialog_text" msgid="1755705274910034772">"રેકોર્ડ અથવા કાસ્ટ કરતી વખતે, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>ને તમારી સ્ક્રીન પર દેખાતી હોય અથવા તમારા ડિવાઇસ પર ચલાવવામાં આવતી હોય તેવી બધી માહિતીનો ઍક્સેસ હશે. આમાં પાસવર્ડ, ચુકવણીની વિગતો, ફોટા, સંદેશા અને તમે ચલાવો છો તે ઑડિયો જેવી માહિતીનો સમાવેશ થાય છે."</string>
- <string name="media_projection_dialog_service_text" msgid="958000992162214611">"રેકોર્ડ અથવા કાસ્ટ કરતી વખતે, આ સુવિધા આપતી સેવાને તમારી સ્ક્રીન પર દેખાતી હોય અથવા તમારા ડિવાઇસ પર ચલાવવામાં આવતી હોય તેવી બધી માહિતીનો ઍક્સેસ હશે. આમાં પાસવર્ડ, ચુકવણીની વિગતો, ફોટા, સંદેશા અને તમે ચલાવો છો તે ઑડિયો જેવી માહિતીનો સમાવેશ થાય છે."</string>
+ <string name="media_projection_dialog_service_text" msgid="958000992162214611">"રેકોર્ડ અથવા કાસ્ટ કરતી વખતે, આ સુવિધા આપતી સેવાને તમારી સ્ક્રીન પર દેખાતી હોય અથવા તમારા ડિવાઇસ પર ચલાવવામાં આવતી હોય તેવી બધી માહિતીનો ઍક્સેસ હશે. આમાં પાસવર્ડ, ચુકવણીની વિગતો, ફોટા, મેસેજ અને તમે ચલાવો છો તે ઑડિયો જેવી માહિતીનો સમાવેશ થાય છે."</string>
<string name="media_projection_dialog_service_title" msgid="2888507074107884040">"શું રેકોર્ડ અથવા કાસ્ટ કરવાનું શરૂ કરીએ?"</string>
<string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> વડે રેકોર્ડ અથવા કાસ્ટ કરવાનું શરૂ કરીએ?"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"બધુ સાફ કરો"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"ઉમેરો"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> દ્વારા સૂચન કરેલા"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"ડિવાઇસ લૉક કરેલું છે"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"લૉક સ્ક્રીનમાંથી ડિવાઇસ બતાવીએ અને નિયંત્રિત કરીએ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"તમે તમારા બાહ્ય ડિવાઇસ માટેના નિયંત્રણો લૉક સ્ક્રીન પર ઉમેરી શકો છો.\n\nતમારી ડિવાઇસ ઍપ કદાચ તમને તમારો ફોન કે ટૅબ્લેટ અનલૉક કર્યા વિના અમુક ડિવાઇસ નિયંત્રિત કરવાની મંજૂરી આપી શકે.\n\nતમે ગમે ત્યારે સેટિંગમાં જઈને ફેરફાર કરી શકો છો."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"લૉક સ્ક્રીનમાંથી ડિવાઇસ નિયંત્રિત કરીએ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"તમે તમારા ફોન કે ટૅબ્લેટને અનલૉક કર્યા વિના અમુક ડિવાઇસ નિયંત્રિત કરી શકો છો.\n\nતમારી ડિવાઇસ ઍપ નક્કી કરે છે કે આ રીતે કયા ડિવાઇસને નિયંત્રિત કરવા."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"ના, આભાર"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"હા"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"પિનમાં અક્ષરો અથવા પ્રતીકોનો સમાવેશ થાય છે"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g>ને ચકાસો"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"ખોટો પિન"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"આ સત્ર કાસ્ટ કરવા માટે, કૃપા કરીને ઍપ ખોલો."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"અજાણી ઍપ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"કાસ્ટ કરવાનું રોકો"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"બ્રોડકાસ્ટ પ્રક્રિયાની કામ કરવાની રીત"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"બ્રોડકાસ્ટ કરો"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"સુસંગત બ્લૂટૂથ ડિવાઇસ ધરાવતા નજીકના લોકો તમે જે મીડિયા બ્રોડકાસ્ટ કરી રહ્યાં છો તે સાંભળી શકે છે"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"તમારા બ્રોડકાસ્ટને સાંભળવા માટે, સુસંગત બ્લૂટૂથ ડિવાઇસ ધરાવતા નજીકના લોકો તમારો QR કોડ સ્કૅન કરી શકે છે અથવા તમારા બ્રોડકાસ્ટનું નામ અને પાસવર્ડનો ઉપયોગ કરી શકે છે"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"બ્રોડકાસ્ટનું નામ"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"પાસવર્ડ"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"સાચવો"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"બિલ્ડ નંબર"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"બિલ્ડ નંબર ક્લિપબૉર્ડ પર કૉપિ કર્યો."</string>
<string name="basic_status" msgid="2315371112182658176">"વાતચીત ખોલો"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"સક્રિય ઍપ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"રોકો"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"બંધ કરેલી છે"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"થઈ ગયું"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"કૉપિ કરવામાં આવી"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g>માંથી"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"\'UI | યૂઝર ઇન્ટરફેસ (UI) કૉપિ કરો\'ને છોડી દો"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 607ce9da259d..1971298d3c56 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> शेष"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"यूएसबी के ज़रिए चार्ज नहीं किया जा सकता"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"अपने डिवाइस के साथ मिलने वाले चार्जर का इस्तेमाल करें"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"क्या आप बैटरी सेवर चालू करना चाहते हैं?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"क्या आपको बैटरी सेवर चालू करना है?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"बैटरी सेवर के बारे में"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"चालू करें"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"चालू करें"</string>
@@ -91,7 +91,7 @@
<string name="screenrecord_name" msgid="2596401223859996572">"स्क्रीन रिकॉर्डर"</string>
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"स्क्रीन रिकॉर्डिंग को प्रोसेस किया जा रहा है"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रिकॉर्ड सेशन के लिए जारी सूचना"</string>
- <string name="screenrecord_start_label" msgid="1750350278888217473">"रिकॉर्डिंग शुरू करना चाहते हैं?"</string>
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"क्या आपको रिकॉर्डिंग शुरू करनी है?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"रिकॉर्ड करते समय, Android सिस्टम आपकी स्क्रीन पर दिखने वाली या चलाई जाने वाली संवेदनशील जानकारी को कैप्चर कर सकता है. इसमें पासवर्ड, पैसे चुकाने से जुड़ी जानकारी, फ़ोटो, मैसेज, और ऑडियो शामिल हैं."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"ऑडियो रिकॉर्ड करें"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"डिवाइस ऑडियो"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"चेहरे की पुष्टि हो गई"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"पुष्टि हो गई"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"\'पुष्टि करें\' पर टैप करके पूरा करें"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"पुष्टि हो गई"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"पिन इस्तेमाल करें"</string>
@@ -220,7 +220,7 @@
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"इनपुट"</string>
<string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="3003338571871392293">"कान की मशीन"</string>
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"ब्लूटूथ चालू हो रहा है…"</string>
- <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"स्क्रीन का अपने-आप दिशा बदलना"</string>
+ <string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"ऑटो-रोटेट"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"स्क्रीन का अपने-आप दिशा बदलना (ऑटो-रोटेट)"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"जगह"</string>
<string name="quick_settings_camera_label" msgid="5612076679385269339">"कैमरे का ऐक्सेस"</string>
@@ -235,7 +235,7 @@
<string name="quick_settings_networks_unavailable" msgid="1167847013337940082">"नेटवर्क उपलब्ध नहीं हैं"</string>
<string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"कोई भी वाई-फ़ाई नेटवर्क उपलब्‍ध नहीं है"</string>
<string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"वाई-फ़ाई चालू हो रहा है…"</string>
- <string name="quick_settings_cast_title" msgid="2279220930629235211">"स्क्रीन कास्ट करना"</string>
+ <string name="quick_settings_cast_title" msgid="2279220930629235211">"स्क्रीन कास्ट"</string>
<string name="quick_settings_casting" msgid="1435880708719268055">"कास्टिंग"</string>
<string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"अनाम डिवाइस"</string>
<string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"कोई डिवाइस उपलब्ध नहीं"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ऐसा करने से, माइक्रोफ़ोन का ऐक्सेस उन सभी ऐप्लिकेशन और सेवाओं के लिए अनब्लॉक हो जाएगा जिन्हें माइक्रोफ़ोन का इस्तेमाल करने की अनुमति दी गई है."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ऐसा करने से, कैमरे का ऐक्सेस उन सभी ऐप्लिकेशन और सेवाओं के लिए अनब्लॉक हो जाएगा जिन्हें कैमरे का इस्तेमाल करने की अनुमति दी गई है."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ऐसा करने से, कैमरा या माइक्रोफ़ोन का ऐक्सेस उन सभी ऐप्लिकेशन और सेवाओं के लिए अनब्लॉक हो जाएगा जिन्हें ये इस्तेमाल करने की अनुमति है."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"माइक्रोफ़ोन को ब्लॉक किया गया है"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"कैमरे को ब्लॉक किया गया है"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"माइक्रोफ़ोन और कैमरे को ब्लॉक किया गया है"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"आपको माइक्रोफ़ोन अनब्लॉक करने के लिए, इसका ऐक्सेस देना होगा. इसके लिए, डिवाइस के प्राइवसी स्विच को \'माइक्रोफ़ोन चालू है\' वाली पोज़िशन पर ले जाएं. डिवाइस पर मौजूद प्राइवसी स्विच ढूंढने के लिए, उस डिवाइस को इस्तेमाल करने से जुड़ी गाइड देखें."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"आपको कैमरा अनब्लॉक करने के लिए, इसका ऐक्सेस देना होगा. इसके लिए, डिवाइस के प्राइवसी स्विच को \'कैमरा चालू है\' वाली पोज़िशन पर ले जाएं. डिवाइस पर मौजूद प्राइवसी स्विच ढूंढने के लिए, उस डिवाइस को इस्तेमाल करने से जुड़ी गाइड देखें."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"आपको इन्हें अनब्लॉक करने के लिए, इनका ऐक्सेस देना होगा. इसके लिए, डिवाइस के प्राइवसी स्विच को \'अनब्लॉक किया गया\' वाली पोज़िशन पर ले जाएं. डिवाइस पर मौजूद प्राइवसी स्विच ढूंढने के लिए, उस डिवाइस को इस्तेमाल करने से जुड़ी गाइड देखें."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"माइक्रोफ़ोन का ऐक्सेस उपलब्ध है"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"कैमरे का ऐक्सेस उपलब्ध है"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"माइक्रोफ़ोन और कैमरे का ऐक्सेस उपलब्ध है"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"अन्य डिवाइस"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"खास जानकारी टॉगल करें"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"आपको अलार्म, रिमाइंडर, इवेंट और चुनिंदा कॉल करने वालों के अलावा किसी और तरह से (आवाज़ करके और थरथरा कर ) परेशान नहीं किया जाएगा. आप फिर भी संगीत, वीडियो और गेम सहित अपना चुना हुआ सब कुछ सुन सकते हैं."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"खोलने के लिए फिर से टैप करें"</string>
<string name="tap_again" msgid="1315420114387908655">"फिर से टैप करें"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"खोलने के लिए ऊपर स्वाइप करें"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"अनलॉक करने के लिए दबाएं"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"फिर से कोशिश करने के लिए ऊपर की ओर स्वाइप करें"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"एनएफ़सी इस्तेमाल करने के लिए स्क्रीन को अनलॉक करें"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"इस डिवाइस का मालिकाना हक आपके संगठन के पास है"</string>
@@ -356,7 +350,7 @@
<string name="user_remove_user_message" msgid="6702834122128031833">"इस उपयोगकर्ता के सभी ऐप और डेटा को हटा दिया जाएगा."</string>
<string name="user_remove_user_remove" msgid="8387386066949061256">"हटाएं"</string>
<string name="media_projection_dialog_text" msgid="1755705274910034772">"रिकॉर्ड या कास्ट करते समय, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> आपकी स्क्रीन पर दिख रही या आपके डिवाइस पर चलाई जा रही जानकारी ऐक्सेस कर सकता है. इसमें पासवर्ड, पैसे चुकाने का ब्यौरा, फ़ोटो, मैसेज, और चलाए गए ऑडियो जैसी जानकारी शामिल है."</string>
- <string name="media_projection_dialog_service_text" msgid="958000992162214611">"रिकॉर्ड या कास्ट करते समय, वह सेवा जो यह फ़ंक्शन उपलब्ध कराती है, आपके डिवाइस पर चलाई जा रही या स्क्रीन पर दिख रही जानकारी को ऐक्सेस कर सकती है. इसमें पासवर्ड, पैसे चुकाने का ब्यौरा, फ़ोटो, मैसेज, और चलाए गए ऑडियो जैसी जानकारी शामिल है."</string>
+ <string name="media_projection_dialog_service_text" msgid="958000992162214611">"इस फ़ंक्शन को उपलब्ध कराने वाली सेवा, रिकॉर्ड या कास्ट करते समय, आपकी स्क्रीन पर दिखने वाली या चलाई जाने वाली जानकारी को ऐक्सेस कर सकती है. इसमें पासवर्ड, पैसे चुकाने से जुड़ी जानकारी, फ़ोटो, मैसेज, और चलाए जाने वाले ऑडियो शामिल हैं."</string>
<string name="media_projection_dialog_service_title" msgid="2888507074107884040">"रिकॉर्डिंग या कास्ट करना शुरू करें?"</string>
<string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> का इस्तेमाल करके रिकॉर्ड और कास्ट करना शुरू करें?"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"सभी को हटाएं"</string>
@@ -776,7 +770,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"पसंदीदा से हटाएं"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"इसे <xliff:g id="NUMBER">%d</xliff:g> नंबर पर ले जाएं"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"कंट्राेल"</string>
- <string name="controls_favorite_subtitle" msgid="6481675111056961083">"उन कंट्रोल को चुनें जिन्हें फटाफट सेटिंग से ऐक्सेस करना चाहते हैं"</string>
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"उन कंट्रोल को चुनें जिन्हें फटाफट सेटिंग से ऐक्सेस करना है"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"कंट्रोल का क्रम बदलने के लिए उन्हें दबाकर रखें और खींचें"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"सभी कंट्रोल हटा दिए गए"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"बदलाव सेव नहीं किए गए"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"जोड़ें"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> से मिला सुझाव"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"डिवाइस लॉक है"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"क्या डिवाइसों को लॉक स्क्रीन पर देखना है और उन्हें वहीं से कंट्रोल करना है?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"लॉक स्क्रीन पर अपने बाहरी डिवाइसों के लिए कंट्रोल जोड़े जा सकते हैं.\n\nअपने डिवाइस के ऐप्लिकेशन से कुछ डिवाइसों को कंट्रोल किया जा सकता है. इसके लिए, फ़ोन या टैबलेट को अनलॉक नहीं करना पड़ता.\n\nकिसी भी समय सेटिंग में जाकर बदलाव किए जा सकते हैं."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"क्या लॉक स्क्रीन से डिवाइसों को कंट्रोल करना है?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"फ़ोन या टैबलेट को अनलॉक किए बिना, कुछ डिवाइसों को कंट्रोल किया जा सकता है.\n\nआपके डिवाइस के ऐप्लिकेशन से यह तय किया जाता है कि किन डिवाइसों को इस तरह कंट्रोल किया जा सकता है."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"नहीं, रहने दें"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"हां"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"पिन में अक्षर या चिह्न शामिल होते हैं"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> की पुष्टि करें"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"गलत पिन"</string>
@@ -849,27 +837,20 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"इस सेशन को कास्ट करने के लिए, कृपया ऐप्लिकेशन खोलें."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"अनजान ऐप्लिकेशन"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"कास्टिंग करना रोकें"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ब्रॉडकास्ट करने की सुविधा कैसे काम करती है"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ब्रॉडकास्ट करें"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"आपके आस-पास मौजूद लोग, ब्रॉडकास्ट किए जा रहे मीडिया को सुन सकते हैं. हालांकि, इसके लिए उनके पास ऐसे ब्लूटूथ डिवाइस होने चाहिए जिन पर मीडिया चलाया जा सके"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ब्रॉडकास्ट किए जा रहे मीडिया को सुनने के लिए, आपके आस-पास मौजूद लोग आपका क्यूआर कोड स्कैन कर सकते हैं. इसके अलावा, वे ब्रॉडकास्ट के नाम और पासवर्ड का भी इस्तेमाल कर सकते हैं. हालांकि, इसके लिए उनके पास ऐसे ब्लूटूथ डिवाइस होने चाहिए जिन पर मीडिया चलाया जा सके"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ब्रॉडकास्ट का नाम"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"पासवर्ड"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"सेव करें"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"बिल्ड नंबर"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"बिल्ड नंबर को क्लिपबोर्ड पर कॉपी किया गया."</string>
<string name="basic_status" msgid="2315371112182658176">"ऐसी बातचीत जिसमें इंटरैक्शन डेटा मौजूद नहीं है"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"बातचीत विजेट"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"किसी बातचीत को होम स्क्रीन पर जोड़ने के लिए, उस बातचीत पर टैप करें"</string>
<string name="no_conversations_text" msgid="5354115541282395015">"हाल ही में हुई बातचीत यहां दिखेंगी"</string>
- <string name="priority_conversations" msgid="3967482288896653039">"प्राथमिकता वाली बातचीत"</string>
+ <string name="priority_conversations" msgid="3967482288896653039">"अहम बातचीत"</string>
<string name="recent_conversations" msgid="8531874684782574622">"हाल ही में की गई बातचीत"</string>
<string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> दिन पहले"</string>
<string name="one_week_timestamp" msgid="4925600765473875590">"एक हफ़्ता पहले"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ये ऐप्लिकेशन चालू हैं"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"बंद करें"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"बंद है"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"हो गया"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"कॉपी किया गया"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> से"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"कॉपी किया गया यूज़र इंटरफ़ेस (यूआई) खारिज करें"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 1f5f044c4953..b9bf55380702 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"Preostalo <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Punjenje putem USB-a nije moguće"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Koristite punjač koji ste dobili s uređajem"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Uključiti Štednju baterije?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Uključiti štednju baterije?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"O Štednji baterije"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Uključi"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Uključi"</string>
@@ -34,12 +34,12 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Automatski zakreni zaslon"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Želite li dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Želite li dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> da pristupa uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nTa aplikacija nema dopuštenje za snimanje, no mogla bi primati zvuk putem tog USB uređaja."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Želite li dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup uređaju <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Želite li otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> radi upravljanja uređajem <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ta aplikacija nema dopuštenje za snimanje, no mogla bi primati zvuk putem ovog USB uređaja. Zbog upotrebe aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g> s ovim uređajem možda nećete čuti pozive, obavijesti i alarme."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Zbog upotrebe aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g> s ovim uređajem možda nećete čuti pozive, obavijesti i alarme."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Želite li dopustiti aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> pristup uređaju <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
- <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Želite li otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> radi upravljanja uređajem <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> radi upravljanja uređajem <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Želite li upravljati uređajem <xliff:g id="USB_DEVICE">%2$s</xliff:g> putem aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g>?\nTa aplikacija nema dopuštenje za snimanje, no mogla bi primati zvuk putem tog USB uređaja."</string>
<string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Želite li otvoriti aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g> radi upravljanja uređajem <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Nijedna instalirana aplikacija ne radi s ovim USB dodatkom. Saznajte više na <xliff:g id="URL">%1$s</xliff:g>"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Lice je autentificirano"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potvrđeno"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Dodirnite Potvrdi za dovršetak"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Otključano pomoću lica. Pritisnite ikonu otključavanja da biste nastavili."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentičnost provjerena"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Koristite PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Koristite uzorak"</string>
@@ -294,24 +293,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Time se deblokira pristup za sve aplikacije i usluge kojima je dopuštena upotreba vašeg mikrofona."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Time se deblokira pristup za sve aplikacije i usluge kojima je dopuštena upotreba vašeg fotoaparata."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Time se deblokira pristup za sve aplikacije i usluge kojima je dopuštena upotreba vašeg fotoaparata ili mikrofona."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon je blokiran"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera je blokirana"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon i kamera su blokirani"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Da biste deblokirali pristup, uključite mikrofon pomoću prekidača privatnosti na uređaju, čime se dopušta pristup mikrofonu. Pogledajte priručnik uređaja da biste pronašli prekidač na uređaju."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Da biste deblokirali pristup, uključite kameru pomoću prekidača privatnosti na uređaju, čime se dopušta pristup kameri. Pogledajte priručnik uređaja da biste pronašli prekidač na uređaju."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Da biste deblokirali pristup, uključite uređaje pomoću prekidača privatnosti, čime se dopušta pristup. Pogledajte priručnik uređaja da biste pronašli prekidač na uređaju."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon je dostupan"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera je dostupna"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon i kamera su dostupni"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Ostali uređaji"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Uključivanje/isključivanje pregleda"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Neće vas ometati zvukovi i vibracije, osim alarma, podsjetnika, događaja i pozivatelja koje navedete. I dalje ćete čuti sve što želite reproducirati, uključujući glazbu, videozapise i igre."</string>
@@ -322,7 +312,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Dodirnite opet za otvaranje"</string>
<string name="tap_again" msgid="1315420114387908655">"Dodirnite ponovo"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Prijeđite prstom prema gore da biste otvorili"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pritisnite da biste otvorili"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Pritisnite ikonu otključavanja da biste otvorili"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Otključano pomoću lica. Pritisnite ikonu otključavanja da biste otvorili."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Prijeđite prstom prema gore za ponovni pokušaj"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Otključajte da biste upotrijebili NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Ovaj uređaj pripada vašoj organizaciji"</string>
@@ -794,18 +785,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Dodaj"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Preporuka s kanala <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Uređaj je zaključan"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Prikazati uređaje i omogućiti upravljanje njima na zaključanom zaslonu?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Na zaključan zaslon možete dodati kontrole za svoje vanjske uređaje.\n\nAplikacija vašeg uređaja može vam dopustiti upravljanje nekim uređajima bez otključavanja telefona ili tableta.\n\nPromjene uvijek možete unijeti u Postavkama."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Upravljati uređajima na zaključanom zaslonu?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Nekim uređajima možete upravljati bez otključavanja telefona ili tableta.\n\nAplikacija vašeg uređaja odlučuje kojim se uređajima može upravljati na taj način."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ne, hvala"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Da"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN sadrži slova ili simbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Potvrdite uređaj <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Pogrešan PIN"</string>
@@ -855,20 +840,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Da biste emitirali ovu sesiju, otvorite aplikaciju."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nepoznata aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zaustavi emitiranje"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kako emitiranje funkcionira"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Emitiranje"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Osobe u blizini s kompatibilnim Bluetooth uređajima mogu slušati medije koje emitirate"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Da biste poslušali emitiranje, osobe u blizini s kompatibilnim Bluetooth uređajima mogu skenirati vaš QR kôd ili upotrijebiti vaš naziv i zaporku za emitiranje"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Naziv emitiranja"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Zaporka"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Spremi"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Broj međuverzije"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Broj međuverzije kopiran je u međuspremnik."</string>
<string name="basic_status" msgid="2315371112182658176">"Otvoreni razgovor"</string>
@@ -946,8 +924,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktivne aplikacije"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Zaustavi"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Zaustavljeno"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gotovo"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopirano"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Iz aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Odbaci kopiranje korisničkog sučelja"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index f5a4c9d20d37..4a8bca3facf8 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -34,14 +34,14 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Képernyő automatikus forgatása"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Engedélyezi a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> számára, hogy hozzáférjen a következőhöz: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Lehetővé teszi a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazásnak, hogy hozzáférjen a következőhöz: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nEz az alkalmazás nem rendelkezik rögzítési engedéllyel, de ezzel az USB-eszközzel képes a hangfelvételre."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Engedélyezi a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás számára, hogy hozzáférjen a következőhöz: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Megnyitja a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazást a következő kezeléséhez: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"<xliff:g id="APPLICATION">%1$s</xliff:g> hozzáférhet ehhez: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Megnyitja a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> appot a(z) <xliff:g id="USB_DEVICE">%2$s</xliff:g> kezeléséhez?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ez az alkalmazás nem rendelkezik rögzítési engedéllyel, de ezzel az USB-eszközzel képes a hangfelvételre. Ha a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazást használja ezzel az eszközzel, előfordulhat, hogy nem hallja meg a hívásokat, értesítéseket és riasztásokat."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Ha a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazást használja ezzel az eszközzel, előfordulhat, hogy nem hallja meg a hívásokat, értesítéseket és riasztásokat."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Engedélyezi a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> számára, hogy hozzáférjen a következőhöz: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Megnyitja a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazást a(z) <xliff:g id="USB_DEVICE">%2$s</xliff:g> kezeléséhez?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Megnyitja a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazást, hogy kezelje a következőt: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nEz az alkalmazás nem rendelkezik rögzítési engedéllyel, de ezzel az USB-eszközzel képes a hangfelvételre."</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Megnyitja a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazást a(z) <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> kezeléséhez?"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Megnyitja a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> appot a(z) <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> kezeléséhez?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"A telepített alkalmazások nem működnek ezzel az USB-kiegészítővel. Bővebben: <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"USB-kellék"</string>
<string name="label_view" msgid="6815442985276363364">"Megtekintés"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Arc hitelesítve"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Megerősítve"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Koppintson a Megerősítés lehetőségre"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Hitelesítve"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN-kód használata"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ezzel feloldja a hozzáférés letiltását az összes olyan alkalmazás és szolgáltatás esetében, amelyek számára engedélyezte a mikrofon használatát."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ezzel feloldja a hozzáférés letiltását az összes olyan alkalmazás és szolgáltatás esetében, amelyek számára engedélyezte a kamera használatát."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Ezzel feloldja a hozzáférés letiltását az összes olyan alkalmazás és szolgáltatás esetében, amelyek számára engedélyezte a kamera vagy a mikrofon használatát."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"A mikrofon le van tiltva"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"A kamera le van tiltva"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"A mikrofon és a kamera letiltva"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"A letiltás feloldásához kapcsolja át az eszközén található adatvédelmi kapcsolót Mikrofon bekapcsolva pozícióba, így engedélyezheti a mikrofonhoz való hozzáférést. Az eszközön található adatvédelmi kapcsoló megkereséséhez használja az eszköz útmutatóját."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"A letiltás feloldásához kapcsolja át az eszközén található adatvédelmi kapcsolót Kamera bekapcsolva pozícióba, így engedélyezheti a kamerához való hozzáférést. Az eszközön található adatvédelmi kapcsoló megkereséséhez használja az eszköz útmutatóját."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"A letiltásuk feloldásához kapcsolja át az eszközén található adatvédelmi kapcsolót Letiltás feloldva pozícióba, így engedélyezheti a hozzáférést. Az eszközön található adatvédelmi kapcsoló megkereséséhez használja az eszköz útmutatóját."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"A mikrofon használható"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"A kamera használható"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"A mikrofon és a kamera használható"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Más eszköz"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Áttekintés be- és kikapcsolása"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Az Ön által meghatározott ébresztéseken, emlékeztetőkön, eseményeken és hívókon kívül nem fogja Önt más hang vagy rezgés megzavarni. Továbbra is lesz hangjuk azoknak a tartalmaknak, amelyeket Ön elindít, például zenék, videók és játékok."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Koppintson ismét a megnyitáshoz"</string>
<string name="tap_again" msgid="1315420114387908655">"Koppintson újra"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Csúsztasson felfelé a megnyitáshoz"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"A megnyitáshoz nyomja meg"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Az újrapróbálkozáshoz csúsztassa felfelé az ujját"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Az NFC használatához oldja fel a képernyőzárat"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Ez az eszköz az Ön szervezetének tulajdonában van"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Hozzáadás"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> javasolta"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Az eszköz zárolva van"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Szeretne megtekinteni és vezérelni eszközöket a lezárási képernyőn?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Hozzáadhatja külső eszközök vezérlőit a lezárási képernyőhöz.\n\nAz eszközön lévő alkalmazás segítségével telefonja vagy táblagépe feloldása nélkül is vezérelhet néhány eszközt.\n\nA Beállításokban bármikor módosíthatja ezt a funkciót."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Szeretne eszközöket vezérelni a lezárási képernyőn?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Telefonja vagy táblagépe feloldása nélkül is vezérelhet néhány eszközt.\n\nAz eszközön lévő alkalmazással határozhatja meg, hogy mely eszközöket kívánja ilyen módon vezérelni."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Most nem"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Igen"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"A PIN-kód betűket vagy szimbólumokat tartalmaz"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ellenőrzése"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Helytelen PIN-kód"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"A munkamenet átküldéséhez nyissa meg az alkalmazást."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ismeretlen alkalmazás"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Átküldés leállítása"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"A közvetítés működése"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Közvetítés"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"A közelben tartózkodó, kompatibilis Bluetooth-eszközzel rendelkező személyek meghallgathatják az Ön közvetített médiatartalmait"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"A közelben tartózkodó, kompatibilis Bluetooth-eszközzel rendelkező személyek az Ön QR-kódjának beolvasásával, vagy a közvetítéshez tartozó név és jelszó használatával hallgathatják meg az Ön közvetítését"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Közvetítés neve"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Jelszó"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Mentés"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Buildszám"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Buildszám a vágólapra másolva."</string>
<string name="basic_status" msgid="2315371112182658176">"Beszélgetés megnyitása"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktív alkalmazások"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Leállítás"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Leállítva"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Kész"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Másolva"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Forrás: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Másolási UI elvetése"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index f9983b759115..31dafac56cac 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -35,7 +35,7 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Թույլատրե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածին օգտագործել <xliff:g id="USB_DEVICE">%2$s</xliff:g> լրասարքը։"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Թույլատրե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածին օգտագործել <xliff:g id="USB_DEVICE">%2$s</xliff:g>ը։\nՀավելվածը ձայնագրելու թույլտվություն չունի, սակայն կկարողանա գրանցել ձայնն այս USB սարքի միջոցով։"</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Հասանելի դարձնե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածին <xliff:g id="USB_DEVICE">%2$s</xliff:g> սարքը"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Բացե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածը՝ <xliff:g id="USB_DEVICE">%2$s</xliff:g> սարքը կառավարելու համար"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Բացե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g>-ը՝ <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ը կառավարելու համար"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Հավելվածը ձայնագրելու թույլտվություն չունի, սակայն կկարողանա գրանցել ձայնն այս USB սարքի միջոցով։ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածն այս սարքի հետ օգտագործելիս հնարավոր է, որ չլսեք զանգերի, ծանուցումների և զարթուցիչների ձայները։"</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"<xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածն այս սարքի հետ օգտագործելիս հնարավոր է, որ չլսեք զանգերի, ծանուցումների և զարթուցիչների ձայները։"</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Թույլատրե՞լ <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածին օգտագործել <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> լրասարքը։"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Դեմքը ճանաչվեց"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Հաստատվեց"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Ավարտելու համար հպեք «Հաստատել»"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Նույնականացված է"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Օգտագործել PIN կոդ"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Սա բացում է մուտքը բոլոր հավելվածների և ծառայությունների համար, որոնք ունեն ձեր խոսափողն օգտագործելու թույլտվություն։"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Սա բացում է մուտքը բոլոր հավելվածների և ծառայությունների համար, որոնք ունեն ձեր տեսախցիկն օգտագործելու թույլտվություն։"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Սա բացում է մուտքը բոլոր հավելվածների և ծառայությունների համար, որոնք ունեն ձեր տեսախցիկը կամ խոսափողն օգտագործելու թույլտվություն։"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Խոսափողն արգելափակված է"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Տեսախցիկն արգելափակված է"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Խոսափողն ու տեսախցիկն արգելափակված են"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Արգելահանելու համար սարքում գաղտնիության փոխանջատիչը տեղափոխեք խոսափողի օգտագործման թույլտվության դիրք։ Գաղտնիության փոխանջատիչի դիրքը կարող եք իմանալ ձեր սարքի ուղեցույցում։"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Արգելահանելու համար սարքում գաղտնիության փոխանջատիչը տեղափոխեք տեսախցիկի օգտագործման թույլտվության դիրք։ Գաղտնիության փոխանջատիչի դիրքը կարող եք իմանալ ձեր սարքի ուղեցույցում։"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Արգելահանելու համար սարքում գաղտնիության փոխանջատիչը տեղափոխեք արգելահանման դիրք՝ օգտագործման թույլտվություն տրամադրելու համար։ Գաղտնիության փոխանջատիչի դիրքը կարող եք իմանալ ձեր սարքի ուղեցույցում։"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Խոսափողը հասանելի է"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Տեսախցիկը հասանելի է"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Խոսափողն ու տեսացիկը հասանելի են"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Այլ սարք"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Միացնել/անջատել համատեսքը"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Ձայները և թրթռոցները չեն անհանգստացնի ձեզ, բացի ձեր կողմից նշված զարթուցիչները, հիշեցումները, միջոցառումների ծանուցումները և զանգերը։ Դուք կլսեք ձեր ընտրածի նվագարկումը, այդ թվում՝ երաժշտություն, տեսանյութեր և խաղեր:"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Կրկին հպեք՝ բացելու համար"</string>
<string name="tap_again" msgid="1315420114387908655">"Նորից հպեք"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Բացելու համար սահեցրեք վերև"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Սեղմեք՝ բացելու համար"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Սահեցրեք վերև՝ նորից փորձելու համար"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ապակողպեք՝ NFC-ն օգտագործելու համար"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Այս սարքը պատկանում է ձեր կազմակերպությանը"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Ավելացնել"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Առաջարկվել է <xliff:g id="APP">%s</xliff:g> հավելվածի կողմից"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Սարքը կողպված է"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Ցույց տա՞լ և կառավարել սարքերը կողպէկրանից"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Դուք կարող եք կարգավորումներ ավելացնել ձեր արտաքին սարքերի համար կողպէկրանին։\n\nՁեր սարքի հավելվածը կարող է ձեզ թույլ տալ որոշ սարքեր կառավարել առանց ապակողպելու հեռախոսը կամ պլանշետը։\n\nՑանկացած ժամանակ փոփոխություններ կատարեք Կարգավորումներում։"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Կառավարե՞լ սարքերը կողպէկրանից"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Դուք կարող եք կառավարել որոշ սարքեր՝ առանց ապակողպելու ձեր հեռախոսը կամ պլանշետը։\n\nՁեր սարքի հավելվածը որոշում է, թե որ սարքերը կարելի է կառավարել այս եղանակով։"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ոչ, շնորհակալություն"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Այո"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN կոդը տառեր և նշաններ է պարունակում"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Ստուգել <xliff:g id="DEVICE">%s</xliff:g> սարքը"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN կոդը սխալ է"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Այս աշխատաշրջանը հեռարձակելու համար բացեք հավելվածը"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Անհայտ հավելված"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Կանգնեցնել հեռարձակումը"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Ինչպես է աշխատում հեռարձակումը"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Հեռարձակում"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Ձեր մոտակայքում գտնվող՝ համատեղելի Bluetooth սարքերով մարդիկ կարող են լսել մեդիա ֆայլերը, որոնք դուք հեռարձակում եք։"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Հեռարձակմանը միանալու համար մոտակայքում գտնվող՝ համատեղելի Bluetooth սարքերով մարդիկ կարող են սկանավորել ձեր QR կոդը կամ մուտքագրել ձեր հեռարձակման անվանումն ու գաղտնաբառը։"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Հեռարձակման անվանումը"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Գաղտնաբառ"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Պահել"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Կառուցման համարը"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Կառուցման համարը պատճենվեց սեղմատախտակին։"</string>
<string name="basic_status" msgid="2315371112182658176">"Բաց զրույց"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Ակտիվ հավելվածներ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Կանգնեցնել"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Կանգնեցված է"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Պատրաստ է"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Պատճենվեց"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> հավելվածից"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Փակել պատճենների միջերեսը"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 82542145af5c..9bdca97beb36 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Wajah diautentikasi"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Dikonfirmasi"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Ketuk Konfirmasi untuk menyelesaikan"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Diautentikasi"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Gunakan PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ini akan berhenti memblokir akses untuk semua aplikasi dan layanan yang diizinkan menggunakan mikrofon."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ini akan berhenti memblokir akses untuk semua aplikasi dan layanan yang diizinkan menggunakan kamera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Langkah ini akan berhenti memblokir akses untuk semua aplikasi dan layanan yang diizinkan menggunakan kamera atau mikrofon."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon diblokir"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera diblokir"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon &amp; kamera diblokir"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Untuk berhenti memblokir, alihkan tombol privasi di perangkat ke posisi mikrofon aktif untuk mengizinkan akses mikrofon. Baca panduan perangkat untuk menemukan tombol privasi di perangkat Anda."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Untuk berhenti memblokir, alihkan tombol privasi di perangkat ke posisi kamera aktif untuk mengizinkan akses kamera. Baca panduan perangkat untuk menemukan tombol privasi di perangkat Anda."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Untuk berhenti memblokir, alihkan tombol privasi di perangkat ke posisi tidak diblokir untuk mengizinkan akses. Baca panduan perangkat untuk menemukan tombol privasi di perangkat Anda."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon tersedia"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera tersedia"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon dan kamera tersedia"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Perangkat lainnya"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Aktifkan Ringkasan"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Anda tidak akan terganggu oleh suara dan getaran, kecuali dari alarm, pengingat, acara, dan penelepon yang Anda tentukan. Anda akan tetap mendengar apa pun yang telah dipilih untuk diputar, termasuk musik, video, dan game."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Ketuk lagi untuk membuka"</string>
<string name="tap_again" msgid="1315420114387908655">"Ketuk lagi"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Geser ke atas untuk membuka"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Tekan untuk membuka"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Geser ke atas untuk mencoba lagi"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Buka kunci untuk menggunakan NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Perangkat ini milik organisasi Anda"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Tambahkan"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Disarankan oleh <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Perangkat terkunci"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Tampilkan dan kontrol perangkat dari layar kunci?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Anda dapat menambahkan kontrol untuk perangkat eksternal ke layar kunci.\n\nAplikasi perangkat Anda mungkin mengizinkan Anda mengontrol beberapa perangkat tanpa membuka kunci ponsel atau tablet.\n\nAnda dapat melakukan perubahan kapan saja di Setelan."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Kontrol perangkat dari layar kunci?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Anda dapat mengontrol beberapa perangkat eksternal tanpa membuka kunci ponsel atau tablet.\n\nAplikasi perangkat Anda menentukan perangkat yang dapat dikontrol dengan cara ini."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Lain kali"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ya"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN berisi huruf atau simbol"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifikasi <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN salah"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Buka aplikasi untuk mentransmisikan sesi ini."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplikasi tidak dikenal"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Hentikan transmisi"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Cara kerja siaran"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Siaran"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Orang di dekat Anda dengan perangkat Bluetooth yang kompatibel dapat mendengarkan media yang sedang Anda siarkan"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Untuk mendengarkan siaran Anda, orang di sekitar Anda dengan perangkat Bluetooth yang kompatibel dapat memindai kode QR atau memasukkan nama dan sandi siaran Anda"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nama Siaran"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Sandi"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Simpan"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Nomor build"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Nomor versi disalin ke papan klip."</string>
<string name="basic_status" msgid="2315371112182658176">"Membuka percakapan"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aplikasi aktif"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Hentikan"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Dihentikan"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Selesai"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Disalin"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Dari <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Tutup UI salin"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index c1225d29c543..2311a56e5264 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Andlit staðfest"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Staðfest"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Ýttu á „Staðfesta“ til að ljúka"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Auðkennt"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Nota PIN-númer"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Þetta veitir öllum forritum og þjónustum aðgang að hljóðnemanum þínum."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Þetta veitir öllum forritum og þjónustum aðgang að myndavélinni þinni."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Þetta veitir öllum forritum og þjónustum aðgang að myndavélinni og hljóðnemanum þínum."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Lokað er fyrir hljóðnemann"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Lokað er fyrir myndavélina"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Lokað er fyrir hljóðnemann og myndavélina"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Þú getur opnað með því að færa persónuverndarrofann á tækinu svo að kveikt sé á hljóðnemanum til að veita aðgang að hljóðnemanum. Skoðaðu handbók tækisins til að finna persónuverndarrofann á tækinu."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Þú getur opnað með því að færa persónuverndarrofann á tækinu svo að kveikt sé á myndavélinni til að veita aðgang að myndavélinni. Skoðaðu handbók tækisins til að finna persónuverndarrofann á tækinu."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Þú getur opnað með því að færa persónuverndarrofann á tækinu á „opið“ til að veita aðgang að þeim. Skoðaðu handbók tækisins til að finna persónuverndarrofann á tækinu."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Hljóðnemi tiltækur"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Myndavél tiltæk"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Hljóðnemi og myndavél tiltæk"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Annað tæki"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Kveikja/slökkva á yfirliti"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Þú verður ekki fyrir truflunum frá hljóðmerkjum og titringi, fyrir utan vekjara, áminningar, viðburði og símtöl frá þeim sem þú leyfir fyrirfram. Þú heyrir áfram í öllu sem þú velur að spila, svo sem tónlist, myndskeiðum og leikjum."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Ýttu aftur til að opna"</string>
<string name="tap_again" msgid="1315420114387908655">"Ýttu aftur"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Strjúktu upp til að opna"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Ýttu til að opna"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Strjúktu upp til að reyna aftur"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Taktu úr lás til að nota NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Þetta tæki tilheyrir fyrirtækinu þínu"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Bæta við"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Tillaga frá <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Tækið er læst"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Sjá og stjórna tækjum á lásskjánum?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Þú getur bætt við stýringum fyrir ytri tæki á lásskjáinn.\n\nForrit tækisins kann að leyfa þér að stjórna sumum tækjum án þess að taka símann eða spjaldtölvuna úr lás.\n\nÞú getur gert breytingar hvenær sem er í stillingunum."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Stjórna tækjum á lásskjá?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Þú getur stjórnað sumum tækjum án þess að taka símann eða spjaldtölvuna úr lás.\n\nForrit tækisins ákvarðar hvaða tækjum er hægt að stjórna á þennan hátt."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nei, takk"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Já"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN inniheldur bókstafi eða tákn"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Staðfesta <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Rangt PIN-númer"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Opnaðu forritið til að senda þessa lotu út."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Óþekkt forrit"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stöðva útsendingu"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Svona virkar útsending"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Útsending"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Fólk nálægt þér með samhæf Bluetooth-tæki getur hlustað á efnið sem þú sendir út"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Til að hlusta á útsendinguna þína getur fólk í nágrenninu sem er með samhæf Bluetooth-tæki skannað QR-kóðann þinn eða notað heiti útsendingarinnar og aðgangsorðið"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Heiti útsendingar"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Aðgangsorð"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Vista"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Útgáfunúmer smíðar"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Útgáfunúmer smíðar afritað á klippiborð."</string>
<string name="basic_status" msgid="2315371112182658176">"Opna samtal"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Virk forrit"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stöðva"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Stöðvað"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Lokið"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Afritað"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Frá <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Loka afriti notendaviðmóts"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 58c49053fb2b..029505da2d2b 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -20,13 +20,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4811759950673118541">"UI sistema"</string>
- <string name="battery_low_title" msgid="5319680173344341779">"Vuoi attivare il risparmio energetico?"</string>
+ <string name="battery_low_title" msgid="5319680173344341779">"Attivare il risparmio energetico?"</string>
<string name="battery_low_description" msgid="3282977755476423966">"Batteria rimanente: <xliff:g id="PERCENTAGE">%s</xliff:g>. Il risparmio energetico attiva il tema scuro, limita l\'attività in background e ritarda le notifiche."</string>
<string name="battery_low_intro" msgid="5148725009653088790">"Il risparmio energetico attiva il tema scuro, limita l\'attività in background e ritarda le notifiche."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> rimanente"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Impossibile ricaricare tramite USB"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Utilizza il caricabatterie fornito in dotazione con il dispositivo"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Attivare Risparmio energetico?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Attivare il risparmio energetico?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Informazioni su Risparmio energetico"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Attiva"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Attiva"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Volto autenticato"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confermato"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tocca Conferma per completare"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticazione eseguita"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Utilizza PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Viene sbloccato l\'accesso per tutti i servizi e le app autorizzati a usare il microfono."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Viene sbloccato l\'accesso per tutti i servizi e le app autorizzati a usare la fotocamera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Viene sbloccato l\'accesso per tutti i servizi e le app autorizzati a usare la fotocamera o il microfono."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Microfono bloccato"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Fotocamera bloccata"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Fotocamera e microfono bloccati"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Per sbloccarlo e consentire l\'accesso, sposta l\'interruttore per la privacy del dispositivo sulla posizione del microfono attivo. Per individuare questo interruttore, consulta il manuale del dispositivo."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Per sbloccarla e consentire l\'accesso, sposta l\'interruttore per la privacy del dispositivo sulla posizione della fotocamera attiva. Per individuare questo interruttore, consulta il manuale del dispositivo."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Per sbloccarli e consentire l\'accesso, sposta l\'interruttore per la privacy del dispositivo sulla posizione sbloccata. Per individuare questo interruttore, consulta il manuale del dispositivo."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microfono disponibile"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Fotocamera disponibile"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Fotocamera e microfono disponibili"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Altro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Attiva/disattiva la panoramica"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Non verrai disturbato da suoni e vibrazioni, ad eccezione di sveglie, promemoria, eventi, chiamate da contatti da te specificati ed elementi che hai scelto di continuare a riprodurre, inclusi video, musica e giochi."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tocca ancora per aprire"</string>
<string name="tap_again" msgid="1315420114387908655">"Tocca di nuovo"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Scorri verso l\'alto per aprire"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Premi per aprire"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Scorri verso l\'alto per riprovare"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Sblocca per usare NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Questo dispositivo appartiene alla tua organizzazione"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Aggiungi"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Suggerito da <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Dispositivo bloccato"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vuoi visualizzare e controllare i dispositivi dalla schermata di blocco?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Puoi aggiungere impostazioni alla schermata di blocco per i tuoi dispositivi esterni.\n\nL\'app del tuo dispositivo potrebbe consentirti di controllare alcuni dispositivi senza dover sbloccare il tuo telefono o tablet.\n\nPuoi apportare modifiche in qualsiasi momento in Impostazioni."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Vuoi controllare i dispositivi dalla schermata di blocco?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Puoi controllare alcuni dispositivi senza dover sbloccare il tuo telefono o tablet.\n\nL\'app del tuo dispositivo determina quali dispositivi possono essere controllati in questo modo."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"No, grazie"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Sì"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Il PIN contiene lettere o simboli"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifica <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN errato"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Per trasmettere questa sessione devi aprire l\'app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App sconosciuta"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Interrompi trasmissione"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Come funziona la trasmissione"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Annuncio"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Le persone vicine a te che hanno dispositivi Bluetooth compatibili possono ascoltare i contenuti multimediali che stai trasmettendo"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Per ascoltare il tuo annuncio, le persone nelle vicinanze che hanno dispositivi Bluetooth compatibili possono scansionare il tuo codice QR o usare nome e password dell\'annuncio"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome annuncio"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Password"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salva"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numero build"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Numero build copiato negli appunti."</string>
<string name="basic_status" msgid="2315371112182658176">"Apri conversazione"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"App attive"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Interrompi"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Interrotta"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Fine"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Copiato"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Da <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ignora copia UI"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index f33f47fe94cb..29e9c30b3598 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"זיהוי הפנים בוצע"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"יש אישור"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"יש להקיש על \'אישור\' לסיום התהליך"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"מאומת"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"שימוש בקוד אימות"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"הפעולה הזו מבטלת את חסימת הגישה של כל האפליקציות והשירותים שמורשים להשתמש במיקרופון."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"הפעולה הזו מבטלת את חסימת הגישה של כל האפליקציות והשירותים שמורשים להשתמש במצלמה."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"הפעולה הזו מבטלת את חסימת הגישה של כל האפליקציות והשירותים שמורשים להשתמש במצלמה או במיקרופון."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"המיקרופון חסום"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"המצלמה חסומה"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"המיקרופון והמצלמה חסומים"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"כדי לבטל את החסימה ולאפשר גישה למיקרופון, צריך להעביר את מתג הפרטיות במכשיר למצב \'המיקרופון פועל\'. אפשר להיעזר במדריך של המכשיר כדי לאתר את מתג הפרטיות."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"כדי לבטל את החסימה ולאפשר גישה למצלמה, צריך להעביר את מתג הפרטיות במכשיר למצב \'המצלמה פועלת\'. אפשר להיעזר במדריך של המכשיר כדי לאתר את מתג הפרטיות."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"כדי לבטל את החסימה ולאפשר גישה אליהם, צריך להעביר את מתג הפרטיות במכשיר למצב \'החסימה בוטלה\'. אפשר להיעזר במדריך של המכשיר כדי לאתר את מתג הפרטיות."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"המיקרופון זמין"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"המצלמה זמינה"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"המיקרופון והמצלמה זמינים"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"מכשיר אחר"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"החלפת מצב של מסכים אחרונים"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"כדי לא להפריע לך, המכשיר לא ירטוט ולא ישמיע שום צליל, חוץ מהתראות, תזכורות, אירועים ושיחות ממתקשרים מסוימים לבחירתך. המצב הזה לא ישפיע על צלילים שהם חלק מתוכן שבחרת להפעיל, כמו מוזיקה, סרטונים ומשחקים."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"יש להקיש שוב כדי לפתוח את ההתראה"</string>
<string name="tap_again" msgid="1315420114387908655">"צריך להקיש פעם נוספת"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"צריך להחליק כדי לפתוח"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"יש להקיש כדי לפתוח"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"יש להחליק למעלה כדי לנסות שוב"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"‏יש לבטל את הנעילה כדי להשתמש ב-NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"המכשיר הזה שייך לארגון שלך"</string>
@@ -800,18 +794,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"הוספה"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"הוצע על-ידי <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"המכשיר נעול"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"להציג מכשירים ולאפשר שליטה בהם במסך הנעילה?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ניתן להוסיף למסך הנעילה אמצעי בקרה למכשירים החיצוניים.\n\nיכול להיות שהאפליקציה של המכשיר תאפשר לך לשלוט בחלק מהמכשירים בלי לבטל את הנעילה של הטלפון או הטאבלט.\n\nאפשר לבצע שינויים בכל שלב בהגדרות."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"לאפשר שליטה במכשירים במסך הנעילה?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"אפשר לשלוט בחלק מהמכשירים בלי לבטל את הנעילה של הטלפון או הטאבלט.\n\nהמכשירים שניתן לשלוט בהם באופן הזה נקבעים באפליקציה של המכשיר."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"לא תודה"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"כן"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"קוד האימות מכיל אותיות או סמלים"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"אימות <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"קוד אימות שגוי"</string>
@@ -861,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"‏כדי להעביר (cast) את הסשן הזה, צריך לפתוח את האפליקציה."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"אפליקציה לא ידועה"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"‏עצירת ההעברה (casting)"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"הסבר על שידורים"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"שידור"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"‏אנשים בקרבת מקום עם מכשירי Bluetooth תואמים יכולים להאזין למדיה שמשודרת על ידך"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"‏אנשים בקרבת מקום עם מכשירי Bluetooth תואמים יכולים לסרוק את קוד ה‑QR או להשתמש בשם השידור ובסיסמה שלך כדי להאזין לשידור"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"שם השידור"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"סיסמה"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"שמירה"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"‏מספר Build"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"‏מספר ה-Build הועתק ללוח."</string>
<string name="basic_status" msgid="2315371112182658176">"פתיחת שיחה"</string>
@@ -953,8 +934,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"אפליקציות פעילות"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"עצירה"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"הופסקה"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"סיום"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"הועתק"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"המקור: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"ביטול של העתקת ממשק המשתמש"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 32e0a1aaeb83..519b824f38c2 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -21,8 +21,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4811759950673118541">"システム UI"</string>
<string name="battery_low_title" msgid="5319680173344341779">"バッテリー セーバーを ON にしますか?"</string>
- <string name="battery_low_description" msgid="3282977755476423966">"バッテリー残量は <xliff:g id="PERCENTAGE">%s</xliff:g> です。バッテリー セーバーを有効にすると、ダークモードが ON になります。また、バックグラウンド アクティビティが制限され、通知が届くのが遅くなります。"</string>
- <string name="battery_low_intro" msgid="5148725009653088790">"バッテリー セーバーを有効にすると、ダークモードが ON になります。また、バックグラウンド アクティビティが制限され、通知が届くのが遅くなります。"</string>
+ <string name="battery_low_description" msgid="3282977755476423966">"バッテリー残量は <xliff:g id="PERCENTAGE">%s</xliff:g> です。バッテリー セーバーを ON にすると、ダークモードが ON になります。また、バックグラウンド アクティビティが制限され、通知が届くのが遅くなります。"</string>
+ <string name="battery_low_intro" msgid="5148725009653088790">"バッテリー セーバーを ON にすると、ダークモードが ON になります。また、バックグラウンド アクティビティが制限され、通知が届くのが遅くなります。"</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"残量が<xliff:g id="PERCENTAGE">%s</xliff:g>です"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"USB 経由では充電できません"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"デバイスに付属の充電器を使用してください"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"顔を認証しました"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"確認しました"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"完了するには [確認] をタップしてください"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"顔でロック解除しました。ロック解除アイコンを押して続行します。"</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"認証済み"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN を使用"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"パターンを使用"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"マイクの使用が許可されているすべてのアプリとサービスでアクセスのブロックが解除されます。"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"カメラの使用が許可されているすべてのアプリとサービスでアクセスのブロックが解除されます。"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"カメラやマイクの使用が許可されているすべてのアプリとサービスでアクセスのブロックが解除されます。"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"マイクがブロックされています"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"カメラがブロックされています"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"マイクとカメラがブロックされています"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ブロックを解除するには、デバイスのプライバシー スイッチをマイクオンの位置に移動し、マイクへのアクセスを許可してください。デバイスのプライバシー スイッチの場所については、デバイスのマニュアルを参照してください。"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ブロックを解除するには、デバイスのプライバシー スイッチをカメラオンの位置に移動し、カメラへのアクセスを許可してください。デバイスのプライバシー スイッチの場所については、デバイスのマニュアルを参照してください。"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ブロックを解除するには、デバイスのプライバシー スイッチをブロック解除の位置に移動し、アクセスを許可してください。デバイスのプライバシー スイッチの場所については、デバイスのマニュアルを参照してください。"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"マイクを利用できます"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"カメラを利用できます"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"マイクとカメラを利用できます"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"その他のデバイス"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"概要を切り替え"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"アラーム、リマインダー、予定、指定した人からの着信以外の音やバイブレーションに煩わされることはありません。音楽、動画、ゲームなど再生対象として選択したコンテンツは引き続き再生されます。"</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"開くにはもう一度タップしてください"</string>
<string name="tap_again" msgid="1315420114387908655">"もう一度タップしてください"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"開くには上にスワイプします"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"押すと開きます"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"ロック解除アイコンを押して開きます"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"顔でロック解除しました。ロック解除アイコンを押して開きます。"</string>
<string name="keyguard_retry" msgid="886802522584053523">"上にスワイプしてもう一度お試しください"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC を使用するには、ロックを解除してください"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"これは組織が所有するデバイスです"</string>
@@ -843,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"このセッションをキャストするには、アプリを開いてください。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"不明なアプリ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"キャストを停止"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ブロードキャストの仕組み"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ブロードキャスト"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Bluetooth 対応デバイスを持っている付近のユーザーは、あなたがブロードキャストしているメディアを聴けます"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Bluetooth 対応デバイスを持っている付近のユーザーは、QR コードをスキャンしたり、ブロードキャストの名前とパスワードを使用したりすることで、あなたのブロードキャストを聴けます。"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ブロードキャストの名前"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"パスワード"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"保存"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ビルド番号"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ビルド番号をクリップボードにコピーしました。"</string>
<string name="basic_status" msgid="2315371112182658176">"空の会話"</string>
@@ -926,11 +910,11 @@
<string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"タイルを追加しない"</string>
<string name="qs_user_switch_dialog_title" msgid="3045189293587781366">"ユーザーの選択"</string>
<plurals name="fgs_manager_footer_label" formatted="false" msgid="9091110396713032871">
- <item quantity="other">有効なアプリ: <xliff:g id="COUNT_1">%s</xliff:g> 個</item>
- <item quantity="one">有効なアプリ: <xliff:g id="COUNT_0">%s</xliff:g> 個</item>
+ <item quantity="other">実行中のアプリ: <xliff:g id="COUNT_1">%s</xliff:g> 個</item>
+ <item quantity="one">実行中のアプリ: <xliff:g id="COUNT_0">%s</xliff:g> 個</item>
</plurals>
<string name="fgs_dot_content_description" msgid="2865071539464777240">"最新情報"</string>
- <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"有効なアプリ"</string>
+ <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"実行中のアプリ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"停止"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"停止中"</string>
<string name="clipboard_edit_text_done" msgid="4551887727694022409">"完了"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 60198563b0d9..1eba25d9e1ac 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -34,8 +34,8 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"ეკრანის ავტოროტაცია"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"მიეცეს <xliff:g id="APPLICATION">%1$s</xliff:g>-ს <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ზე წვდომის უფლება?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"დართავთ <xliff:g id="APPLICATION">%1$s</xliff:g>-ს <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ზე წვდომის ნებას?\nამ აპს არ აქვს მინიჭებული ჩაწერის ნებართვა, მაგრამ შეუძლია ჩაიწეროს აუდიო ამ USB მოწყობილობის მეშვეობით."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"გსურთ მიანიჭოთ <xliff:g id="APPLICATION">%1$s</xliff:g>-ს <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ზე წვდომა?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"გსურთ, გახსნათ <xliff:g id="APPLICATION">%1$s</xliff:g>, <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ის გამოსაყენებლად?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"მიენიჭოს <xliff:g id="APPLICATION">%1$s</xliff:g>-ს <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ზე წვდომა?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"გაიხსნას <xliff:g id="APPLICATION">%1$s</xliff:g>, <xliff:g id="USB_DEVICE">%2$s</xliff:g>-ის გამოსაყენებლად?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"ამ აპს არ აქვს მინიჭებული ჩაწერის ნებართვა, მაგრამ შეუძლია ჩაიწეროს აუდიო ამ USB მოწყობილობის მეშვეობით. ამ მოწყობილობაზე <xliff:g id="APPLICATION">%1$s</xliff:g>-ის გამოყენებამ შეიძლება ზარების, შეტყობინებებისა და მაღვიძარის ხმა გამორთოს."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"ამ მოწყობილობაზე <xliff:g id="APPLICATION">%1$s</xliff:g>-ის გამოყენებამ შეიძლება ზარების, შეტყობინებებისა და მაღვიძარის ხმა გამორთოს."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"მიეცეს <xliff:g id="APPLICATION">%1$s</xliff:g>-ს <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>-ზე წვდომის უფლება?"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"სახის ამოცნობილია"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"დადასტურებული"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"დასასრულებლად შეეხეთ „დადასტურებას“"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"განიბლოკა სახით. გასაგრძელებლად დააჭირეთ განბლოკვის ხატულას."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ავტორიზებულია"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN-კოდის გამოყენება"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"ნიმუშის გამოყენება"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ამ მოქმედების მეშვეობით განიბლოკება ყველა აპსა და მომსახურებაზე წვდომა, რომელთაც აქვთ თქვენი მიკროფონის გამოყენების უფლება."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ამ მოქმედების მეშვეობით განიბლოკება ყველა აპსა და მომსახურებაზე წვდომა, რომელთაც აქვთ თქვენი კამერის გამოყენების უფლება."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ამ მოქმედების მეშვეობით განიბლოკება ყველა აპსა და მომსახურებაზე წვდომა, რომელთაც აქვთ თქვენი კამერის ან მიკროფონის გამოყენების უფლება."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"მიკროფონი დაბლოკილია"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"კამერა დაბლოკილია"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"მიკროფონი &amp; კამერა დაბლოკილია"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"განსაბლოკად თქვენი მოწყობილობის კონფიდენციალურობის ჩამრთველი გადაიტანეთ მიკროფონთან ისეთ პოზიციაზე, რომ შეიძლებოდეს მიკროფონზე წვდომა. კონფიდენციალურობის ჩამრთველის მისაგნებად გამოიყენეთ თქვენი მოწყობილობის სახელმძღვანელო."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"განსაბლოკად თქვენი მოწყობილობის კონფიდენციალურობის ჩამრთველი გადაიტანეთ კამერასთან ისეთ პოზიციაზე, რომ შეიძლებოდეს კამერაზე წვდომა. კონფიდენციალურობის ჩამრთველის მისაგნებად გამოიყენეთ თქვენი მოწყობილობის სახელმძღვანელო."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"განსაბლოკად თქვენი მოწყობილობის კონფიდენციალურობის ჩამრთველი გადაიტანეთ განბლოკვის პოზიციაში ისე, რომ შეიძლებოდეს წვდომა. კონფიდენციალურობის ჩამრთველის მისაგნებად გამოიყენეთ თქვენი მოწყობილობის სახელმძღვანელო."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"მიკროფონი ხელმისაწვდომია"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"კამერა ხელმისაწვდომია"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"მიკროფონი და კამერა ხელმისაწვდომია"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"სხვა მოწყობილობა"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"მიმოხილვის გადართვა"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"თქვენ მიერ მითითებული მაღვიძარების, შეხსენებების, მოვლენებისა და ზარების გარდა, არავითარი ხმა და ვიბრაცია არ შეგაწუხებთ. თქვენ მაინც შეძლებთ სასურველი კონტენტის, მაგალითად, მუსიკის, ვიდეოებისა და თამაშების აუდიოს მოსმენა."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"შეეხეთ ისევ გასახსნელად"</string>
<string name="tap_again" msgid="1315420114387908655">"შეეხეთ ხელახლა"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"გასახსნელად გადაფურცლეთ ზემოთ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"დააჭირეთ გასახსნელად"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"გასახსნელად დააჭირეთ განბლოკვის ხატულას"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"განიბლოკა სახით. გასახსნელად დააჭირეთ განბლოკვის ხატულას."</string>
<string name="keyguard_retry" msgid="886802522584053523">"ხელახლა საცდელად გადაფურცლეთ ზემოთ"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"განბლოკეთ NFC-ის გამოსაყენებლად"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ამ მოწყობილობას ფლობს თქვენი ორგანიზაცია"</string>
@@ -788,18 +779,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"დამატება"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"შემოთავაზებულია <xliff:g id="APP">%s</xliff:g>-ის მიერ"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"მოწყობილ. ჩაკეტილია"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"გსურთ მოწყობილობების ჩვენება და მართვა ჩაკეტილი ეკრანიდან?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"შეგიძლიათ დაამატოთ მართვის საშუალებები გარე მოწყობილობებისთვის, ჩაკეტილ ეკრანზე.\n\nთქვენი მოწყობილობის აპმა შეიძლება მოგცეთ საშუალება, მართოთ ზოგიერთი მოწყობილობა თქვენი ტელეფონის ან ტაბლეტის განბლოკვის გარეშე.\n\nცვლილებების შეტანა ნებისმიერ დროს შეგიძლიათ პარამეტრებიდან."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"გსურთ მოწყობილობების მართვა ჩაკეტილი ეკრანიდან?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"შეგიძლიათ ზოგიერთი მოწყობილობის მართვა ტელეფონის ან ტაბლეტის განბლოკვის გარეშე.\n\nთქვენი მოწყობილობის აპი განსაზღვრავს, რომელი მოწყობილობა იმართება ამგვარად."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"არა, გმადლობთ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"დიახ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-კოდი შეიცავს ასოებს ან სიმბოლოებს"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"დაადასტურეთ <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN-კოდი არასწორია"</string>
@@ -849,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ამ სესიის ტრანსლირებისთვის გახსენით აპი."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"უცნობი აპი"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ტრანსლირების შეწყვეტა"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ტრანსლირების მუშაობის პრინციპი"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ტრანსლაცია"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"თქვენთან ახლოს მყოფ ხალხს თავსებადი Bluetooth მოწყობილობით შეუძლიათ თქვენ მიერ ტრანსლირებული მედიის მოსმენა"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"თქვენი ტრანსლაციის მოსასმენად ახლომახლო მყოფ ხალხს შეუძლია თავსებადი Bluetooth მოწყობილობებით თქვენი QR კოდის დასკანირება ან ტრანსლაციის სახელისა და პაროლის გამოყენება"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ტრანსლაციის სახელი"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"პაროლი"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"შენახვა"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ანაწყობის ნომერი"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ანაწყობის ნომერი დაკოპირებულია გაცვლის ბუფერში."</string>
<string name="basic_status" msgid="2315371112182658176">"მიმოწერის გახსნა"</string>
@@ -939,8 +917,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"აქტიური აპები"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"შეწყვეტა"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"შეწყვეტილია"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"მზადაა"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"კოპირებულია"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g>-დან"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"მომხმარებლის ინტერფეისის ასლის გაუქმება"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 545f20aec656..be57f4614d38 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -21,8 +21,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4811759950673118541">"Жүйе интерфейсі"</string>
<string name="battery_low_title" msgid="5319680173344341779">"Батареяны үнемдеу режимі қосылсын ба?"</string>
- <string name="battery_low_description" msgid="3282977755476423966">"<xliff:g id="PERCENTAGE">%s</xliff:g> заряд қалды. Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады, фондық әрекеттерге шектеу қояды және хабарландыруларды кідіртеді."</string>
- <string name="battery_low_intro" msgid="5148725009653088790">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады, фондық әрекеттерге шектеу қояды және хабарландыруларды кідіртеді."</string>
+ <string name="battery_low_description" msgid="3282977755476423966">"<xliff:g id="PERCENTAGE">%s</xliff:g> заряд қалды. Батареяны үнемдеу режимі қараңғы режимді іске қосады, фондық әрекеттерге шектеу қояды және хабарландыруларды кідіртеді."</string>
+ <string name="battery_low_intro" msgid="5148725009653088790">"Батареяны үнемдеу режимі қараңғы режимді іске қосады, фондық әрекеттерге шектеу қояды және хабарландыруларды кідіртеді."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> қалды"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"USB арқылы зарядтау мүмкін емес"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Құрылғымен бірге берілген зарядтау құралын пайдаланыңыз"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Бет танылды."</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Расталды"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Аяқтау үшін \"Растау\" түймесін түртіңіз."</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Аутентификацияланған"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN кодын пайдалану"</string>
@@ -224,7 +224,7 @@
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Автоматты айналатын экран"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Локация"</string>
<string name="quick_settings_camera_label" msgid="5612076679385269339">"Камераны пайдалану"</string>
- <string name="quick_settings_mic_label" msgid="8392773746295266375">"Микрофон пайдалану"</string>
+ <string name="quick_settings_mic_label" msgid="8392773746295266375">"Микрофонды пайдалану"</string>
<string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Қолжетімді"</string>
<string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Бөгелген"</string>
<string name="quick_settings_media_device_label" msgid="8034019242363789941">"Meдиа құрылғысы"</string>
@@ -271,7 +271,7 @@
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Күн шыққанға дейін"</string>
<string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"Қосылу уақыты: <xliff:g id="TIME">%s</xliff:g>"</string>
<string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"<xliff:g id="TIME">%s</xliff:g> дейін"</string>
- <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Қараңғы тақырып"</string>
+ <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"Қараңғы режим"</string>
<string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Батареяны үнемдеу режимі"</string>
<string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"Күн батқанда қосу"</string>
<string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"Күн шыққанға дейін"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Микрофоныңызды пайдалануға рұқсат берілген барлық қолданба мен қызметтің бөгеуі алынады."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Камераңызды пайдалануға рұқсат берілген барлық қолданба мен қызметтің бөгеуі алынады."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Камераңызды немесе микрофоныңызды пайдалануға рұқсат берілген барлық қолданба мен қызметтің бөгеуі алынады."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофон бөгелген"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камера бөгелген"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофон мен камера бөгелген"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Бөгеуді алу үшін құрылғыдағы құпиялылық ауыстырғышын микрофонға жылжытыңыз, оның қалпы микрофонды пайдалануға мүмкіндік беруі тиіс. Құрылғыдағы құпиялылық ауыстырғышының орналасқан жерін құрылғы нұсқаулығынан қараңыз."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Бөгеуді алу үшін құрылғыдағы құпиялылық ауыстырғышын камераға жылжытыңыз, оның қалпы камераны пайдалануға мүмкіндік беруі тиіс. Құрылғыдағы құпиялылық ауыстырғышының орналасқан жерін құрылғы нұсқаулығынан қараңыз."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Оның бөгеуін алу үшін құрылғыдағы құпиялылық ауыстырғышын ашық қалыпқа жылжытып, пайдалану мүмкіндігін қамтамасыз етіңіз. Құрылғыдағы құпиялылық ауыстырғышының орналасқан жерін құрылғы нұсқаулығынан қараңыз."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофон қолжетімді"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камера қолжетімді"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофон мен камера қолжетімді"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Басқа құрылғы"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Шолуды қосу/өшіру"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Оятқыш, еске салғыш, іс-шара мен өзіңіз көрсеткен контактілердің қоңырауларынан басқа дыбыстар мен дірілдер мазаламайтын болады. Музыка, бейне және ойын сияқты медиафайлдарды қоссаңыз, оларды естисіз."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Ашу үшін қайта түртіңіз"</string>
<string name="tap_again" msgid="1315420114387908655">"Қайта түртіңіз."</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Ашу үшін жоғары қарай сырғытыңыз."</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Ашу үшін басыңыз."</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Әрекетті қайталау үшін жоғары сырғытыңыз."</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC пайдалану үшін құлыпты ашыңыз."</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Бұл құрылғы ұйымыңызға тиесілі."</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Енгізу"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ұсынған"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Құрылғы құлыпталды."</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Құрылғыларды құлып экранынан көрсетуге және басқаруға рұқсат берілсін бе?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Сыртқы құрылғылардың басқару элементтерін құлып экранына қоса аласыз.\n\nҚұрылғы қолданбасы кейбір құрылғыларды телефонның немесе планшеттің құлпын ашпастан басқаруға мүмкіндік береді.\n\n\"Параметрлер\" бөлімінде кез келген уақытта өзгерістер енгізуге болады."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Құрылғылар құлып экранынан басқарылсын ба?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Кейбір құрылғыларды телефонның немесе планшеттің құлпын ашпастан басқара аласыз.\n\nҚұрылғы қолданбасы осылай басқаруға болатын құрылғыларды анықтайды."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Жоқ, рақмет"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Иә"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN коды әріптерден не таңбалардан құралады."</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> растау"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN коды қате"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Бұл сеансты трансляциялау үшін қолданбаны ашыңыз."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Белгісіз қолданба"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Трансляцияны тоқтату"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Тарату қалай жүзеге асады"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Тарату"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Үйлесімді Bluetooth құрылғылары бар маңайдағы адамдар сіз таратып жатқан медиамазмұнды тыңдай алады."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Тарату хабарын тыңдау үшін, үйлесімді Bluetooth құрылғылары бар маңайдағы адамдар QR кодыңызды сканерлей немесе тарату хабарының аты мен құпия сөзді пайдалана алады."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Тарату хабарының аты"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Құпия сөз"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Сақтау"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Құрама нөмірі"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Құрама нөмірі буферге көшірілді."</string>
<string name="basic_status" msgid="2315371112182658176">"Ашық әңгіме"</string>
@@ -932,15 +913,14 @@
<string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"Бөлшек қоспау"</string>
<string name="qs_user_switch_dialog_title" msgid="3045189293587781366">"Пайдаланушыны таңдау"</string>
<plurals name="fgs_manager_footer_label" formatted="false" msgid="9091110396713032871">
- <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> белсенді қолданба</item>
- <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> белсенді қолданба</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> қолданба істеп тұр</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> қолданба істеп тұр</item>
</plurals>
<string name="fgs_dot_content_description" msgid="2865071539464777240">"Жаңа ақпарат"</string>
- <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Белсенді қолданбалар"</string>
+ <string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Істеп тұрған қолданбалар"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Тоқтату"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Тоқтатылған"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Дайын"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Көшірілді"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> қолданбасынан"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Көшіру интерфейсін жабу"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 562da727fae4..59208f568b1b 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"បានផ្ទៀងផ្ទាត់​មុខ"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"បានបញ្ជាក់"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"ចុច \"បញ្ជាក់\" ដើម្បីបញ្ចប់"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"បានដោះសោ​ដោយប្រើមុខ។ សូមចុចរូបដោះសោ ដើម្បីបន្ត។"</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"បាន​ផ្ទៀងផ្ទាត់"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ប្រើកូដ PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"ប្រើ​លំនាំ"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ការធ្វើបែបនេះ​នឹងឈប់ទប់ស្កាត់​ការចូលប្រើ​សម្រាប់កម្មវិធី និងសេវាកម្ម​ទាំងអស់ ដែលត្រូវបាន​អនុញ្ញាតឱ្យប្រើ​មីក្រូហ្វូនរបស់អ្នក​។"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ការធ្វើបែបនេះ​នឹងឈប់ទប់ស្កាត់​ការចូលប្រើ​សម្រាប់កម្មវិធី និងសេវាកម្ម​ទាំងអស់ ដែលត្រូវបាន​អនុញ្ញាតឱ្យប្រើ​កាមេរ៉ារបស់អ្នក​។"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ការធ្វើបែបនេះ​នឹងឈប់ទប់ស្កាត់​ការចូលប្រើ​សម្រាប់កម្មវិធី និងសេវាកម្ម​ទាំងអស់ ដែលត្រូវបាន​អនុញ្ញាតឱ្យប្រើ​កាមេរ៉ា ឬមីក្រូហ្វូនរបស់អ្នក​។"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"មីក្រូហ្វូន​ត្រូវ​បាន​ទប់ស្កាត់"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"កាមេរ៉ា​ត្រូវ​បាន​ទប់ស្កាត់"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"កាមេរ៉ា និងមីក្រូហ្វូន​ត្រូវបានទប់ស្កាត់"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ដើម្បីឈប់​ទប់ស្កាត់ សូមប្ដូរប៊ូតុងបិទបើក​ឯកជនភាព​នៅលើឧបករណ៍​របស់អ្នក​ទៅទីតាំងបើកមីក្រូហ្វូន ដើម្បីអនុញ្ញាតឱ្យ​ចូលប្រើ​មីក្រូហ្វូន។ សូមមើល​សៀវភៅ​ណែនាំអំពីឧបករណ៍ ដើម្បីរកមើល​ប៊ូតុងបិទបើកឯកជនភាព​នៅលើ​ឧបករណ៍​របស់អ្នក។"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ដើម្បីឈប់​ទប់ស្កាត់ សូមប្ដូរ​ប៊ូតុងបិទបើកឯកជនភាព​នៅលើ​ឧបករណ៍របស់អ្នក​ទៅទីតាំងបើក​កាមេរ៉ា ដើម្បីអនុញ្ញាតឱ្យ​ចូលប្រើ​កាមេរ៉ា។ សូមមើល​សៀវភៅ​ណែនាំអំពីឧបករណ៍ ដើម្បីរកមើល​ប៊ូតុងបិទបើកឯកជនភាព​នៅលើ​ឧបករណ៍​របស់អ្នក។"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ដើម្បីឈប់​ទប់ស្កាត់កាមេរ៉ានិងមីក្រូហ្វូន សូមប្ដូរ​ប៊ូតុងបិទបើក​ឯកជនភាព​នៅលើឧបករណ៍​របស់អ្នក​ទៅទីតាំងឈប់ទប់ស្កាត់ ដើម្បីអនុញ្ញាតឱ្យ​ចូលប្រើ។ សូមមើល​សៀវភៅ​ណែនាំអំពីឧបករណ៍ ដើម្បីរកមើល​ប៊ូតុងបិទបើកឯកជនភាព​នៅលើ​ឧបករណ៍​របស់អ្នក។"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"អាចប្រើមីក្រូហ្វូនបាន"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"អាចប្រើកាមេរ៉ាបាន"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"អាចប្រើកាមេរ៉ា និងមីក្រូហ្វូនបាន"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ឧបករណ៍ផ្សេងទៀត"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"បិទ/បើក​ទិដ្ឋភាពរួម"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"សំឡេង និងរំញ័រនឹងមិន​រំខានដល់អ្នកឡើយ លើកលែងតែម៉ោងរោទ៍ ការរំលឹក ព្រឹត្តិការណ៍ និងអ្នកហៅទូរសព្ទដែលអ្នកបញ្ជាក់ប៉ុណ្ណោះ។ អ្នកនឹងនៅតែឮសំឡេងសកម្មភាពគ្រប់យ៉ាងដែលអ្នកលេងដដែល រួមទាំងតន្រ្តី វីដេអូ និងហ្គេម។"</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ប៉ះ​ម្ដង​ទៀត ដើម្បី​បើក"</string>
<string name="tap_again" msgid="1315420114387908655">"ចុច​ម្ដងទៀត"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"អូសឡើងលើ​ដើម្បីបើក"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ចុច ដើម្បីបើក"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"ចុចរូបដោះសោ ដើម្បីបើក"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"បានដោះសោ​ដោយប្រើមុខ។ សូមចុចរូបដោះសោ ដើម្បីបើក។"</string>
<string name="keyguard_retry" msgid="886802522584053523">"អូសឡើងលើ ដើម្បី​ព្យាយាម​ម្ដងទៀត"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"ដោះសោ ដើម្បីប្រើ NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ឧបករណ៍​នេះគឺជា​កម្មសិទ្ធិរបស់​ស្ថាប័ន​អ្នក"</string>
@@ -788,18 +779,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"បញ្ចូល"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"បាន​ណែនាំដោយ <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"បានចាក់សោ​ឧបករណ៍"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"បង្ហាញ និង​គ្រប់គ្រង​ឧបករណ៍ពី​អេក្រង់ចាក់សោឬ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"អ្នកអាចបញ្ចូល​ការគ្រប់គ្រង​សម្រាប់ឧបករណ៍​ខាងក្រៅ​របស់អ្នក​ទៅក្នុងអេក្រង់​ចាក់សោបាន។\n\nកម្មវិធី​ឧបករណ៍​របស់អ្នក​អាចអនុញ្ញាតឱ្យអ្នក​គ្រប់គ្រង​ឧបករណ៍​មួយចំនួន ដោយមិនចាំបាច់​ដោះសោ​ទូរសព្ទ ឬ​ថេប្លេត​របស់អ្នក។\n\nអ្នកអាចធ្វើការផ្លាស់ប្ដូរ​បានគ្រប់ពេល​នៅក្នុង​ការកំណត់។"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"គ្រប់គ្រង​ឧបករណ៍ពី​អេក្រង់ចាក់សោឬ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"អ្នកអាចគ្រប់គ្រង​ឧបករណ៍​មួយចំនួន ដោយមិនចាំបាច់​ដោះសោ​ទូរសព្ទ ឬថេប្លេត​របស់អ្នក។\n\nកម្មវិធី​ឧបករណ៍​របស់អ្នក​កំណត់ឧបករណ៍​ដែលអាចត្រូវបានគ្រប់គ្រង​តាមវិធីនេះ។"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"ទេ អរគុណ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"បាទ/ចាស"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"កូដ PIN មាន​អក្សរ ឬនិមិត្តសញ្ញា"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"ផ្ទៀងផ្ទាត់ <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"កូដ PIN មិន​ត្រឹមត្រូវ​"</string>
@@ -849,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ដើម្បីភ្ជាប់វគ្គនេះ សូមបើកកម្មវិធី។"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"កម្មវិធី​ដែលមិន​ស្គាល់"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"បញ្ឈប់ការភ្ជាប់"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"របៀបដែលការផ្សាយដំណើរការ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ការ​ផ្សាយ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"មនុស្សនៅជិត​អ្នកដែលមាន​ឧបករណ៍ប៊្លូធូស​ត្រូវគ្នា​អាចស្តាប់​មេឌៀ​ដែលអ្នកកំពុងផ្សាយបាន"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ដើម្បីស្តាប់​ការផ្សាយ​របស់អ្នក មនុស្សនៅជិត​ដែលមាន​ឧបករណ៍ប៊្លូធូស​ត្រូវគ្នា​អាចស្កេនកូដ QR របស់អ្នក ឬប្រើឈ្មោះ​ការផ្សាយ និងពាក្យសម្ងាត់​របស់អ្នក"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ឈ្មោះការផ្សាយ"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"ពាក្យសម្ងាត់"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"រក្សាទុក"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"លេខ​កំណែបង្កើត"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"បានចម្លងលេខ​កំណែបង្កើតទៅឃ្លីបបត។"</string>
<string name="basic_status" msgid="2315371112182658176">"បើកការសន្ទនា"</string>
@@ -939,8 +917,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"កម្មវិធីសកម្ម"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ឈប់"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"បានឈប់"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"រួចរាល់"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"បានចម្លង"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"ពី <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"ច្រានចោល UI ចម្លង"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 9eaf9aaf0103..00377995fdc3 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ಮುಖವನ್ನು ದೃಢೀಕರಿಸಲಾಗಿದೆ"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"ದೃಢೀಕರಿಸಲಾಗಿದೆ"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"ಪೂರ್ಣಗೊಳಿಸಲು ದೃಢೀಕರಿಸಿ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ದೃಢೀಕರಿಸಲಾಗಿದೆ"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ಪಿನ್ ಬಳಸಿ"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ಇದು ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳಿಗೆ ಹಾಗೂ ಸೇವೆಗಳಿಗೆ ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್ ಬಳಸುವುದಕ್ಕಾಗಿ ಇರುವ ಪ್ರವೇಶದ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ಇದು ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳಿಗೆ ಹಾಗೂ ಸೇವೆಗಳಿಗೆ ನಿಮ್ಮ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸುವುದಕ್ಕಾಗಿ ಇರುವ ಪ್ರವೇಶದ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ಇದು ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳಿಗೆ ಹಾಗೂ ಸೇವೆಗಳಿಗೆ ನಿಮ್ಮ ಕ್ಯಾಮರಾ ಅಥವಾ ಮೈಕ್ರೋಫೋನ್ ಬಳಸುವುದಕ್ಕಾಗಿ ಇರುವ ಪ್ರವೇಶದ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"ಮೈಕ್ರೋಫೋನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ಕ್ಯಾಮರಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"ಮೈಕ್ ಮತ್ತು ಕ್ಯಾಮರಾವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು, ಮೈಕ್ರೊಫೋನ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದಕ್ಕಾಗಿ ನಿಮ್ಮ ಸಾಧನದ ಗೌಪ್ಯತೆ ಸ್ವಿಚ್ ಅನ್ನು ಮೈಕ್ರೊಫೋನ್ ಆನ್ ಸ್ಥಾನಕ್ಕೆ ಸರಿಸಿ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಗೌಪ್ಯತೆ ಸ್ವಿಚ್ ಅನ್ನು ಕಂಡುಕೊಳ್ಳಲು ಸಾಧನದ ಕೈಪಿಡಿಯನ್ನು ನೋಡಿ."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು, ಕ್ಯಾಮರಾಗೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದಕ್ಕಾಗಿ ನಿಮ್ಮ ಸಾಧನದ ಗೌಪ್ಯತೆ ಸ್ವಿಚ್ ಅನ್ನು ಕ್ಯಾಮರಾ ಆನ್ ಸ್ಥಾನಕ್ಕೆ ಸರಿಸಿ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಗೌಪ್ಯತೆ ಸ್ವಿಚ್ ಅನ್ನು ಕಂಡುಕೊಳ್ಳಲು ಸಾಧನದ ಕೈಪಿಡಿಯನ್ನು ನೋಡಿ."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ಅವುಗಳ ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕಲು, ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದಕ್ಕಾಗಿ ನಿಮ್ಮ ಸಾಧನದ ಗೌಪ್ಯತೆ ಸ್ವಿಚ್ ಅನ್ನು ನಿರ್ಬಂಧವನ್ನು ತೆಗೆದುಹಾಕುವ ಸ್ಥಾನಕ್ಕೆ ಸರಿಸಿ. ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಗೌಪ್ಯತೆ ಸ್ವಿಚ್ ಅನ್ನು ಕಂಡುಕೊಳ್ಳಲು ಸಾಧನದ ಕೈಪಿಡಿಯನ್ನು ನೋಡಿ."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"ಮೈಕ್ರೊಫೋನ್ ಲಭ್ಯವಿದೆ"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ಕ್ಯಾಮರಾ ಲಭ್ಯವಿದೆ"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"ಮೈಕ್ರೊಫೋನ್ ಮತ್ತು ಕ್ಯಾಮರಾ ಲಭ್ಯವಿದೆ"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ಅನ್ಯ ಸಾಧನ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ಟಾಗಲ್ ನ ಅವಲೋಕನ"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"ಅಲಾರಾಂಗಳು, ಜ್ಞಾಪನೆಗಳು, ಈವೆಂಟ್‌ಗಳು ಹಾಗೂ ನೀವು ಸೂಚಿಸಿರುವ ಕರೆದಾರರನ್ನು ಹೊರತುಪಡಿಸಿ ಬೇರಾವುದೇ ಸದ್ದುಗಳು ಅಥವಾ ವೈಬ್ರೇಶನ್‌ಗಳು ನಿಮಗೆ ತೊಂದರೆ ನೀಡುವುದಿಲ್ಲ. ಹಾಗಿದ್ದರೂ, ನೀವು ಪ್ಲೇ ಮಾಡುವ ಸಂಗೀತ, ವೀಡಿಯೊಗಳು ಮತ್ತು ಆಟಗಳ ಆಡಿಯೊವನ್ನು ನೀವು ಕೇಳಿಸಿಕೊಳ್ಳುತ್ತೀರಿ."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ತೆರೆಯಲು ಮತ್ತೆ ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
<string name="tap_again" msgid="1315420114387908655">"ಪುನಃ ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ತೆರೆಯಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ತೆರೆಯಲು ಒತ್ತಿ"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ಬಳಸಲು ಅನ್‌ಲಾಕ್ ಮಾಡಿ"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ಈ ಸಾಧನವು ನಿಮ್ಮ ಸಂಸ್ಥೆಗೆ ಸೇರಿದೆ"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"ಸೇರಿಸಿ"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ಆ್ಯಪ್ ಸೂಚಿಸಿದೆ"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"ಸಾಧನ ಲಾಕ್ ಆಗಿದೆ"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಿಂದ ಸಾಧನಗಳನ್ನು ತೋರಿಸಬೇಕೇ ಹಾಗೂ ನಿಯಂತ್ರಿಸಬೇಕೇ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಬಾಹ್ಯ ಸಾಧನಗಳಿಗಾಗಿ ನೀವು ನಿಯಂತ್ರಣಗಳನ್ನು ಸೇರಿಸಬಹುದು.\n\nನಿಮ್ಮ ಫೋನ್ ಅಥವಾ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡದೆಯೇ ನಿಮ್ಮ ಕೆಲವು ಸಾಧನಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು ನಿಮ್ಮ ಸಾಧನ ಆ್ಯಪ್ ಅನುಮತಿಸಬಹುದು.\n\nಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನೀವು ಯಾವಾಗ ಬೇಕಾದರೂ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಬಹುದು."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಿಂದ ಸಾಧನಗಳನ್ನು ನಿಯಂತ್ರಿಸಬೇಕೇ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"ನಿಮ್ಮ ಫೋನ್ ಅಥವಾ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡದೆಯೇ ನಿಮ್ಮ ಕೆಲವು ಸಾಧನಗಳನ್ನು ನೀವು ನಿಯಂತ್ರಿಸಬಹುದು.\n\nಈ ವಿಧಾನದ ಮೂಲಕ ಯಾವ ಸಾಧನಗಳನ್ನು ನಿಯಂತ್ರಿಸಬಹುದು ಎಂಬುದನ್ನು ನಿಮ್ಮ ಸಾಧನದ ಆ್ಯಪ್ ನಿರ್ಧರಿಸುತ್ತದೆ."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"ಬೇಡ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ಹೌದು"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"ಪಿನ್ ಅಕ್ಷರಗಳು ಅಥವಾ ಸಂಕೇತಗಳನ್ನು ಒಳಗೊಂಡಿದೆ"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ಅನ್ನು ಪರಿಶೀಲಿಸಿ"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"ತಪ್ಪಾದ ಪಿನ್‌"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ಈ ಸೆಶನ್ ಕಾಸ್ಟ್ ಮಾಡಲು, ಆ್ಯಪ್ ಅನ್ನು ತೆರೆಯಿರಿ."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ಅಪರಿಚಿತ ಆ್ಯಪ್"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ಬಿತ್ತರಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ಪ್ರಸಾರವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ಪ್ರಸಾರ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ಹೊಂದಾಣಿಕೆಯಾಗುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಹೊಂದಿರುವ ಸಮೀಪದಲ್ಲಿರುವ ಜನರು ನೀವು ಪ್ರಸಾರ ಮಾಡುತ್ತಿರುವ ಮಾಧ್ಯಮವನ್ನು ಆಲಿಸಬಹುದು"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ನಿಮ್ಮ ಪ್ರಸಾರವನ್ನು ಆಲಿಸಲು, ಹೊಂದಾಣಿಕೆಯಾಗುವ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಹೊಂದಿರುವ ಸಮೀಪದಲ್ಲಿರುವ ಜನರು ನಿಮ್ಮ QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಬಹುದು ಅಥವಾ ನಿಮ್ಮ ಪ್ರಸಾರದ ಹೆಸರು ಹಾಗೂ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬಳಸಬಹುದು"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ಪ್ರಸಾರದ ಹೆಸರು"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"ಪಾಸ್‌ವರ್ಡ್"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"ಉಳಿಸಿ"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ಬಿಲ್ಡ್ ಸಂಖ್ಯೆ"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ಬಿಲ್ಡ್ ಸಂಖ್ಯೆಯನ್ನು ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ನಲ್ಲಿ ನಕಲಿಸಲಾಗಿದೆ."</string>
<string name="basic_status" msgid="2315371112182658176">"ಸಂಭಾಷಣೆಯನ್ನು ತೆರೆಯಿರಿ"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ಸಕ್ರಿಯ ಆ್ಯಪ್‌ಗಳು"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ನಿಲ್ಲಿಸಿ"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ನಿಲ್ಲಿಸಲಾಗಿದೆ"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ಮುಗಿದಿದೆ"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"ನಕಲಿಸಲಾಗಿದೆ"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> ನಿಂದ"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"UI ನಕಲನ್ನು ವಜಾಗೊಳಿಸಿ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index f7b0a402f215..24bff1791a79 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -22,7 +22,7 @@
<string name="app_label" msgid="4811759950673118541">"시스템 UI"</string>
<string name="battery_low_title" msgid="5319680173344341779">"절전 모드를 사용 설정하시겠습니까?"</string>
<string name="battery_low_description" msgid="3282977755476423966">"배터리가 <xliff:g id="PERCENTAGE">%s</xliff:g> 남았습니다. 절전 모드는 어두운 테마를 사용 설정하고 백그라운드 활동을 제한하며 알림을 지연시킵니다."</string>
- <string name="battery_low_intro" msgid="5148725009653088790">"절전 모드는 어두운 테마를 사용 설정하고 백그라운드 활동을 제한하며 알림을 지연시킵니다."</string>
+ <string name="battery_low_intro" msgid="5148725009653088790">"절전 모드는 어두운 테마를 사용하고 백그라운드 활동을 제한하며 알림을 지연시킵니다."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> 남았습니다."</string>
<string name="invalid_charger_title" msgid="938685362320735167">"USB로 충전할 수 없습니다."</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"기기와 함께 제공된 충전기를 사용하세요."</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"얼굴이 인증되었습니다."</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"확인함"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"완료하려면 확인을 탭하세요."</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"인증됨"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN 사용"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"마이크를 사용할 수 있는 모든 앱 및 서비스에 대해 액세스가 차단 해제됩니다."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"카메라를 사용할 수 있는 모든 앱 및 서비스에 대해 액세스가 차단 해제됩니다."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"카메라 또는 마이크를 사용할 수 있는 모든 앱 및 서비스에 대해 액세스가 차단 해제됩니다."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"마이크 차단됨"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"카메라 차단됨"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"마이크 및 카메라 차단됨"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"차단을 해제하려면 기기에서 마이크 개인 정보 보호 스위치를 켜짐 위치로 움직여 마이크 액세스를 허용하세요. 기기의 개인 정보 보호 스위치를 찾으려면 기기 설명서를 참고하세요."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"차단을 해제하려면 기기에서 카메라 개인 정보 보호 스위치를 켜짐 위치로 움직여 카메라 액세스를 허용하세요. 기기의 개인 정보 보호 스위치를 찾으려면 기기 설명서를 참고하세요."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"차단을 해제하려면 기기에서 개인 정보 보호 스위치를 차단 해제 위치로 움직여 액세스를 허용하세요. 기기의 개인 정보 보호 스위치를 찾으려면 기기 설명서를 참고하세요."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"마이크 사용 가능"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"카메라 사용 가능"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"마이크 및 카메라 사용 가능"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"기타 기기"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"최근 사용 버튼 전환"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"알람, 알림, 일정 및 지정한 발신자로부터 받은 전화를 제외한 소리와 진동을 끕니다. 음악, 동영상, 게임 등 재생하도록 선택한 소리는 정상적으로 들립니다."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"다시 탭하여 열기"</string>
<string name="tap_again" msgid="1315420114387908655">"다시 탭하세요."</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"위로 스와이프하여 열기"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"열려면 누르세요"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"위로 스와이프하여 다시 시도해 주세요"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"잠금 해제하여 NFC 사용"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"내 조직에 속한 기기입니다."</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"추가"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g>에서 제안"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"기기 잠김"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"잠금 화면에서 기기를 표시하고 제어하시겠습니까?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"외부 기기에 대한 제어 권한을 잠금 화면에 추가할 수 있습니다.\n\n기기 앱을 사용하여 휴대전화나 태블릿의 잠금을 해제하지 않고 해당 기기를 제어할 수도 있습니다.\n\n언제든지 설정에서 옵션을 변경할 수 있습니다."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"잠금 화면에서 기기를 제어하시겠습니까?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"휴대전화나 태블릿의 화면을 잠금 해제하지 않고 해당 기기를 제어할 수 있습니다.\n\n기기 앱에 이러한 방식으로 어떤 기기를 제어할 수 있는지 표시됩니다."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"아니요"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"예"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN에 문자나 기호가 포함됨"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> 확인"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"잘못된 PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"세션을 전송하려면 앱을 열어 주세요"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"알 수 없는 앱"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"전송 중지"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"브로드캐스팅 작동 원리"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"브로드캐스트"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"호환되는 블루투스 기기를 가진 근처의 사용자가 내가 브로드캐스트 중인 미디어를 수신 대기할 수 있습니다."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"호환되는 블루투스 기기를 가진 근처의 사람들이 QR 코드를 스캔하거나 브로드캐스트 이름과 비밀번호를 사용하여 내 브로드캐스트를 수신 대기할 수 있습니다."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"브로드캐스트 이름"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"비밀번호"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"저장"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"빌드 번호"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"빌드 번호가 클립보드에 복사되었습니다."</string>
<string name="basic_status" msgid="2315371112182658176">"대화 열기"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"활성 상태의 앱"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"중지"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"중지됨"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"완료"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"복사됨"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"복사한 위치: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"UI 복사 닫기"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index f44c69e0bf77..552822c5f1de 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -21,8 +21,8 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4811759950673118541">"Тутум UI"</string>
<string name="battery_low_title" msgid="5319680173344341779">"Батареяны үнөмдөгүч режими күйгүзүлсүнбү?"</string>
- <string name="battery_low_description" msgid="3282977755476423966">"Батареянын деңгээли: <xliff:g id="PERCENTAGE">%s</xliff:g>. Батареяны үнөмдөгүч режими Караңгы теманы күйгүзүп, фондогу аракеттерди чектеп, билдирмелерди кечиктирет."</string>
- <string name="battery_low_intro" msgid="5148725009653088790">"Батареяны үнөмдөгүч режими Караңгы теманы күйгүзүп, фондогу аракеттерди чектеп, билдирмелерди кечиктирет."</string>
+ <string name="battery_low_description" msgid="3282977755476423966">"Батареянын деңгээли: <xliff:g id="PERCENTAGE">%s</xliff:g>. Батареяны үнөмдөгүч режиминде караңгы тема күйгүзүлүп, фондогу процесстер чектелип, билдирмелер көрүнбөй калат."</string>
+ <string name="battery_low_intro" msgid="5148725009653088790">"Батареяны үнөмдөгүч режиминде караңгы тема күйгүзүлүп, фондогу процесстер чектелип, билдирмелер көрүнбөй калат."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> калды"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"USB аркылуу кубатталбай жатат"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Түзмөгүңүз менен келген кубаттагычты колдонуңуз"</string>
@@ -92,7 +92,7 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Экрандан жаздырылып алынган видео иштетилүүдө"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Экранды жаздыруу сеансы боюнча учурдагы билдирме"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Жаздырып баштайсызбы?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Жаздыруу учурунда Android системасы экраныңызда көрүнүп турган жана түзмөктө ойноп жаткан бардык купуя маалыматты жаздырып алат. Буга сырсөздөр, төлөм маалыматы, сүрөттөр, билдирүүлөр жана аудио файлдар кирет."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Сырсөздөр, төлөм маалыматы, сүрөттөр, билдирүүлөр жана аудиофайлдар сыяктуу экраныңызда көрүнүп турган жана түзмөктө ойноп жаткан бардык купуя маалымат жазылып калат."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Аудио жаздыруу"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Түзмөктөгү аудиолор"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Музыка, чалуулар жана шыңгырлар сыяктуу түзмөгүңүздөгү добуштар"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Жүздүн аныктыгы текшерилди"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Ырасталды"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Бүтүрүү үчүн \"Ырастоо\" баскычын басыңыз"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Аныктыгы текшерилди"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN кодду колдонуу"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Микрофонуңузду колдонууга уруксат алган бардык колдонмолор менен кызматтар бөгөттөн чыгат."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Камераны колдонууга уруксат алган бардык колдонмолор менен кызматтар бөгөттөн чыгат."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Камераңызды же микрофонуңузду колдонууга уруксат алган бардык колдонмолор менен кызматтар бөгөттөн чыгат."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофон бөгөттөлгөн"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камера бөгөттөлгөн"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофон менен камера бөгөттөлгөн"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Бөгөттөн чыгаруу үчүн түзмөктүн купуялык которгучун \"Микрофон күйүк\" абалына которуп, микрофонду колдонууга уруксат бериңиз. Түзмөктөгү купуялык которгучун табуу үчүн түзмөктүн нускамасын караңыз."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Бөгөттөн чыгаруу үчүн түзмөктүн купуялык которгучун \"Камера күйүк\" абалына которуп, камераны колдонууга уруксат бериңиз. Түзмөктөгү купуялык которгучун табуу үчүн түзмөктүн нускамасын караңыз."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Бөгөттөн чыгаруу үчүн түзмөктүн купуялык которгучун \"Бөгөттөн чыгаруу\" абалына которуп, камера менен микрофонду колдонууга уруксат бериңиз. Түзмөктөгү купуялык которгучун табуу үчүн түзмөктүн нускамасын караңыз."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофон жеткиликтүү"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камера жеткиликтүү"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофон жана камера жеткиликтүү"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Башка түзмөк"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Назар режимин өчүрүү/күйгүзүү"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Ойготкучтардан, эскертүүлөрдөн, жылнаамадагы иш-чараларды эстеткичтерден жана белгиленген байланыштардын чалууларынан тышкары башка үндөр жана дирилдөөлөр тынчыңызды албайт. Бирок ойнотулуп жаткан музыканы, видеолорду жана оюндарды мурдагыдай эле уга бересиз."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Ачуу үчүн кайра таптап коюңуз"</string>
<string name="tap_again" msgid="1315420114387908655">"Кайра таптап коюңуз"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Ачуу үчүн өйдө сүрүңүз"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Ачуу үчүн басыңыз"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Кайталоо үчүн экранды өйдө сүрүңүз"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC колдонуу үчүн түзмөктүн кулпусун ачыңыз"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Бул түзмөк уюмуңузга таандык"</string>
@@ -625,7 +619,7 @@
<string name="left_icon" msgid="5036278531966897006">"¨Солго¨ сүрөтчөсү"</string>
<string name="right_icon" msgid="1103955040645237425">"¨Оңго¨ сүрөтчөсү"</string>
<string name="drag_to_add_tiles" msgid="8933270127508303672">"Керектүү элементтерди сүйрөп келиңиз"</string>
- <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string>
+ <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string>
<string name="drag_to_remove_tiles" msgid="4682194717573850385">"Өчүрүү үчүн бул жерге сүйрөңүз"</string>
<string name="drag_to_remove_disabled" msgid="933046987838658850">"Сизге жок дегенде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> мозаика керек"</string>
<string name="qs_edit" msgid="5583565172803472437">"Түзөтүү"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Кошуу"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> сунуштайт"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Түзмөк кулпуланды"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Түзмөктөрдү кулпуланган экрандан көрүп, көзөмөлдөйсүзбү?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Тышкы түзмөктөрүңүздү көзөмөлдөө каражаттарын кулпу экранына кошо аласыз.\n\nТүзмөгүңүздүн колдонмосу айрым түзмөктөрдү телефонуңуздун же планшетиңиздин кулпусун ачпастан көзөмөлдөөгө уруксат бериши мүмкүн.\n\nКаалаган убакта Жөндөөлөрдөн өзгөртүүлөрдү жасай аласыз."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Түзмөктөрдү кулпуланган экрандан көзөмөлдөйсүзбү?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Айрым түзмөктөрдү телефонуңуздун же планшетиңиздин кулпусун ачпастан көзөмөлдөй аласыз.\n\nКайсы түзмөктөрдү ушул жол менен көзөмөлдөөгө болорун түзмөгүңүздүн колдонмосу аныктайт."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Жок, рахмат"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ооба"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN код тамгалардан же символдордон турат"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> түзмөгүн ырастаңыз"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN код туура эмес"</string>
@@ -845,24 +833,17 @@
<string name="media_output_dialog_multiple_devices" msgid="1093771040315422350">"<xliff:g id="COUNT">%1$d</xliff:g> түзмөк тандалды"</string>
<string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(ажыратылды)"</string>
<string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"Которулбай жатат. Кайталоо үчүн басыңыз."</string>
- <string name="media_output_dialog_pairing_new" msgid="9099497976087485862">"Жаңы түзмөктү жупташтыруу"</string>
+ <string name="media_output_dialog_pairing_new" msgid="9099497976087485862">"Жаңы түзмөк кошуу"</string>
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Бул сеансты тышкы экранга чыгаруу үчүн колдонмону ачыңыз."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Белгисиз колдонмо"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Тышкы экранга чыгарууну токтотуу"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Кабарлоо кантип иштейт"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Кабарлоо"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Шайкеш Bluetooth түзмөктөрү болгон жакын жердеги кишилер кабарлап жаткан медиаңызды уга алышат"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Кабарыңызды угуу үчүн жакын жердеги кишилер шайкеш Bluetooth түзмөктөрү менен QR кодун скандап же кабарлоонун аталышын жана сырсөзүн колдоно алышат"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Кабарлоонун аталышы"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Сырсөз"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Сактоо"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Курама номери"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Курама номери алмашуу буферине көчүрүлдү."</string>
<string name="basic_status" msgid="2315371112182658176">"Ачык сүйлөшүү"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Жигердүү колдонмолор"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Токтотуу"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Токтотулду"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Бүттү"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Көчүрүлдү"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> колдонмосунан"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Көчүрмөнү жабуу интерфейси"</string>
diff --git a/packages/SystemUI/res/values-land/config.xml b/packages/SystemUI/res/values-land/config.xml
index 062e33ce7e30..d800d49634d2 100644
--- a/packages/SystemUI/res/values-land/config.xml
+++ b/packages/SystemUI/res/values-land/config.xml
@@ -39,4 +39,7 @@
<!-- Max number of rows for power menu lite -->
<integer name="power_menu_lite_max_rows">2</integer>
+ <!-- Whether we use large screen shade header which takes only one row compared to QS header -->
+ <bool name="config_use_large_screen_shade_header">true</bool>
+
</resources>
diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml
index 609713bb2357..9d7b01c8d252 100644
--- a/packages/SystemUI/res/values-land/dimens.xml
+++ b/packages/SystemUI/res/values-land/dimens.xml
@@ -57,4 +57,6 @@
<dimen name="wallet_card_carousel_container_top_margin">24dp</dimen>
<dimen name="large_dialog_width">348dp</dimen>
+
+ <dimen name="qs_panel_padding_top">@dimen/qqs_layout_margin_top</dimen>
</resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 3a99a2c5b5d3..8108efdf3b91 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ພິສູດຢືນຢັນໃບໜ້າແລ້ວ"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"ຢືນຢັນແລ້ວ"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"ແຕະຢືນຢັນເພື່ອສຳເລັດ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ຮັບຮອງຄວາມຖືກຕ້ອງແລ້ວ"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ໃຊ້ PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ນີ້ຈະຍົກເລີກການບລັອກການເຂົ້າເຖິງແອັບ ແລະ ບໍລິການທັງໝົດທີ່ອະນຸຍາດໃຫ້ໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານ."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ນີ້ຈະຍົກເລີກການບລັອກການເຂົ້າເຖິງແອັບ ແລະ ບໍລິການທັງໝົດທີ່ອະນຸຍາດໃຫ້ໃຊ້ກ້ອງຖ່າຍຮູບຂອງທ່ານ."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ນີ້ຈະປົດບລັອກການເຂົ້າເຖິງແອັບ ແລະ ບໍລິການທັງໝົດທີ່ອະນຸຍາດໃຫ້ໃຊ້ກ້ອງຖ່າຍຮູບ ຫຼື ໄມໂຄຣໂຟນຂອງທ່ານ."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"ໄມໂຄຣໂຟນຖືກບລັອກໄວ້"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ກ້ອງຖືກບລັອກໄວ້"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"ບລັອກໄມ ແລະ ກ້ອງຖ່າຍຮູບແລ້ວ"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ເພື່ອປົດລັອກ, ໃຫ້ເລື່ອນສະວິດຄວາມເປັນສ່ວນຕົວຢູ່ອຸປະກອນຂອງທ່ານໄປໃສ່ຕຳແໜ່ງເປີດຢູ່ໄມໂຄຣໂຟນເພື່ອອະນຸຍາດສິດເຂົ້າເຖິງໄມໂຄຣໂຟນ. ກະລຸນາອ້າງອີງຄູ່ມືອຸປະກອນເພື່ອຊອກຫາສະວິດຄວາມເປັນສ່ວນຕົວຢູ່ອຸປະກອນຂອງທ່ານ."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ເພື່ອປົດລັອກ, ໃຫ້ເລື່ອນສະວິດຄວາມເປັນສ່ວນຕົວຢູ່ອຸປະກອນຂອງທ່ານໄປໃສ່ຕຳແໜ່ງເປີດຢູ່ກ້ອງຖ່າຍຮູບເພື່ອອະນຸຍາດສິດເຂົ້າເຖິງກ້ອງຖ່າຍຮູບ. ກະລຸນາອ້າງອີງຄູ່ມືອຸປະກອນເພື່ອຊອກຫາສະວິດຄວາມເປັນສ່ວນຕົວຢູ່ອຸປະກອນຂອງທ່ານ."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ເພື່ອປົດລັອກພວກມັນ, ໃຫ້ເລື່ອນສະວິດຄວາມເປັນສ່ວນຕົວຢູ່ອຸປະກອນຂອງທ່ານໄປໃສ່ຕຳແໜ່ງປົດລັອກເພື່ອອະນຸຍາດສິດເຂົ້າເຖິງ. ກະລຸນາອ້າງອີງຄູ່ມືອຸປະກອນເພື່ອຊອກຫາສະວິດຄວາມເປັນສ່ວນຕົວຢູ່ອຸປະກອນຂອງທ່ານ."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"ສາມາດໃຊ້ໄມໂຄຣໂຟນໄດ້"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ສາມາດໃຊ້ກ້ອງຖ່າຍຮູບໄດ້"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"ສາມາດໃຊ້ໄມໂຄຣໂຟນ ແລະ ກ້ອງຖ່າຍຮູບໄດ້"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ອຸປະກອນອື່ນໆ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ສະຫຼັບພາບຮວມ"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"ທ່ານຈະບໍ່ໄດ້ຮັບການລົບກວນຈາກສຽງ ແລະ ການສັ່ນເຕືອນ, ຍົກເວັ້ນໃນເວລາໂມງປຸກດັງ, ມີການແຈ້ງເຕືອນ ຫຼື ມີສາຍໂທເຂົ້າຈາກຜູ້ໂທທີ່ທ່ານລະບຸໄວ້. ທ່ານອາດຍັງຄົງໄດ້ຍິນຫາກທ່ານເລືອກຫຼິ້ນເພງ, ວິດີໂອ ແລະ ເກມ."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ແຕະ​ອີກ​ຄັ້ງ​ເພື່ອ​ເປີດ"</string>
<string name="tap_again" msgid="1315420114387908655">"ແຕະອີກເທື່ອໜຶ່ງ"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ປັດຂຶ້ນເພື່ອເປີດ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ກົດເພື່ອເປີດ"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"ປັດຂຶ້ນເພື່ອລອງໃໝ່"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"ປົດລັອກເພື່ອໃຊ້ NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ອຸປະກອນນີ້ເປັນຂອງອົງການທ່ານ"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"ເພີ່ມ"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"ແນະນຳໂດຍ <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"ອຸປະກອນຖືກລັອກໄວ້"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"ສະແດງ ແລະ ຄວບຄຸມອຸປະກອນຈາກໜ້າຈໍລັອກບໍ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ທ່ານສາມາດເພີ່ມການຄວບຄຸມສຳລັບອຸປະກອນພາຍນອກຂອງທ່ານໄປໃສ່ໜ້າຈໍລັອກໄດ້.\n\nແອັບອຸປະກອນຂອງທ່ານອາດອະນຸຍາດໃຫ້ທ່ານຄວບຄຸມອຸປະກອນບາງຢ່າງໄດ້ໂດຍບໍ່ຕ້ອງປົດລັອກໂທລະສັບ ຫຼື ແທັບເລັດຂອງທ່ານ.\n\nທ່ານສາມາດປ່ຽນແປງຕອນໃດກໍໄດ້ໃນການຕັ້ງຄ່າ."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"ຄວບຄຸມອຸປະກອນຈາກໜ້າຈໍລັອກບໍ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"ທ່ານສາມາດຄວບຄຸມອຸປະກອນບາງຢ່າງໄດ້ໂດຍບໍ່ຕ້ອງປົດລັອກໂທລະສັບ ຫຼື ແທັບເລັດຂອງທ່ານ.\n\nແອັບອຸປະກອນຂອງທ່ານຈະກຳນົດວ່າອຸປະກອນໃດສາມາດຖືກຄວບຄຸມດ້ວຍວິທີນີ້ໄດ້."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"ບໍ່, ຂອບໃຈ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ແມ່ນແລ້ວ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN ປະກອບມີຕົວອັກສອນ ຫຼື ສັນຍາລັກ"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"ຢັ້ງຢືນ <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN ບໍ່ຖືກຕ້ອງ"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ເພື່ອສົ່ງສັນຍານເຊດຊັນນີ້, ກະລຸນາເປີດແອັບ."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ແອັບທີ່ບໍ່ຮູ້ຈັກ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ຢຸດການສົ່ງສັນຍານ"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ການອອກອາກາດເຮັດວຽກແນວໃດ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ອອກອາກາດ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ຄົນທີ່ຢູ່ໃກ້ທ່ານທີ່ມີອຸປະກອນ Bluetooth ທີ່ເຂົ້າກັນໄດ້ຈະສາມາດຟັງມີເດຍທີ່ທ່ານກຳລັງອອກອາກາດຢູ່ໄດ້"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ເພື່ອຟັງການອອກອາກາດຂອງທ່ານ, ຄົນທີ່ຢູ່ໃກ້ຄຽງທີ່ມີອຸປະກອນ Bluetooth ທີ່ເຂົ້າກັນໄດ້ຈະສາມາດສະແກນລະຫັດ QR ຂອງທ່ານ ຫຼື ໃຊ້ຊື່ ແລະ ລະຫັດຜ່ານການອອກອາກາດຂອງທ່ານໄດ້"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ຊື່ການອອກອາກາດ"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"ລະຫັດຜ່ານ"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"ບັນທຶກ"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ໝາຍເລກສ້າງ"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ສຳເນົາໝາຍເລກສ້າງໄປໃສ່ຄລິບບອດແລ້ວ."</string>
<string name="basic_status" msgid="2315371112182658176">"ເປີດການສົນທະນາ"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ແອັບທີ່ນຳໃຊ້ຢູ່"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ຢຸດ"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ຢຸດແລ້ວ"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ແລ້ວໆ"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"ສຳເນົາແລ້ວ"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"ຈາກ <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"ປິດການສຳເນົາສ່ວນຕິດຕໍ່ຜູ້ໃຊ້ໄວ້"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 1293105e535a..619d256dcb9b 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Veidas autentifikuotas"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Patvirtinta"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Paliesk. „Patvirtinti“, kad užbaigtumėte"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Atrakinta pagal veidą. Pasp. atrak. pikt., kad tęstumėte."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentifikuota"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Naudoti PIN kodą"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Naudoti atrakinimo piešinį"</string>
@@ -296,24 +295,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Tai atlikus visų programų ir paslaugų prieigos blokavimas panaikinamas ir joms leidžiama naudoti mikrofoną."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Tai atlikus visų programų ir paslaugų prieigos blokavimas panaikinamas ir joms leidžiama naudoti fotoaparatą."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Tai atlikus visų programų ir paslaugų prieigos blokavimas panaikinamas ir joms leidžiama naudoti fotoaparatą ar mikrofoną."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofonas užblokuotas"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Vaizdo kamera užblokuota"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofonas ir vaizdo kamera užblokuoti"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Jei norite panaikinti blokavimą, įrenginyje nustatykite privatumo jungiklį į padėtį „Mikrofonas įjungtas“ ir leiskite pasiekti mikrofoną. Kad surastumėte privatumo jungiklį įrenginyje, žr. įrenginio vadovą."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Jei norite panaikinti blokavimą, įrenginyje nustatykite privatumo jungiklį į padėtį „Vaizdo kamera įjungta“ ir leiskite pasiekti vaizdo kamerą. Kad surastumėte privatumo jungiklį įrenginyje, žr. įrenginio vadovą."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Jei norite panaikinti jų blokavimą, įrenginyje nustatykite privatumo jungiklį į blokavimo panaikinimo padėtį ir leiskite prieigą. Kad surastumėte privatumo jungiklį įrenginyje, žr. įrenginio vadovą."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofonas pasiekiamas"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Vaizdo kamera pasiekiama"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofonas ir vaizdo kamera pasiekiami"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Kitas įrenginys"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Perjungti apžvalgą"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Jūsų netrikdys garsai ir vibravimas, išskyrus nurodytų signalų, priminimų, įvykių ir skambintojų garsus. Vis tiek girdėsite viską, ką pasirinksite leisti, įskaitant muziką, vaizdo įrašus ir žaidimus."</string>
@@ -324,7 +314,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Palieskite dar kartą, kad atidarytumėte"</string>
<string name="tap_again" msgid="1315420114387908655">"Palieskite dar kartą"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Perbraukite aukštyn, kad atidarytumėte"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Paspauskite, kad atidarytumėte"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Paspauskite atrakinimo piktogramą, kad atidarytumėte"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Atrakinta pagal veidą. Pasp. atr. pikt., kad atidarytumėte."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Jei norite bandyti dar kartą, perbraukite aukštyn"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Norėdami naudoti NFC, atrakinkite"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Šis įrenginys priklauso jūsų organizacijai"</string>
@@ -800,18 +791,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Pridėti"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Siūlo „<xliff:g id="APP">%s</xliff:g>“"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Įrenginys užrakintas"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Rodyti ir valdyti įrenginius užrakinimo ekrane?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Galite pridėti išorinių įrenginių valdiklių užrakinimo ekrane.\n\nĮrenginio programoje gali būti leidžiama valdyti tam tikrus įrenginius neatrakinus telefono ar planšetinio kompiuterio.\n\nGalite bet kada pakeisti „Nustatymų“ skiltyje."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Valdyti įrenginius užrakinimo ekrane?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Galite valdyti tam tikrus išorinius įrenginius neatrakinę telefono ar planšetinio kompiuterio.\n\nĮrenginio programoje nustatoma, kuriuos įrenginius galima valdyti tokiu būdu."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ne, ačiū"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Taip"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN kodą sudaro raidės arba simboliai"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> patvirtinimas"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Netinkamas PIN kodas"</string>
@@ -861,20 +846,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Jei norite perduoti šį seansą, atidarykite programą."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nežinoma programa"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Sustabdyti perdavimą"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kaip veikia transliacija"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transliacija"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Netoliese esantys žmonės, turintys suderinamus „Bluetooth“ įrenginius, gali klausyti jūsų transliuojamos medijos"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Kad galėtų klausyti jūsų transliacijos, netoliese esantys žmonės, turintys suderinamus „Bluetooth“ įrenginius, gali nuskaityti jūsų QR kodą arba naudoti jūsų transliacijos pavadinimą ir slaptažodį."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Transliacijos pavadinimas"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Slaptažodis"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Išsaugoti"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Versijos numeris"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Versijos numeris nukopijuotas į iškarpinę."</string>
<string name="basic_status" msgid="2315371112182658176">"Atidaryti pokalbį"</string>
@@ -953,8 +931,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktyvios programos"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Sustabdyti"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Sustabdyta"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Atlikta"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Nukopijuota"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Iš „<xliff:g id="APPNAME">%1$s</xliff:g>“"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Atsisakyti kopijavimo NS"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 2147bee0b1bf..62f06f72d2c4 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Seja autentificēta"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Apstiprināts"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Lai pabeigtu, pieskarieties Apstiprināt"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentifikācija veikta"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Izmantot PIN"</string>
@@ -294,24 +294,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Visas lietotnes un pakalpojumi, kurām ir atļauts izmantot mikrofonu, varēs tam piekļūt."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Visas lietotnes un pakalpojumi, kuriem ir atļauts izmantot kameru, varēs tai piekļūt."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Visas lietotnes un pakalpojumi, kuriem ir atļauts izmantot kameru vai mikrofonu, varēs tiem piekļūt."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofons ir bloķēts"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera ir bloķēta"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofons un kamera ir bloķēti"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Lai atbloķētu mikrofonu un atļautu piekļuvi tam, ierīcē pavirziet konfidencialitātes slēdzi uz mikrofonu ieslēgtā pozīcijā. Lai atrastu konfidencialitātes slēdzi savā ierīcē, skatiet ierīces rokasgrāmatu."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Lai atbloķētu kameru un atļautu piekļuvi tai, ierīcē pavirziet konfidencialitātes slēdzi uz kameru ieslēgtā pozīcijā. Lai atrastu konfidencialitātes slēdzi savā ierīcē, skatiet ierīces rokasgrāmatu."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Lai atbloķētu mikrofonu un kameru un atļautu piekļuvi tiem, ierīcē pavirziet konfidencialitātes slēdzi uz atbloķētu pozīciju. Lai atrastu konfidencialitātes slēdzi savā ierīcē, skatiet ierīces rokasgrāmatu."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofons ir pieejams."</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera ir pieejama."</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofons un kamera ir pieejami."</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Cita ierīce"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Pārskata pārslēgšana"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Jūs netraucēs skaņas un vibrācija, izņemot signālus, atgādinājumus, pasākumus un zvanītājus, ko būsiet norādījis. Jūs joprojām dzirdēsiet atskaņošanai izvēlētos vienumus, tostarp mūziku, videoklipus un spēles."</string>
@@ -322,7 +313,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Pieskarieties vēlreiz, lai atvērtu"</string>
<string name="tap_again" msgid="1315420114387908655">"Pieskarieties vēlreiz"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Velciet augšup, lai atvērtu"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Nospiediet, lai atvērtu"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Velciet augšup, lai mēģinātu vēlreiz"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Atbloķējiet ierīci, lai izmantotu NFC."</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Šī ierīce pieder jūsu organizācijai."</string>
@@ -794,18 +788,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Pievienot"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Ieteica: <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Ierīce ir bloķēta"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vai skatīt un kontrolēt ierīces no bloķēšanas ekrāna?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Varat pievienot bloķēšanas ekrānam vadīklas, ar kurām kontrolēt savas ārējās ierīces.\n\nJūsu ierīces lietotne var ļaut jums kontrolēt dažas ierīces, neatbloķējot tālruni vai planšetdatoru.\n\nVarat jebkurā laikā veikt izmaiņas iestatījumos."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Vai kontrolēt ierīces no bloķēšanas ekrāna?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Varat kontrolēt dažas ierīces, neatbloķējot tālruni vai planšetdatoru.\n\nJūsu ierīces lietotne nosaka, kuras ierīces var šādi kontrolēt."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nē, paldies"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Jā"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN ietver burtus vai simbolus."</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifikācija: <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Nepareizs PIN"</string>
@@ -855,20 +843,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Lai apraidītu šo sesiju, lūdzu, atveriet lietotni."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nezināma lietotne"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Apturēt apraidi"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kā darbojas apraide"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Apraide"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Tuvumā esošās personas ar saderīgām Bluetooth ierīcēm var klausīties jūsu apraidīto multivides saturu."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Lai klausītos jūsu apraidi, tuvumā esošās personas ar saderīgām Bluetooth ierīcēm var skenēt kvadrātkodu vai izmantot apraides nosaukumu un paroli."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Apraides nosaukums"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Parole"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Saglabāt"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Versijas numurs"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Versijas numurs ir kopēts starpliktuvē."</string>
<string name="basic_status" msgid="2315371112182658176">"Atvērt sarunu"</string>
@@ -946,8 +927,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktīvās lietotnes"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Apturēt"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Apturēta"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gatavs"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Nokopēts"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"No lietotnes <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Noraidīt ar kopēšanu saistīto lietotāja saskarnes elementu"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index e9dcdaca2a87..195af88a21a0 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Лицето е проверено"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Потврдено"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Допрете „Потврди“ за да се заврши"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Отклучено со лице. Притиснете ја иконата за отклучување за да продолжите."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Проверена"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Користи PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Користи шема"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ова ќе го одблокира пристапот за сите апликации и услуги на кои им е дозволено користење на микрофонот."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ова ќе го одблокира пристапот за сите апликации и услуги на кои им е дозволено користење на камерата."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Ова ќе го одблокира пристапот за сите апликации и услуги на кои им е дозволено користење на камерата или микрофонот."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофонот е блокиран"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камерата е блокирана"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофонот и камерата се блокирани"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"За да одблокирате, поместете го прекинувачот за приватност на уредот во положбата „Микрофонот е вклучен“ што ќе дозволи пристап до него. Погледнете во упатството за уредот за да го најдете прекинувачот за приватност на вашиот уред."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"За да одблокирате, поместете го прекинувачот за приватност на уредот во положбата „Камерата е вклучена“ што ќе дозволи пристап до неа. Погледнете во упатството за уредот за да го најдете прекинувачот за приватност на вашиот уред."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"За да ги одблокирате, поместете го прекинувачот за приватност на уредот во положбата „Одблокирано“ што ќе дозволи пристап. Погледнете во упатството за уредот за да го најдете прекинувачот за приватност на вашиот уред."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофонот е достапен"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камерата е достапна"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофонот и камерата се достапни"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Друг уред"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Вклучи/исклучи преглед"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Нема да ве вознемируваат звуци и вибрации, освен од аларми, потсетници, настани и повикувачи што ќе ги наведете. Сѐ уште ќе слушате сѐ што ќе изберете да пуштите, како музика, видеа и игри."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Допрете повторно за да се отвори"</string>
<string name="tap_again" msgid="1315420114387908655">"Допрете повторно"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Повлечете за да отворите"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Притиснете за да отворите"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Притиснете ја иконата за отклучување за да отворите"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Отклучено со лице. Притиснете ја иконата за отклучување за да отворите."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Повлечете нагоре за да се обидете повторно"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Отклучете за да користите NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Уредов е во сопственост на организацијата"</string>
@@ -788,18 +779,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Додај"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Предложено од <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Уредот е заклучен"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Да се прикажуваат и контролираат уреди од заклучениот екран?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Може да додадете контроли за надворешните уреди на заклучениот екран.\n\nАпликацијата на уредот може да ви дозволи да контролирате одредени уреди без да го отклучувате телефонот или таблетот.\n\nМоже да извршите промени во секое време во „Поставки“."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Да се контролираат уреди од заклучен екран?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Може да контролирате одредени уреди без отклучување на телефонот или таблетот.\n\nАпликацијата на вашиот уред одредува кои уреди може да се контролираат вака."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Не, фала"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Да"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-кодот содржи букви или симболи"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Потврдете го <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Погрешен PIN"</string>
@@ -849,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"За да ја емитувате сесијава, отворете ја апликацијата."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Непозната апликација"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Сопри со емитување"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Како функционира емитувањето"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Емитување"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Луѓето во ваша близина со компатибилни уреди со Bluetooth може да ги слушаат аудиозаписите што ги емитувате"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"За да го слушаат вашето емитување, луѓето во близина со компатибилни уреди со Bluetooth може да го скенираат QR-кодот или да ги користат називот и лозинката на емитувањето"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Назив на емитувањето"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Лозинка"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Зачувај"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Број на верзија"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Бројот на верзијата е копиран во привремената меморија."</string>
<string name="basic_status" msgid="2315371112182658176">"Започни разговор"</string>
@@ -939,8 +917,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Активни апликации"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Запри"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Запрено"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Готово"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Копирано"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Од <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Отфрли го корисничкиот интерфејс за копирање"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 85a5eca27abb..4b4b098c4307 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"മുഖം പരിശോധിച്ചുറപ്പിച്ചു"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"സ്ഥിരീകരിച്ചു"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"പൂർത്തിയാക്കാൻ സ്ഥിരീകരിക്കുക ടാപ്പ് ചെയ്യൂ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"മുഖം ഉപയോഗിച്ച് അൺലോക്ക് ചെയ്‌തു. തുടരാൻ അൺലോക്ക് ഐക്കൺ അമർത്തുക."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"പരിശോധിച്ചുറപ്പിച്ചു"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"പിൻ ഉപയോഗിക്കുക"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"പാറ്റേൺ ഉപയോഗിക്കുക"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കാൻ അനുവദിച്ചിരിക്കുന്ന എല്ലാ ആപ്പുകൾക്കും സേവനങ്ങൾക്കുമുള്ള ആക്‌സസ് ഇത് അൺബ്ലോക്ക് ചെയ്യുന്നു."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"നിങ്ങളുടെ ക്യാമറ ഉപയോഗിക്കാൻ അനുവദിച്ചിരിക്കുന്ന എല്ലാ ആപ്പുകൾക്കും സേവനങ്ങൾക്കുമുള്ള ആക്‌സസ് ഇത് അൺബ്ലോക്ക് ചെയ്യുന്നു."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"നിങ്ങളുടെ ക്യാമറയോ മൈക്രോഫോണോ ഉപയോഗിക്കാൻ അനുവദിച്ചിരിക്കുന്ന എല്ലാ ആപ്പുകൾക്കും സേവനങ്ങൾക്കുമുള്ള ആക്‌സസ് ഇത് അൺബ്ലോക്ക് ചെയ്യുന്നു."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"മൈക്രോഫോൺ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ക്യാമറ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"മൈക്കും ക്യാമറയും ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"അൺബ്ലോക്ക് ചെയ്യാൻ, മൈക്രോഫോൺ ആക്സസ് അനുവദിക്കുന്നതിന്, മൈക്രോഫോൺ ഓണാണ് എന്ന സ്ഥാനത്തേക്ക് നിങ്ങളുടെ ഉപകരണത്തിലെ സ്വകാര്യത മാറ്റുക. നിങ്ങളുടെ ഉപകരണത്തിലെ സ്വകാര്യതാ സ്വിച്ച് കണ്ടെത്താൻ ഉപകരണ മാന്വൽ പരിശോധിക്കുക."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"അൺബ്ലോക്ക് ചെയ്യാൻ, ക്യാമറാ ആക്സസ് അനുവദിക്കുന്നതിന്, ക്യാമറ ഓണാണ് എന്ന സ്ഥാനത്തേക്ക് നിങ്ങളുടെ ഉപകരണത്തിലെ സ്വകാര്യത മാറ്റുക. നിങ്ങളുടെ ഉപകരണത്തിലെ സ്വകാര്യതാ സ്വിച്ച് കണ്ടെത്താൻ ഉപകരണ മാന്വൽ പരിശോധിക്കുക."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"അവ അൺബ്ലോക്ക് ചെയ്യാൻ, ആക്സസ് അനുവദിക്കുന്നതിന്, അൺബ്ലോക്ക് ചെയ്തു എന്ന സ്ഥാനത്തേക്ക് നിങ്ങളുടെ ഉപകരണത്തിലെ സ്വകാര്യത മാറ്റുക. നിങ്ങളുടെ ഉപകരണത്തിലെ സ്വകാര്യതാ സ്വിച്ച് കണ്ടെത്താൻ ഉപകരണ മാന്വൽ പരിശോധിക്കുക."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"മൈക്രോഫോൺ ലഭ്യമാണ്"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ക്യാമറ ലഭ്യമാണ്"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"മൈക്രോഫോണും ക്യാമറയും ലഭ്യമാണ്"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"മറ്റ് ഉപകരണം"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"അവലോകനം മാറ്റുക"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"നിങ്ങൾ സജ്ജീകരിച്ച അലാറങ്ങൾ, റിമൈൻഡറുകൾ, ഇവന്റുകൾ, കോളർമാർ എന്നിവയിൽ നിന്നുള്ള ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളുമൊഴികെ മറ്റൊന്നും നിങ്ങളെ ശല്യപ്പെടുത്തുകയില്ല. സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയുൾപ്പെടെ പ്ലേ ചെയ്യുന്നതെന്തും നിങ്ങൾക്ക് ‌തുടർന്നും കേൾക്കാൻ കഴിയും."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"തുറക്കുന്നതിന് വീണ്ടും ടാപ്പുചെയ്യുക"</string>
<string name="tap_again" msgid="1315420114387908655">"വീണ്ടും ടാപ്പ് ചെയ്യുക"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"തുറക്കാൻ മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്യുക"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"തുറക്കാൻ അമർത്തുക"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"തുറക്കാൻ അൺലോക്ക് ഐക്കൺ അമർത്തുക"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"മുഖം ഉപയോഗിച്ച് അൺലോക്ക് ചെയ്‌തു. തുറക്കാൻ അൺലോക്ക് ഐക്കൺ അമർത്തുക."</string>
<string name="keyguard_retry" msgid="886802522584053523">"വീണ്ടും ശ്രമിക്കാൻ മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ഉപയോഗിക്കാൻ അൺലോക്ക് ചെയ്യുക"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ഈ ഉപകരണം നിങ്ങളുടെ സ്ഥാപനത്തിന്റേതാണ്"</string>
@@ -843,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ഈ സെഷൻ കാസ്റ്റ് ചെയ്യാൻ, ആപ്പ് തുറക്കുക."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"അജ്ഞാതമായ ആപ്പ്"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"കാസ്റ്റ് ചെയ്യുന്നത് നിർത്തുക"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ബ്രോഡ്‌കാസ്‌റ്റ് എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത്"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ബ്രോഡ്‌കാസ്റ്റ്"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"അനുയോജ്യമായ Bluetooth ഉപകരണങ്ങളോടെ സമീപമുള്ള ആളുകൾക്ക് നിങ്ങൾ ബ്രോഡ്‌കാസ്‌റ്റ് ചെയ്യുന്ന മീഡിയ കേൾക്കാനാകും"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"നിങ്ങളുടെ ബ്രോഡ്‌കാസ്‌റ്റ് കേൾക്കാൻ, അനുയോജ്യമായ Bluetooth ഉപകരണങ്ങളോടെ സമീപമുള്ള ആളുകൾക്ക് നിങ്ങളുടെ QR കോഡ് സ്കാൻ ചെയ്യുകയോ നിങ്ങളുടെ ബ്രോഡ്‌കാസ്‌റ്റിന്റെ പേരും പാസ്‌വേഡും ഉപയോഗിക്കുകയോ ചെയ്യാം"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ബ്രോഡ്‌കാസ്‌റ്റിന്റെ പേര്"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"പാസ്‌വേഡ്"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"സംരക്ഷിക്കുക"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ബിൽഡ് നമ്പർ"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ക്ലിപ്പ്ബോർഡിലേക്ക് ബിൽഡ് നമ്പർ പകർത്തി."</string>
<string name="basic_status" msgid="2315371112182658176">"സംഭാഷണം തുറക്കുക"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 33e859da5acd..5f2cb81434ea 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Царайг баталгаажууллаа"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Баталгаажсан"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Дуусгахын тулд баталгаажуулахыг товших"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Царайгаар түгжээг тайлсан. Үргэлжлүүлэхийн тулд түгжээг тайлах дүрс тэмдэг дээр дараарай."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Баталгаажуулагдсан"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ПИН ашиглах"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Хээ ашиглах"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Энэ нь таны микрофоныг ашиглах зөвшөөрөлтэй бүх апп болон үйлчилгээний хандалтыг блокоос гаргана."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Энэ нь таны камерыг ашиглах зөвшөөрөлтэй бүх апп болон үйлчилгээний хандалтыг блокоос гаргана."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Энэ нь таны камер эсвэл микрофоныг ашиглах зөвшөөрөлтэй бүх апп болон үйлчилгээний хандалтыг блокоос гаргана."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофоныг блоклосон байна"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камерыг блоклосон байна"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофон &amp; камерыг блоклосон"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Блокоос гаргахын тулд төхөөрөмжийнхөө нууцлалын сэлгүүрийг микрофоныг асаах байрлал руу зөөж, микрофонд хандахыг зөвшөөрнө үү. Төхөөрөмжийнхөө нууцлалын сэлгүүрийн байрлалыг илрүүлэхийн тулд төхөөрөмжийн гарыг авлагыг уншина уу."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Блокоос гаргахын тулд төхөөрөмжийнхөө нууцлалын сэлгүүрийг камерыг асаах байрлал руу зөөж, камерт хандахыг зөвшөөрнө үү. Төхөөрөмжийнхөө нууцлалын сэлгүүрийн байрлалыг илрүүлэхийн тулд төхөөрөмжийн гарыг авлагыг уншина уу."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Тэдгээрийг блокоос гаргахын тулд төхөөрөмжийнхөө нууцлалын сэлгүүрийг блокоос гаргах байрлал руу зөөж, хандахыг зөвшөөрнө үү. Төхөөрөмжийнхөө нууцлалын сэлгүүрийн байрлалыг илрүүлэхийн тулд төхөөрөмжийн гарыг авлагыг уншина уу."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофон боломжтой байна"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камер боломжтой байна"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофон болон камер боломжтой байна"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Бусад төхөөрөмж"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Тоймыг асаах/унтраах"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Танд сэрүүлэг, сануулга, арга хэмжээ, таны сонгосон дуудлага илгээгчээс бусад дуу, чичиргээ саад болохгүй. Та хөгжим, видео, тоглоом зэрэг тоглуулахыг хүссэн бүх зүйлээ сонсох боломжтой хэвээр байна."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Нээхийн тулд дахин товшино уу"</string>
<string name="tap_again" msgid="1315420114387908655">"Дaхин товшино уу"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Нээхийн тулд дээш шударна уу"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Нээхийн тулд дарна уу"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Нээхийн тулд түгжээг тайлах дүрс тэмдэг дээр дараарай"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Царайгаар түгжээг тайлсан. Нээхийн тулд түгжээг тайлах дүрс тэмдэг дээр дараарай."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Дахин оролдохын тулд дээш шударна уу"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC-г ашиглахын тулд түгжээг тайлна уу"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Энэ төхөөрөмж танай байгууллагад харьяалагддаг"</string>
@@ -843,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Энэ үйл явдлыг дамжуулахын тулд аппыг нээнэ үү."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Үл мэдэгдэх апп"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Дамжуулахыг зогсоох"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Нэвтрүүлэлт хэрхэн ажилладаг вэ?"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Нэвтрүүлэлт"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Тохиромжтой Bluetooth төхөөрөмжүүдтэй таны ойролцоох хүмүүс таны нэвтрүүлж буй медиаг сонсох боломжтой"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Таны нэвтрүүлэлтийг сонсохын тулд тохиромжтой Bluetooth төхөөрөмжүүдтэй ойролцоох хүмүүс таны QR кодыг скан хийх эсвэл нэвтрүүлэлтийн тань нэр болон нууц үгийг ашиглах боломжтой"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Нэвтрүүлэлтийн нэр"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Нууц үг"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Хадгалах"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Хийцийн дугаар"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Хийцийн дугаарыг түр санах ойд хуулсан."</string>
<string name="basic_status" msgid="2315371112182658176">"Харилцан яриаг нээх"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 6acecee64e08..96ba72864f74 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -92,7 +92,7 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"स्क्रीन रेकॉर्डिंग प्रोसेस सुरू"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रेकॉर्ड सत्रासाठी सुरू असलेली सूचना"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"रेकॉर्डिंग सुरू करायचे आहे का?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"रेकॉर्डिंग करताना, Android सिस्टम तुमच्या स्क्रीनवर दिसणारी किंवा तुमच्या डिव्हाइसवर प्ले केलेली कोणतीही संवेदनशील माहिती कॅप्चर करू शकते. यात पासवर्ड, पेमेंट माहिती, फोटो, मेसेज आणि ऑडिओचा समावेश आहे."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"रेकॉर्डिंग करताना, Android सिस्टीम तुमच्या स्क्रीनवर दिसणारी किंवा तुमच्या डिव्हाइसवर प्ले केलेली कोणतीही संवेदनशील माहिती कॅप्चर करू शकते. यात पासवर्ड, पेमेंट माहिती, फोटो, मेसेज आणि ऑडिओचा समावेश आहे."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"ऑडिओ रेकॉर्ड करा"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"डिव्हाइस ऑडिओ"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"तुमच्या डिव्हाइसवरील आवाज जसे की, संगीत, कॉल आणि रिंगटोन"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"चेहरा ऑथेंटिकेशन केलेला आहे"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"निश्चित केले"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"पूर्ण करण्यासाठी खात्री करा वर टॅप करा"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ऑथेंटिकेशन केलेले"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"पिन वापरा"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"हे तुमचा मायक्रोफोन वापरण्याची परवानगी असलेल्या सर्व ॲप्स आणि सेवांसाठी अ‍ॅक्सेस अनब्लॉक करते."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"हे तुमचा कॅमेरा वापरण्याची परवानगी असलेल्या सर्व ॲप्स आणि सेवांसाठी अ‍ॅक्सेस अनब्लॉक करते."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"हे तुमचा कॅमेरा आणि मायक्रोफोन वापरण्याची परवानगी असलेल्या सर्व ॲप्स व सेवांसाठी अ‍ॅक्सेस अनब्लॉक करते."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"मायक्रोफोन ब्लॉक केलेला आहे"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"कॅमेरा ब्लॉक केलेला आहे"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"माइक &amp; कॅमेरा या गोष्टी ब्लॉक केलेल्या आहेत"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"अनब्लॉक करण्यासाठी, तुमच्या डिव्हाइसवरील प्रायव्हसी स्विच हा मायक्रोफोन ॲक्सेस करण्याची अनुमती देण्यासाठी, मायक्रोफोन सुरू करण्याच्या स्थानावर आणा. तुमच्या डिव्हाइसवरील प्रायव्हसी स्विच शोधण्यासाठी, डिव्हाइस मॅन्युअल पहा."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"अनब्लॉक करण्यासाठी, तुमच्या डिव्हाइसवरील प्रायव्हसी स्विच हा कॅमेरा ॲक्सेस करण्याची अनुमती देण्यासाठी, कॅमेरा सुरू करण्याच्या स्थानावर आणा. तुमच्या डिव्हाइसवरील प्रायव्हसी स्विच शोधण्यासाठी, डिव्हाइस मॅन्युअल पहा."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"त्यांना अनब्लॉक करण्यासाठी, तुमच्या डिव्हाइसवरील प्रायव्हसी स्विच हा अ‍ॅक्सेसला अनुमती देण्यासाठी अनब्लॉक केलेल्या स्थानावर आणा. तुमच्या डिव्हाइसवरील प्रायव्हसी स्विच शोधण्यासाठी, डिव्हाइस मॅन्युअल पहा."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"मायक्रोफोन उपलब्ध आहे"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"कॅमेरा उपलब्ध आहे"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"मायक्रोफोन आणि कॅमेरा या गोष्टी उपलब्ध आहेत"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"इतर डिव्हाइस"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"अवलोकन टॉगल करा."</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"अलार्म, रिमाइंडर, इव्‍हेंट आणि तुम्ही निश्चित केलेल्या कॉलर व्यतिरिक्त तुम्हाला कोणत्याही आवाज आणि कंपनांचा व्यत्त्यय आणला जाणार नाही. तरीही तुम्ही प्ले करायचे ठरवलेले कोणतेही संगीत, व्हिडिओ आणि गेमचे आवाज ऐकू शकतात."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"उघडण्यासाठी पुन्हा टॅप करा"</string>
<string name="tap_again" msgid="1315420114387908655">"पुन्हा टॅप करा"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"उघडण्यासाठी वर स्वाइप करा"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"उघडण्यासाठी दाबा"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"पुन्हा प्रयत्न करण्यासाठी वर स्‍वाइप करा"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC वापरण्यासाठी स्क्रीन अनलॉक करा"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"हे डिव्हाइस तुमच्या संस्थेचे आहे"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"जोडा"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ने सुचवले आहे"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"डिव्हाइस लॉक आहे"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"लॉक स्क्रीनवरून डिव्हाइस दाखवायचे आणि नियंत्रित करायचे का?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"तुम्ही तुमच्या बाह्य डिव्हाइससाठी लॉक स्क्रीनवर नियंत्रणे जोडू शकता.\n\nतुमचे डिव्हाइस अ‍ॅप तुम्हाला तुमचा फोन किंवा टॅबलेट अनलॉक न करता काही डिव्हाइस नियंत्रित करण्याची अनुमती देऊ शकते.\n\nतुम्ही सेटिंग्ज मध्ये कधीही बदल करू शकता."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"लॉक स्क्रीनवरून डिव्हाइस नियंत्रित करायची का?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"तुमचा फोन किंवा टॅबलेट अनलॉक न करता तुम्ही काही डिव्हाइस नियंत्रित करू शकता.\n\nतुमचे डिव्हाइस अ‍ॅप अशा प्रकारे कोणते डिव्हाइस नियंत्रित केले जाऊ शकतात हे निर्धारित करते."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"नाही, नको"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"होय"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"पिनमध्ये अक्षरे किंवा चिन्हे आहेत"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ची पडताळणी करा"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"चुकीचा पिन"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"हे सेशन कास्ट करण्यासाठी, कृपया ॲप उघडा."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"अज्ञात अ‍ॅप"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"कास्ट करणे थांबवा"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ब्रॉडकास्टिंग कसे काम करते"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ब्रॉडकास्ट करा"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"कंपॅटिबिल ब्लूटूथ डिव्‍हाइस असलेले तुमच्या जवळपासचे लोक हे तुम्ही ब्रॉडकास्ट करत असलेला मीडिया ऐकू शकतात"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"तुमचे ब्रॉडकास्ट ऐकण्यासाठी, कंपॅटिबल ब्लूटूथ डिव्‍हाइस असलेले जवळपासचे लोक तुमचा QR कोड स्कॅन करू शकतात किंवा तुमच्या ब्रॉडकास्टचे नाव आणि पासवर्ड वापरू शकतात"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ब्रॉडकास्टचे नाव"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"पासवर्ड"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"सेव्ह करा"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"बिल्ड नंबर"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"बिल्ड नंबर क्लिपबोर्डवर कॉपी केला."</string>
<string name="basic_status" msgid="2315371112182658176">"संभाषण उघडा"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"अ‍ॅक्टिव्ह ॲप्स"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"थांबवा"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"थांबवले"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"पूर्ण झाले"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"कॉपी केले"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> वरून"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"कॉपी केलेले UI डिसमिस करा"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 1aa203995ab1..0240e9cd7c00 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -21,7 +21,7 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4811759950673118541">"UI Sistem"</string>
<string name="battery_low_title" msgid="5319680173344341779">"Hidupkan Penjimat Bateri?"</string>
- <string name="battery_low_description" msgid="3282977755476423966">"Anda mempunyai <xliff:g id="PERCENTAGE">%s</xliff:g> baki bateri. Penjimat Bateri menghidupkan Tema gelap, mengehadkan aktiviti latar dan menangguhkan pemberitahuan."</string>
+ <string name="battery_low_description" msgid="3282977755476423966">"Paras bateri anda ialah <xliff:g id="PERCENTAGE">%s</xliff:g>. Penjimat Bateri menghidupkan Tema gelap, mengehadkan aktiviti latar dan menangguhkan pemberitahuan."</string>
<string name="battery_low_intro" msgid="5148725009653088790">"Penjimat Bateri menghidupkan Tema gelap, mengehadkan aktiviti latar dan menangguhkan pemberitahuan."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> yang tinggal"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Tidak dapat mengecas melalui USB"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Wajah disahkan"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Disahkan"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Ketik Sahkan untuk menyelesaikan"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Disahkan"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Gunakan PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan mikrofon anda."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan kamera anda."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Tindakan ini menyahsekat akses bagi semua apl dan perkhidmatan yang dibenarkan untuk menggunakan kamera atau mikrofon anda."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon disekat"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera disekat"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon &amp; kamera disekat"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Untuk nyahsekat, gerakkan suis privasi pada peranti anda kepada mikrofon di kedudukan untuk membenarkan akses mikrofon. Rujuk manual peranti untuk mencari suis privasi pada peranti anda."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Untuk nyahsekat, gerakkan suis privasi pada peranti anda kepada kamera di kedudukan untuk membenarkan akses kamera. Rujuk manual peranti untuk mencari suis privasi pada peranti anda."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Untuk nyahsekat mikrofon, gerakkan suis privasi pada peranti anda ke kedudukan yang dinyahsekat untuk membenarkan akses. Rujuk manual peranti untuk mencari suis privasi pada peranti anda."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon tersedia"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera tersedia"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon dan kamera tersedia"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Peranti lain"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Togol Ikhtisar"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Anda tidak akan diganggu oleh bunyi dan getaran, kecuali daripada penggera, peringatan, acara dan pemanggil yang anda tetapkan. Anda masih mendengar item lain yang anda pilih untuk dimainkan termasuk muzik, video dan permainan."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Ketik lagi untuk membuka"</string>
<string name="tap_again" msgid="1315420114387908655">"Ketik sekali lagi"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Leret ke atas untuk buka"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Tekan untuk buka"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Leret ke atas untuk mencuba lagi"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Buka kunci untuk menggunakan NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Peranti ini milik organisasi anda"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Tambah"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Dicadangkan oleh <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Peranti dikunci"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Tunjukkan dan kawal peranti daripada skrin kunci?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Anda boleh menambah kawalan untuk peranti luaran anda pada skrin kunci.\n\nApl peranti anda mungkin membenarkan anda mengawal sesetengah peranti tanpa membuka kunci telefon atau tablet anda.\n\nAnda boleh membuat perubahan pada bila-bila masa dalam Tetapan."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Kawal peranti daripada skrin kunci?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Anda boleh mengawal sesetengah peranti tanpa membuka kunci telefon atau tablet anda.\n\nApl peranti anda menentukan peranti yang boleh dikawal dengan cara ini."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Tidak perlu"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ya"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN mengandungi huruf atau simbol"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Sahkan <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN salah"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Untuk menghantar sesi ini, sila buka apl."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Apl yang tidak diketahui"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Berhenti menghantar"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Cara siaran berfungsi"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Siarkan"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Orang berdekatan anda dengan peranti Bluetooth yang serasi boleh mendengar media yang sedang anda siarkan"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Untuk mendengar siaran anda, orang berdekatan dengan peranti Bluetooth yang serasi boleh mengimbas kod QR anda atau menggunakan nama siaran dan kata laluan anda"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nama Siaran"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Kata Laluan"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Simpan"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Nombor binaan"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Nombor binaan disalin ke papan keratan."</string>
<string name="basic_status" msgid="2315371112182658176">"Buka perbualan"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Apl aktif"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Berhenti"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Dihentikan"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Selesai"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Disalin"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Daripada <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ketepikan penyalinan UI"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 48ba1d1d350b..2ee78500344d 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -92,7 +92,7 @@
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"ဖန်သားပြင်ရိုက်ကူးနေသည်"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ဖန်သားပြင် ရိုက်ကူးသည့် စက်ရှင်အတွက် ဆက်တိုက်လာနေသော အကြောင်းကြားချက်"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"စတင် ရိုက်ကူးမလား။"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"ရိုက်ကူးနေစဉ်အတွင်း Android စနစ်သည် သင့်မျက်နှာပြင်ပေါ်တွင် မြင်နိုင်သော သို့မဟုတ် သင့်စက်ပစ္စည်းတွင် ဖွင့်ထားသော အရေးကြီးသည့် အချက်အလက်မှန်သမျှကို ရိုက်ကူးနိုင်သည်။ ၎င်းတွင် စကားဝှက်များ၊ ငွေပေးချေမှု အချက်အလက်၊ ဓာတ်ပုံများ၊ မက်ဆေ့ဂျ်များနှင့် အသံများ ပါဝင်သည်။"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"ရိုက်ကူးနေစဉ်အတွင်း Android စနစ်သည် သင့်ဖန်သားပြင်ပေါ်တွင် မြင်နိုင်သော (သို့) သင့်စက်ပစ္စည်းတွင် ဖွင့်ထားသော အရေးကြီးသည့် အချက်အလက်များကို ရိုက်ယူနိုင်သည်။ ၎င်းတွင် စကားဝှက်၊ ငွေပေးချေမှု အချက်အလက်၊ ဓာတ်ပုံ၊ မက်ဆေ့ဂျ်နှင့် အသံများ ပါဝင်သည်။"</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"အသံဖမ်းရန်"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"စက်ပစ္စည်းအသံ"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"သီချင်း၊ ဖုန်းခေါ်ဆိုမှုနှင့် ဖုန်းမြည်သံကဲ့သို့ သင့်စက်ပစ္စည်းမှ အသံ"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"မျက်နှာ အထောက်အထားစိစစ်ပြီးပြီ"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"အတည်ပြုပြီးပြီ"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"အပြီးသတ်ရန်အတွက် \'အတည်ပြုရန်\' ကို တို့ပါ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"အထောက်အထားစိစစ်ပြီးပြီ"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ပင်နံပါတ်သုံးရန်"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"၎င်းက သင့်မိုက်ခရိုဖုန်းသုံးရန် ခွင့်ပြုထားသော အက်ပ်နှင့် ဝန်ဆောင်မှုအားလုံးအတွက် သုံးခွင့်ကို ပြန်ဖွင့်ပေးသည်။"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"၎င်းက သင့်ကင်မရာသုံးရန် ခွင့်ပြုထားသော အက်ပ်နှင့် ဝန်ဆောင်မှုအားလုံးအတွက် သုံးခွင့်ကို ပြန်ဖွင့်ပေးသည်။"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"၎င်းက သင့်ကင်မရာ (သို့) မိုက်ခရိုဖုန်းသုံးရန် ခွင့်ပြုထားသော အက်ပ်နှင့် ဝန်ဆောင်မှုအားလုံးအတွက် သုံးခွင့်ကို ပြန်ဖွင့်ပေးသည်။"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"မိုက်ခရိုဖုန်းကို ပိတ်ထားသည်"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ကင်မရာကို ပိတ်ထားသည်"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"မိုက်နှင့်ကင်မရာကို ပိတ်ထားသည်"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ပြန်ဖွင့်ရန်အတွက် မိုက်ခရိုဖုန်းသုံးခွင့်ပေးရန် သင့်စက်ပေါ်ရှိ ကိုယ်ရေးအချက်အလက်လုံခြုံမှု ခလုတ်ကို မိုက်ခရိုဖုန်းဖွင့်သည့် အနေအထားသို့ ရွှေ့ရမည်။ သင့်စက်ပေါ်ရှိ ကိုယ်ရေးအချက်အလက်လုံခြုံမှု ခလုတ်ရှာရန် စက်ပစ္စည်းလက်စွဲစာအုပ်ကို ကိုးကားနိုင်သည်။"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ပြန်ဖွင့်ရန်အတွက် ကင်မရာသုံးခွင့်ပေးရန် သင့်စက်ပေါ်ရှိ ကိုယ်ရေးအချက်အလက်လုံခြုံမှု ခလုတ်ကို ကင်မရာဖွင့်သည့် အနေအထားသို့ ရွှေ့ရမည်။ သင့်စက်ပေါ်ရှိ ကိုယ်ရေးအချက်အလက်လုံခြုံမှု ခလုတ်ရှာရန် စက်ပစ္စည်းလက်စွဲစာအုပ်ကို ကိုးကားနိုင်သည်။"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"၎င်းတို့ပြန်ဖွင့်ရန်အတွက် သုံးခွင့်ပေးရန် သင့်စက်ပေါ်ရှိ ကိုယ်ရေးအချက်အလက်လုံခြုံမှု ခလုတ်ကို ပြန်ဖွင့်သည့် အနေအထားသို့ ရွှေ့ရမည်။ သင့်စက်ပေါ်ရှိ ကိုယ်ရေးအချက်အလက်လုံခြုံမှု ခလုတ်ရှာရန် စက်ပစ္စည်းလက်စွဲစာအုပ်ကို ကိုးကားနိုင်သည်။"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"မိုက်ခရိုဖုန်း သုံးနိုင်သည်"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ကင်မရာ သုံးနိုင်သည်"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"မိုက်ခရိုဖုန်းနှင့် ကင်မရာ သုံးနိုင်သည်"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"အခြားစက်ပစ္စည်း"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ဖွင့်၊ ပိတ် အနှစ်ချုပ်"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"နှိုးစက်သံ၊ သတိပေးချက်အသံများ၊ ပွဲစဉ်သတိပေးသံများနှင့် သင်ခွင့်ပြုထားသူများထံမှ ဖုန်းခေါ်မှုများမှလွဲ၍ အခြားအသံများနှင့် တုန်ခါမှုများက သင့်ကို အနှောင့်အယှက်ပြုမည် မဟုတ်ပါ။ သို့သော်လည်း သီချင်း၊ ဗီဒီယိုနှင့် ဂိမ်းများအပါအဝင် သင်ကရွေးချယ်ဖွင့်ထားသည့် အရာတိုင်း၏ အသံကိုမူ ကြားနေရဆဲဖြစ်ပါလိမ့်မည်။"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ဖွင့်ရန် ထပ်ပြီး ပုတ်ပါ"</string>
<string name="tap_again" msgid="1315420114387908655">"ထပ်တို့ပါ"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ဖွင့်ရန် အပေါ်သို့ပွတ်ဆွဲပါ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ဖွင့်ရန် နှိပ်ပါ"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"ထပ်စမ်းကြည့်ရန် အပေါ်သို့ပွတ်ဆွဲပါ"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ကို အသုံးပြုရန် လော့ခ်ဖွင့်ပါ"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ဤစက်ကို သင့်အဖွဲ့အစည်းက ပိုင်ဆိုင်သည်"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"ထည့်ရန်"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> က အကြံပြုထားသည်"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"စက်ကိုလော့ခ်ချထားသည်"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"လော့ခ်မျက်နှာပြင်တွင် စက်ပစ္စည်းများကြည့်ရှုပြီး ထိန်းချုပ်မလား။"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"လော့ခ်မျက်နှာပြင်တွင် ပြင်ပစက်များအတွက် ထိန်းချုပ်မှုများ ထည့်နိုင်သည်။\n\nသင့်စက်ပစ္စည်းအက်ပ်က အချို့စက်များကို ဖုန်း (သို့) တက်ဘလက် လော့ခ်ဖွင့်ရန်မလိုဘဲ သုံးခွင့်ပေးနိုင်သည်။\n\nဆက်တင်များ၌ အချိန်မရွေး ပြောင်းလဲပြင်ဆင်နိုင်သည်။"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"လော့ခ်မျက်နှာပြင်တွင် စက်ပစ္စည်းများ ထိန်းချုပ်မလား။"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"အချို့စက်များကို ဖုန်း (သို့) တက်ဘလက် လော့ခ်ဖွင့်ရန်မလိုဘဲ ထိန်းချုပ်နိုင်သည်။\n\nဤနည်းလမ်းအတိုင်း ထိန်းချုပ်နိုင်မည့်စက်များကို သင့်စက်ပစ္စည်းအက်ပ်က ဆုံးဖြတ်သည်။"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"မလိုပါ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Yes"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"ပင်နံပါတ်တွင် စာလုံး သို့မဟုတ် သင်္ကေတများပါဝင်သည်"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ကို အတည်ပြုခြင်း"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"ပင်နံပါတ် မှားနေသည်"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"အက်ပ်ဖွင့်ပြီး ဤစက်ရှင်ကို ကာစ်လုပ်နိုင်သည်။"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"အမည်မသိ အက်ပ်"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ကာစ် ရပ်ရန်"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ထုတ်လွှင့်မှုဆောင်ရွက်ပုံ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ထုတ်လွှင့်ခြင်း"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"အနီးရှိတွဲသုံးနိုင်သော ဘလူးတုသ်သုံးစက် အသုံးပြုသူများက သင်ထုတ်လွှင့်နေသော မီဒီယာကို နားဆင်နိုင်သည်"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"သင်၏ထုတ်လွှင့်မှုကို နားဆင်ရန် အနီးရှိတွဲသုံးနိုင်သော ဘလူးတုသ်သုံးစက် အသုံးပြုသူများက သင်၏ QR ကုဒ်ကို ရှာနိုင်သည် (သို့) သင်၏ထုတ်လွှင့်မှုအမည်နှင့် စကားဝှက်ကို သုံးနိုင်သည်"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ထုတ်လွှင့်မှုအမည်"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"စကားဝှက်"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"သိမ်းရန်"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"တည်ဆောက်မှုနံပါတ်"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"တည်ဆောက်မှုနံပါတ်ကို ကလစ်ဘုတ်သို့ မိတ္တူကူးပြီးပါပြီ။"</string>
<string name="basic_status" msgid="2315371112182658176">"စကားဝိုင်းကို ဖွင့်ရန်"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ပွင့်နေသည့်အက်ပ်များ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ရပ်ရန်"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ရပ်ထားသည်"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ပြီးပြီ"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"ကူးပြီးပါပြီ"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> ထံမှ"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"UI မိတ္တူမကူးတော့ရန်"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index fc9fd8beb334..7b8115750601 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Ansiktet er autentisert"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Bekreftet"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Trykk på Bekreft for å fullføre"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentisert"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Bruk PIN-kode"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Dette opphever blokkeringen av tilgang for alle apper og tjenester som har tillatelse til å bruke mikrofonen."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Dette opphever blokkeringen av tilgang for alle apper og tjenester som har tillatelse til å bruke kameraet."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Dette opphever blokkeringen av tilgang for alle apper og tjenester som har tillatelse til å bruke kameraet eller mikrofonen."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofonen er blokkert"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kameraet er blokkert"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofonen og kameraet er blokkert"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"For å oppheve blokkeringen, sett personvernbryteren på enheten til mikrofon på-posisjonen for å gi mikrofontilgang. Se i bruksanvisningen for enheten for å finne personvernbryteren på den."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"For å oppheve blokkeringen, sett personvernbryteren på enheten til kamera på-posisjonen for å gi kameratilgang. Se i bruksanvisningen for enheten for å finne personvernbryteren på den."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"For å oppheve blokkeringen av dem, sett personvernbryteren på enheten til opphevet blokkering-posisjonen for å gi tilgang. Se i bruksanvisningen for enheten for å finne personvernbryteren på den."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon er tilgjengelig"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera er tilgjengelig"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon og kamera er tilgjengelig"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Annen enhet"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Slå oversikten av eller på"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Du blir ikke forstyrret av lyder og vibrasjoner, med unntak av alarmer, påminnelser, aktiviteter og oppringere du angir. Du kan fremdeles høre alt du velger å spille av, for eksempel musikk, videoer og spill."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Trykk på nytt for å åpne"</string>
<string name="tap_again" msgid="1315420114387908655">"Trykk igjen"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Sveip opp for å åpne"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Trykk for å åpne"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Sveip opp for å prøve igjen"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Lås opp for å bruke NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Denne enheten tilhører organisasjonen din"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Legg til"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Foreslått av <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Enheten er låst"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vil du se og kontrollere enheter fra låseskjermen?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Du kan legge til kontroller for de eksterne enhetene dine på låseskjermen.\n\nEnhetsappen kan la deg kontrollere noen enheter uten å låse opp telefonen eller nettbrettet.\n\nDu kan når som helst endre innstillingene."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Vil du kontrollere enheter fra låseskjermen?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Du kan kontrollere enkelte enheter uten å låse opp telefonen eller nettbrettet.\n\nEnhetsappen fastslår hvilke enheter som kan kontrolleres på denne måten."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nei takk"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-koden inneholder bokstaver eller symboler"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Bekreft <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Feil PIN-kode"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"For å caste denne økten, åpne appen."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ukjent app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Stopp castingen"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Slik fungerer kringkasting"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Kringkasting"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Folk i nærheten med kompatible Bluetooth-enheter kan lytte til mediene du kringkaster"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"For å lytte til kringkastingen din kan folk i nærheten med kompatible Bluetooth-enheter skanne QR-koden din eller bruke navnet og passordet til kringkastingen din."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Kringkastingsnavn"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Passord"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Lagre"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Delversjonsnummer"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Delversjonsnummeret er kopiert til utklippstavlen."</string>
<string name="basic_status" msgid="2315371112182658176">"Åpen samtale"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktive apper"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stopp"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Stoppet"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Ferdig"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopiert"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Fra <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Lukk kopi-UI"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index fe66b9438aca..f0d2601bd431 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -26,9 +26,9 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> बाँकी"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"USB मार्फत चार्ज गर्न सकिँदैन"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"तपाईंको यन्त्रसँगै आएको चार्जर प्रयोग गर्नुहोस्‌"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"ब्याट्री सेभर सक्रिय गर्ने हो?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"ब्याट्री सेभर अन गर्ने हो?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"ब्याट्री सेभरका बारेमा"</string>
- <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"खोल्नुहोस्"</string>
+ <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"अन गर्नुहोस्"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"अन गर्नुहोस्"</string>
<string name="battery_saver_dismiss_action" msgid="7199342621040014738">"पर्दैन"</string>
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"स्वत:घुम्ने स्क्रिन"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"अनुहार प्रमाणीकरण गरियो"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"पुष्टि भयो"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"पूरा गर्नका लागि पुष्टि गर्नुहोस् नामक विकल्पमा ट्याप गर्नुहोस्"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"प्रमाणीकरण गरियो"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN प्रयोग गर्नुहोस्"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"यसो गर्नुभयो भने माइक्रोफोन प्रयोग गर्ने अनुमति दिइएका सबै एप तथा सेवाहरूका लागि सो अनुमति अनब्लक गरिन्छ।"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"यसो गर्नुभयो भने क्यामेरा प्रयोग गर्ने अनुमति दिइएका सबै एप तथा सेवाहरूका लागि सो अनुमति अनब्लक गरिन्छ।"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"यसो गर्नुभयो भने क्यामेरा वा माइक्रोफोन प्रयोग गर्ने अनुमति दिइएका सबै एप तथा सेवाहरूका लागि सो अनुमति अनब्लक गरिन्छ।"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"माइक्रोफोन ब्लक गरिएको छ"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"क्यामेरा ब्लक गरिएको छ"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"माइक र क्यामेरा ब्लक गरिएको छ"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"माइक्रोफोन अनब्लक गर्न आफ्नो डिभाइसको गोपनीयताको स्विच टगल गरी \"माइक्रोफोन अन छ\" बनाएर माइक्रोफोन प्रयोग गर्ने अनुमति दिनुहोस्। आफ्नो डिभाइसमा गोपनीयताको स्विच भेट्टाउन डिभाइसको म्यानुअल हेर्नुहोस्।"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"क्यामेरा अनब्लक गर्न आफ्नो डिभाइसको गोपनीयताको स्विच टगल गरी \"क्यामेरा अन छ\" बनाएर क्यामेरा प्रयोग गर्ने अनुमति दिनुहोस्। आफ्नो डिभाइसमा गोपनीयताको स्विच भेट्टाउन डिभाइसको म्यानुअल हेर्नुहोस्।"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"माइक्रोफोन र क्यामेरा अनब्लक गर्न आफ्नो डिभाइसको गोपनीयताको स्विच टगल गरी \"अनब्लक गरिएको छ\" बनाएर माइक्रोफोन र क्यामेरा प्रयोग गर्ने अनुमति दिनुहोस्। आफ्नो डिभाइसमा गोपनीयताको स्विच भेट्टाउन डिभाइसको म्यानुअल हेर्नुहोस्।"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"माइक्रोफोन उपलब्ध छ"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"क्यामेरा उपलब्ध छ"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"माइक्रोफोन र क्यामेरा उपलब्ध छन्"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"अर्को डिभाइड"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"परिदृश्य टगल गर्नुहोस्"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"तपाईंलाई अलार्म, रिमाइन्डर, कार्यक्रम र तपाईंले निर्दिष्ट गर्नुभएका कलरहरू बाहेकका ध्वनि र कम्पनहरूले बाधा पुऱ्याउने छैनन्। तपाईंले अझै सङ्गीत, भिडियो र खेलहरू लगायत आफूले प्ले गर्न छनौट गरेका जुनसुकै कुरा सुन्न सक्नुहुनेछ।"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"खोल्न पुनः ट्याप गर्नुहोस्"</string>
<string name="tap_again" msgid="1315420114387908655">"फेरि ट्याप गर्नुहोस्"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"खोल्न माथितिर स्वाइप गर्नुहोस्"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"अनलक गर्न प्रेस गर्नुहोस्"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"फेरि प्रयास गर्न माथितिर स्वाइप गर्नुहोस्"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC प्रयोग गर्न स्क्रिन अनलक गर्नुहोस्"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"यो डिभाइस तपाईंको सङ्गठनको स्वामित्वमा छ"</string>
@@ -704,7 +698,7 @@
<string name="mobile_data" msgid="4564407557775397216">"मोबाइल डेटा"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<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="8912204177152950766">"<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="5389597396308001471">"Wi‑Fi निष्क्रिय छ"</string>
+ <string name="wifi_is_off" msgid="5389597396308001471">"Wi‑Fi अफ छ"</string>
<string name="bt_is_off" msgid="7436344904889461591">"ब्लुटुथ निष्क्रिय छ"</string>
<string name="dnd_is_off" msgid="3185706903793094463">"बाधा नपुर्‍याउनुहोस् नामक विकल्प निष्क्रिय छ"</string>
<string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"कुनै स्वचालित नियमले बाधा नपुऱ्याउनुहोस् नामक विकल्पलाई सक्रियो गऱ्यो (<xliff:g id="ID_1">%s</xliff:g>)।"</string>
@@ -723,7 +717,7 @@
<string name="slice_permission_allow" msgid="6340449521277951123">"अनुमति दिनुहोस्"</string>
<string name="slice_permission_deny" msgid="6870256451658176895">"अस्वीकार गर्नु…"</string>
<string name="auto_saver_title" msgid="6873691178754086596">"ब्याट्री सेभरको समयतालिका बनाउन ट्याप गर्नुहोस्"</string>
- <string name="auto_saver_text" msgid="3214960308353838764">"ब्याट्री सकिने सम्भावना भएमा सक्रिय गर्नुहोस्"</string>
+ <string name="auto_saver_text" msgid="3214960308353838764">"ब्याट्री सकिने सम्भावना भएमा अन गर्नुहोस्"</string>
<string name="no_auto_saver_action" msgid="7467924389609773835">"पर्दैन धन्यवाद"</string>
<string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"एपहरूले तपाईंको <xliff:g id="TYPES_LIST">%s</xliff:g> प्रयोग गर्दै छन्‌।"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"थप्नुहोस्"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ले सिफारिस गरेको"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"यन्त्र लक गरिएको छ"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"लक स्क्रिनमै डिभाइसहरू देखाउने र लक स्क्रिनबाटै ती डिभाइसहरू नियन्त्रण गर्ने हो?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"तपाईं आफ्ना बाह्य डिभाइसहरूका कन्ट्रोलहरू लक स्क्रिनमा हाल्न सक्नुहुन्छ।\n\nतपाईंको डिभाइसको एपले तपाईंलाई आफ्नो फोन वा ट्याब्लेट अनलक नगरिकनै केही डिभाइसहरू नियन्त्रण गर्ने अनुमति दिन सक्छ।\n\nतपाईं जुनसुकै बेला सेटिङमा गई यी कुराहरू बदल्न सक्नुहुन्छ।"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"लक स्क्रिनबाटै डिभाइसहरू नियन्त्रण गर्ने हो?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"तपाईं आफ्नो फोन वा ट्याब्लेट अनलक नगरिकनै केही डिभाइसहरू नियन्त्रण गर्न सक्नुहुन्छ।\n\nतपाईंको डिभाइस एपले यस तरिकाले कुन कुन डिभाइस नियन्त्रण गर्न सकिन्छ भन्ने कुरा निर्धारण गर्छ।"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"पर्दैन"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"अँ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN मा अक्षर वा चिन्हहरू समाविष्ट हुन्छन्"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> पुष्टि गर्नुहोस्"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN मिलेन"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"यो सत्र कास्ट गर्न चाहनुहुन्छ भने कृपया एप खोल्नुहोस्।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"अज्ञात एप"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"कास्ट गर्न छाड्नुहोस्"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"प्रसारण गर्ने सुविधाले कसरी काम गर्छ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"प्रसारण"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"कम्प्याटिबल ब्लुटुथ डिभाइस भएका नजिकैका मान्छेहरू तपाईंले प्रसारण गरिरहनुभएको मिडिया सुन्न सक्छन्"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"कम्प्याटिबल ब्लुटुथ डिभाइस भएका नजिकैका मान्छेहरू तपाईंको QR कोड स्क्यान गरेर वा तपाईंको प्रसारणको नाम र पासवर्ड हालेर तपाईंको प्रसारण सुन्न सक्छन्"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"प्रसारणको नाम"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"पासवर्ड"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"सेभ गर्नुहोस्"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"बिल्ड नम्बर"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"बिल्ड नम्बर कपी गरी क्लिपबोर्डमा सारियो।"</string>
<string name="basic_status" msgid="2315371112182658176">"वार्तालाप खोल्नुहोस्"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"सक्रिय एपहरू"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"रोक्नुहोस्"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"रोकिएको छ"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"सम्पन्न भयो"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"कपी गरियो"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> बाट"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"कपी UI खारेज गर्नुहोस्"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 23381d0dfed3..acb194c667ea 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -30,7 +30,7 @@
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Over Batterijbesparing"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Aanzetten"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Aanzetten"</string>
- <string name="battery_saver_dismiss_action" msgid="7199342621040014738">"Nee"</string>
+ <string name="battery_saver_dismiss_action" msgid="7199342621040014738">"Nee, bedankt"</string>
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Scherm automatisch draaien"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"<xliff:g id="APPLICATION">%1$s</xliff:g> toegang geven tot <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"<xliff:g id="APPLICATION">%1$s</xliff:g> toegang geven tot <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nDeze app heeft geen opnamerechten gekregen, maar zou audio kunnen vastleggen via dit USB-apparaat."</string>
@@ -45,8 +45,8 @@
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Er werken geen geïnstalleerde apps met dit USB-accessoire. Meer informatie op: <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"USB-accessoire"</string>
<string name="label_view" msgid="6815442985276363364">"Bekijken"</string>
- <string name="always_use_device" msgid="210535878779644679">"<xliff:g id="APPLICATION">%1$s</xliff:g> altijd openen wanneer <xliff:g id="USB_DEVICE">%2$s</xliff:g> is verbonden"</string>
- <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="APPLICATION">%1$s</xliff:g> altijd openen wanneer <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> is verbonden"</string>
+ <string name="always_use_device" msgid="210535878779644679">"<xliff:g id="APPLICATION">%1$s</xliff:g> altijd openen wanneer <xliff:g id="USB_DEVICE">%2$s</xliff:g> verbonden is"</string>
+ <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="APPLICATION">%1$s</xliff:g> altijd openen wanneer <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> verbonden is"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"USB-foutopsporing toestaan?"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"De vingerafdruk voor de RSA-sleutel van de computer is:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="4003121804294739548">"Altijd toestaan vanaf deze computer"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Gezicht geverifieerd"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Bevestigd"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tik op Bevestigen om te voltooien"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Geverifieerd"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Pincode gebruiken"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Hiermee hef je de toegangsblokkering op voor alle apps en services die rechten hebben om je microfoon te gebruiken."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Hiermee hef je de toegangsblokkering op voor alle apps en services die rechten hebben om je camera te gebruiken."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Hiermee hef je de toegangsblokkering op voor alle apps en services die rechten hebben om je camera of microfoon te gebruiken."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Microfoon is geblokkeerd"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Camera is geblokkeerd"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"De microfoon en camera zijn geblokkeerd"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Als je de blokkering wilt opheffen, zet je de privacyschakelaar op je apparaat op de positie Microfoon aan om microfoontoegang toe te staan. Raadpleeg de apparaathandleiding voor de locatie van de privacyschakelaar op je apparaat."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Als je de blokkering wilt opheffen, zet je de privacyschakelaar op je apparaat op de positie Camera aan om cameratoegang toe te staan. Raadpleeg de apparaathandleiding voor de locatie van de privacyschakelaar op je apparaat."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Als je de blokkering wilt opheffen, zet je de privacyschakelaar op je apparaat op de positie Blokkering opgeheven om toegang toe te staan. Raadpleeg de apparaathandleiding voor de locatie van de privacyschakelaar op je apparaat."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microfoon beschikbaar"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Camera beschikbaar"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Microfoon en camera beschikbaar"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Ander apparaat"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Overzicht aan- of uitzetten"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Je wordt niet gestoord door geluiden en trillingen, behalve bij wekkers, herinneringen, afspraken en specifieke bellers die je selecteert. Je kunt nog steeds alles horen wat je wilt afspelen, waaronder muziek, video\'s en games."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tik nog eens om te openen"</string>
<string name="tap_again" msgid="1315420114387908655">"Tik nog een keer"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swipe omhoog om te openen"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Druk om te openen"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Swipe omhoog om het opnieuw te proberen"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ontgrendel het apparaat om NFC te gebruiken"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Dit apparaat is eigendom van je organisatie"</string>
@@ -724,7 +718,7 @@
<string name="slice_permission_deny" msgid="6870256451658176895">"Weigeren"</string>
<string name="auto_saver_title" msgid="6873691178754086596">"Tikken om Batterijbesparing aan te zetten"</string>
<string name="auto_saver_text" msgid="3214960308353838764">"Aanzetten als de batterij waarschijnlijk leeg raakt"</string>
- <string name="no_auto_saver_action" msgid="7467924389609773835">"Nee"</string>
+ <string name="no_auto_saver_action" msgid="7467924389609773835">"Nee, bedankt"</string>
<string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Apps gebruiken je <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
<string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string>
@@ -776,7 +770,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"als favoriet verwijderen"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Verplaatsen naar positie <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Bedieningselementen"</string>
- <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Kies welke bedieningselementen je in Snelle instellingen wilt zien"</string>
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Kies welke bedieningselementen je wilt zien in Snelle instellingen"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"Houd vast en sleep om de bedieningselementen opnieuw in te delen"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"Alle bedieningselementen verwijderd"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Wijzigingen zijn niet opgeslagen"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Toevoegen"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Voorgesteld door <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Apparaat vergrendeld"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Apparaten tonen en bedienen via het vergrendelscherm?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Je kunt bedieningselementen voor je externe apparaten toevoegen aan het vergrendelscherm.\n\nMet je apparaat-app kun je misschien bepaalde apparaten bedienen zonder je telefoon of tablet te ontgrendelen.\n\nJe kunt op elk moment wijzigingen aanbrengen via Instellingen."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Apparaten bedienen via vergrendelscherm?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Je kunt bepaalde apparaten bedienen zonder je telefoon of tablet te ontgrendelen.\n\nJe apparaat-app bepaalt welke apparaten op deze manier kunnen worden bediend."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nee, bedankt"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Pincode bevat letters of symbolen"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> verifiëren"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Onjuiste pincode"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Als je deze sessie wilt casten, open je de app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Onbekende app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Casten stoppen"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Hoe uitzenden werkt"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Uitzending"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Mensen bij jou in de buurt met geschikte bluetooth-apparaten kunnen luisteren naar de media die je uitzendt"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Als mensen in de buurt naar je uitzending willen luisteren, kunnen ze met geschikte bluetooth-apparaten je QR-code scannen of de naam en het wachtwoord voor je uitzending gebruiken"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Naam van uitzending"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Wachtwoord"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Opslaan"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Buildnummer"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Buildnummer naar klembord gekopieerd."</string>
<string name="basic_status" msgid="2315371112182658176">"Gesprek openen"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Actieve apps"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stoppen"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Gestopt"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Klaar"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Gekopieerd"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Uit <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"UI voor kopiëren sluiten"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index c01fbeafaa10..e5fb88c9ff2b 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ମୁହଁ ପ୍ରାମାଣିକତା ହୋଇଛି"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"ସୁନିଶ୍ଚିତ କରାଯାଇଛି"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ସୁନିଶ୍ଚିତ କରନ୍ତୁରେ ଟାପ୍ କରନ୍ତୁ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ପ୍ରାମାଣିକତା ହୋଇଛି"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ଆପଣଙ୍କ ମାଇକ୍ରୋଫୋନକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ଦିଆଯାଇଥିବା ସମସ୍ତ ଆପ୍ ଓ ସେବା ପାଇଁ ଏହା ଆକ୍ସେସକୁ ଅନବ୍ଲକ୍ କରେ।"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ଆପଣଙ୍କ କ୍ୟାମେରାକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ଦିଆଯାଇଥିବା ସମସ୍ତ ଆପ୍ ଓ ସେବା ପାଇଁ ଏହା ଆକ୍ସେସକୁ ଅନବ୍ଲକ୍ କରେ।"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ଆପଣଙ୍କ କ୍ୟାମେରା କିମ୍ବା ମାଇକ୍ରୋଫୋନକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ଦିଆଯାଇଥିବା ସମସ୍ତ ଆପ୍ ଓ ସେବା ପାଇଁ ଏହା ଆକ୍ସେସକୁ ଅନବ୍ଲକ୍ କରେ।"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"ମାଇକ୍ରୋଫୋନକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"କ୍ୟାମେରାକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"ମାଇକ &amp; କ୍ୟାମେରାକୁ ବ୍ଲକ କରାଯାଇଛି"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ଅନବ୍ଲକ କରିବା ପାଇଁ, ଆପଣଙ୍କ ଡିଭାଇସର ଗୋପନୀୟତା ସ୍ୱିଚକୁ \"ମାଇକ୍ରୋଫୋନ ଚାଲୁ\" ସ୍ଥିତିକୁ ମୁଭ କରି ମାଇକ୍ରୋଫୋନ ଆକ୍ସେସ ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣଙ୍କ ଡିଭାଇସରେ ଗୋପନୀୟତା ସ୍ୱିଚକୁ ଖୋଜିବା ପାଇଁ ଡିଭାଇସ ମାନୁଆଲକୁ ରେଫର କରନ୍ତୁ।"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ଅନବ୍ଲକ କରିବା ପାଇଁ, ଆପଣଙ୍କ ଡିଭାଇସର ଗୋପନୀୟତା ସ୍ୱିଚକୁ \"କ୍ୟାମେରା ଚାଲୁ\" ସ୍ଥିତିକୁ ମୁଭ କରି କ୍ୟାମେରା ଆକ୍ସେସ ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣଙ୍କ ଡିଭାଇସରେ ଗୋପନୀୟତା ସ୍ୱିଚକୁ ଖୋଜିବା ପାଇଁ ଡିଭାଇସ ମାନୁଆଲକୁ ରେଫର କରନ୍ତୁ।"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ସେଗୁଡ଼ିକୁ ଅନବ୍ଲକ କରିବା ପାଇଁ, ଆପଣଙ୍କ ଡିଭାଇସର ଗୋପନୀୟତା ସ୍ୱିଚକୁ \"ଅନବ୍ଲକ କରାଯାଇଛି\" ସ୍ଥିତିକୁ ମୁଭ କରି ଆକ୍ସେସ ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣଙ୍କ ଡିଭାଇସରେ ଗୋପନୀୟତା ସ୍ୱିଚକୁ ଖୋଜିବା ପାଇଁ ଡିଭାଇସ ମାନୁଆଲକୁ ରେଫର କରନ୍ତୁ।"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"ମାଇକ୍ରୋଫୋନ ଉପଲବ୍ଧ"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"କ୍ୟାମେରା ଉପଲବ୍ଧ"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"ମାଇକ୍ରୋଫୋନ ଏବଂ କ୍ୟାମେରା ଉପଲବ୍ଧ"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ଅନ୍ୟ ଡିଭାଇସ୍"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ସଂକ୍ଷିପ୍ତ ବିବରଣୀକୁ ଟୋଗଲ୍ କରନ୍ତୁ"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"ଆଲାର୍ମ, ରିମାଇଣ୍ଡର୍‌, ଇଭେଣ୍ଟ ଏବଂ ଆପଣ ନିର୍ଦ୍ଦିଷ୍ଟ କରିଥିବା କଲର୍‌ଙ୍କ ବ୍ୟତୀତ ଆପଣଙ୍କ ଧ୍ୟାନ ଅନ୍ୟ କୌଣସି ଧ୍ୱନୀ ଏବଂ ଭାଇବ୍ରେଶନ୍‌ରେ ଆକର୍ଷଣ କରାଯିବନାହିଁ। ମ୍ୟୁଜିକ୍‍, ଭିଡିଓ ଏବଂ ଗେମ୍‌ ସମେତ ନିଜେ ଚଲାଇବାକୁ ବାଛିଥିବା ଅନ୍ୟ ସବୁକିଛି ଆପଣ ଶୁଣିପାରିବେ।"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ଖୋଲିବା ପାଇଁ ପୁଣି ଟାପ୍‍ କରନ୍ତୁ"</string>
<string name="tap_again" msgid="1315420114387908655">"ପୁଣି ଟାପ୍ କରନ୍ତୁ"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ଖୋଲିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ଖୋଲିବାକୁ ଦବାନ୍ତୁ"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"ପୁଣି ଚେଷ୍ଟା କରିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ବ୍ୟବହାର କରିବାକୁ ଅନଲକ୍ କରନ୍ତୁ"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ଏହି ଡିଭାଇସଟି ଆପଣଙ୍କ ସଂସ୍ଥାର ଅଟେ"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"ଯୋଗ କରନ୍ତୁ"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ଦ୍ଵାରା ପ୍ରସ୍ତାବିତ"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"ଡିଭାଇସ୍ ଲକ୍ ହୋଇଯାଇଛି"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"ଲକ ସ୍କ୍ରିନରୁ ଡିଭାଇସଗୁଡ଼ିକୁ ଦେଖାଇବେ ଏବଂ ନିୟନ୍ତ୍ରଣ କରିବେ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ଆପଣ ଲକ ସ୍କ୍ରିନରେ ଆପଣଙ୍କ ଏକ୍ସଟର୍ନଲ ଡିଭାଇସଗୁଡ଼ିକ ପାଇଁ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଯୋଗ କରିପାରିବେ।\n\nଆପଣଙ୍କ ଫୋନ କିମ୍ବା ଟାବଲେଟକୁ ଅନଲକ ନକରି କିଛି ଡିଭାଇସକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସର ଆପ ଆପଣଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଆପଣ ଯେ କୌଣସି ସମୟରେ ସେଟିଂସରେ ପରିବର୍ତ୍ତନ କରିପାରିବେ।"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"ଲକ ସ୍କ୍ରିନରୁ ଡିଭାଇସଗୁଡ଼ିକୁ ନିୟନ୍ତ୍ରଣ କରିବେ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"ଆପଣ ଆପଣଙ୍କ ଫୋନ କିମ୍ବା ଟାବଲେଟକୁ ଅନଲକ ନକରି କିଛି ଡିଭାଇସକୁ ନିୟନ୍ତ୍ରଣ କରିପାରିବେ।\n\nଏହି ଉପାୟରେ କେଉଁ ଡିଭାଇସଗୁଡ଼ିକୁ ନିୟନ୍ତ୍ରଣ କରାଯାଇପାରିବ ତାହା ଆପଣଙ୍କ ଡିଭାଇସର ଆପ ସ୍ଥିର କରେ।"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"ନା, ଧନ୍ୟବାଦ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ହଁ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PINରେ ଅକ୍ଷର କିମ୍ୱା ପ୍ରତୀକଗୁଡ଼ିକ ଥାଏ"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ଯାଞ୍ଚ କରନ୍ତୁ"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"ଭୁଲ PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ଏହି ସେସନକୁ କାଷ୍ଟ କରିବା ପାଇଁ, ଦୟାକରି ଆପ ଖୋଲନ୍ତୁ।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ଅଜଣା ଆପ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"କାଷ୍ଟ କରିବା ବନ୍ଦ କରନ୍ତୁ"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ବ୍ରଡକାଷ୍ଟିଂ କିପରି କାମ କରେ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ବ୍ରଡକାଷ୍ଟ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ଆପଣଙ୍କ ଆଖପାଖର କମ୍ପାଟିବଲ ବ୍ଲୁଟୁଥ ଡିଭାଇସ ଥିବା ଲୋକମାନେ ଆପଣ ବ୍ରଡକାଷ୍ଟ କରୁଥିବା ମିଡିଆ ଶୁଣିପାରିବେ"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ଆପଣଙ୍କ ବ୍ରଡକାଷ୍ଟକୁ ଶୁଣିବା ପାଇଁ, ଆଖପାଖର କମ୍ପାଟିବଲ ବ୍ଲୁଟୁଥ ଡିଭାଇସ ଥିବା ଲୋକମାନେ ଆପଣଙ୍କ QR କୋଡକୁ ସ୍କାନ କରିପାରିବେ କିମ୍ବା ଆପଣଙ୍କ ବ୍ରଡକାଷ୍ଟର ନାମ ଏବଂ ପାସୱାର୍ଡ ବ୍ୟବହାର କରିପାରିବେ"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ବ୍ରଡକାଷ୍ଟର ନାମ"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"ପାସୱାର୍ଡ"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"ସେଭ କରନ୍ତୁ"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ବିଲ୍ଡ ନମ୍ୱର"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"କ୍ଲିପବୋର୍ଡକୁ କପି କରାଯାଇଥିବା ବିଲ୍ଡ ନମ୍ୱର।"</string>
<string name="basic_status" msgid="2315371112182658176">"ବାର୍ତ୍ତାଳାପ ଖୋଲନ୍ତୁ"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ସକ୍ରିୟ ଆପଗୁଡ଼ିକ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ବନ୍ଦ ହୋଇଛି"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ହୋଇଗଲା"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"କପି କରାଯାଇଛି"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g>ରୁ"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"କପି କରାଯାଇଥିବା UIକୁ ଖାରଜ କରନ୍ତୁ"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 4aa88f26d41a..132de78ea96d 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਿਰਤ ਹੋਇਆ"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"ਪੂਰਾ ਕਰਨ ਲਈ ਪੁਸ਼ਟੀ ਕਰੋ \'ਤੇ ਟੈਪ ਕਰੋ"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ਪ੍ਰਮਾਣਿਤ ਹੋਇਆ"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ਪਿੰਨ ਵਰਤੋ"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"ਇਹ ਉਹਨਾਂ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਲਈ ਪਹੁੰਚ ਨੂੰ ਅਣਬਲਾਕ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਹਾਡਾ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੱਤੀ ਗਈ ਹੈ।"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ਇਹ ਉਹਨਾਂ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਲਈ ਪਹੁੰਚ ਨੂੰ ਅਣਬਲਾਕ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਹਾਡਾ ਕੈਮਰਾ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੱਤੀ ਗਈ ਹੈ।"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ਇਹ ਉਹਨਾਂ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਲਈ ਪਹੁੰਚ ਨੂੰ ਅਣਬਲਾਕ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਹਾਡਾ ਕੈਮਰਾ ਜਾਂ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੱਤੀ ਗਈ ਹੈ।"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"ਕੈਮਰਾ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"ਮਾਈਕ ਅਤੇ ਕੈਮਰਾ ਬਲਾਕ ਕੀਤੇ ਗਏ ਹਨ"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"ਅਣਬਲਾਕ ਕਰਨ ਲਈ, ਆਪਣੇ ਡੀਵਾਈਸ ਦੇ ਪਰਦੇਦਾਰੀ ਸਵਿੱਚ ਨੂੰ \'ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਚਾਲੂ ਹੈ\' ਵਾਲੀ ਸਥਿਤੀ \'ਤੇ ਲਿਜਾਓ ਤਾਂ ਜੋ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਤੱਕ ਪਹੁੰਚ ਦਿੱਤੀ ਜਾ ਸਕੇ। ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਪਰਦੇਦਾਰੀ ਸਵਿੱਚ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਆਪਣਾ ਡੀਵਾਈਸ ਮੈਨੂਅਲ ਦੇਖੋ।"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"ਅਣਬਲਾਕ ਕਰਨ ਲਈ, ਆਪਣੇ ਡੀਵਾਈਸ ਦੇ ਪਰਦੇਦਾਰੀ ਸਵਿੱਚ ਨੂੰ \'ਕੈਮਰਾ ਚਾਲੂ ਹੈ\' ਵਾਲੀ ਸਥਿਤੀ \'ਤੇ ਲਿਜਾਓ ਤਾਂ ਜੋ ਕੈਮਰੇ ਤੱਕ ਪਹੁੰਚ ਦਿੱਤੀ ਜਾ ਸਕੇ। ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਪਰਦੇਦਾਰੀ ਸਵਿੱਚ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਆਪਣਾ ਡੀਵਾਈਸ ਮੈਨੂਅਲ ਦੇਖੋ।"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ਉਨ੍ਹਾਂ ਨੂੰ ਅਣਬਲਾਕ ਕਰਨ ਲਈ, ਆਪਣੇ ਡੀਵਾਈਸ ਦੇ ਪਰਦੇਦਾਰੀ ਸਵਿੱਚ ਨੂੰ ਅਣਬਲਾਕ ਕੀਤੀ ਸਥਿਤੀ \'ਤੇ ਲਿਜਾਓ ਤਾਂ ਜੋ ਪਹੁੰਚ ਦਿੱਤੀ ਜਾ ਸਕੇ। ਆਪਣੇ ਡੀਵਾਈਸ \'ਤੇ ਪਰਦੇਦਾਰੀ ਸਵਿੱਚ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਆਪਣਾ ਡੀਵਾਈਸ ਮੈਨੂਅਲ ਦੇਖੋ।"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਉਪਲਬਧ ਹੈ"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ਕੈਮਰਾ ਉਪਲਬਧ ਹੈ"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਅਤੇ ਕੈਮਰਾ ਉਪਲਬਧ ਹੈ"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ਹੋਰ ਡੀਵਾਈਸ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"ਰੂਪ-ਰੇਖਾ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟਾਂ ਤੁਹਾਨੂੰ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ, ਸਿਵਾਏ ਅਲਾਰਮਾਂ, ਯਾਦ-ਦਹਾਨੀਆਂ, ਵਰਤਾਰਿਆਂ, ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਨਿਰਧਾਰਤ ਕੀਤੇ ਕਾਲਰਾਂ ਦੀ ਸੂਰਤ ਵਿੱਚ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਸੰਗੀਤ, ਵੀਡੀਓ ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ ਆਪਣੀ ਚੋਣ ਅਨੁਸਾਰ ਕੁਝ ਵੀ ਸੁਣ ਸਕਦੇ ਹੋ।"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਟੈਪ ਕਰੋ"</string>
<string name="tap_again" msgid="1315420114387908655">"ਦੁਬਾਰਾ ਟੈਪ ਕਰੋ"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"ਖੋਲ੍ਹਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"ਖੋਲ੍ਹਣ ਲਈ ਦਬਾਓ"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਉੱਤੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ਵਰਤਣ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ਇਹ ਡੀਵਾਈਸ ਤੁਹਾਡੀ ਸੰਸਥਾ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ"</string>
@@ -776,7 +770,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"ਮਨਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> ਸਥਾਨ \'ਤੇ ਲਿਜਾਓ"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"ਕੰਟਰੋਲ"</string>
- <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ਪਹੁੰਚ ਕਰਨ ਲਈ ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ ਤੋਂ ਕੰਟਰੋਲ ਚੁਣੋ"</string>
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ ਤੋਂ ਪਹੁੰਚ ਕਰਨ ਲਈ ਕੰਟਰੋਲ ਚੁਣੋ"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"ਕੰਟਰੋਲਾਂ ਨੂੰ ਮੁੜ-ਵਿਵਸਥਿਤ ਕਰਨ ਲਈ ਫੜ੍ਹ ਕੇ ਘਸੀਟੋ"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"ਸਾਰੇ ਕੰਟਰੋਲ ਹਟਾਏ ਗਏ"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"ਤਬਦੀਲੀਆਂ ਨੂੰ ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ਵੱਲੋਂ ਸੁਝਾਇਆ ਗਿਆ"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"ਡੀਵਾਈਸ ਲਾਕ ਹੈ"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"ਕੀ ਲਾਕ ਸਕ੍ਰੀਨ ਤੋਂ ਡੀਵਾਈਸਾਂ ਨੂੰ ਦੇਖਣਾ ਅਤੇ ਕੰਟਰੋਲ ਕਰਨਾ ਹੈ?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ਤੁਸੀਂ ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੇ ਬਾਹਰੀ ਡੀਵਾਈਸਾਂ ਲਈ ਕੰਟਰੋਲ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹੋ।\n\nਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਮੌਜੂਦ ਐਪ ਤੁਹਾਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਨ ਜਾਂ ਟੈਬਲੈੱਟ ਨੂੰ ਅਣਲਾਕ ਕੀਤੇ ਬਿਨਾਂ ਕੁਝ ਡੀਵਾਈਸਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਦੇ ਸਕਦੀ ਹੈ।\n\nਤੁਸੀਂ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ ਕਿਸੇ ਵੇਲੇ ਵੀ ਤਬਦੀਲੀਆਂ ਕਰ ਸਕਦੇ ਹੋ।"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"ਕੀ ਲਾਕ ਸਕ੍ਰੀਨ ਤੋਂ ਡੀਵਾਈਸਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨਾ ਹੈ?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"ਤੁਸੀਂ ਆਪਣੇ ਫ਼ੋਨ ਜਾਂ ਟੈਬਲੈੱਟ ਨੂੰ ਅਣਲਾਕ ਕੀਤੇ ਬਿਨਾਂ ਕੁਝ ਡੀਵਾਈਸਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ।\n\nਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਮੌਜੂਦ ਐਪ ਇਹ ਨਿਰਧਾਰਿਤ ਕਰਦੀ ਹੈ ਕਿ ਇਸ ਤਰੀਕੇ ਨਾਲ ਕਿਹੜੇ ਡੀਵਾਈਸਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ਹਾਂ"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"ਪਿੰਨ ਵਿੱਚ ਅੱਖਰ ਜਾਂ ਚਿੰਨ੍ਹ ਸ਼ਾਮਲ ਹਨ"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"ਗਲਤ ਪਿੰਨ"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ਇਸ ਸੈਸ਼ਨ ਨੂੰ ਕਾਸਟ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਐਪ ਖੋਲ੍ਹੋ।"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"ਅਗਿਆਤ ਐਪ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ਕਾਸਟ ਕਰਨਾ ਬੰਦ ਕਰੋ"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ਪ੍ਰਸਾਰਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ਪ੍ਰਸਾਰਨ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ਅਨੁਰੂਪ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਨਾਲ ਨਜ਼ਦੀਕੀ ਲੋਕ ਤੁਹਾਡੇ ਵੱਲੋਂ ਪ੍ਰਸਾਰਨ ਕੀਤੇ ਜਾ ਰਹੇ ਮੀਡੀਆ ਨੂੰ ਸੁਣ ਸਕਦੇ ਹਨ"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ਅਨੁਰੂਪ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਨਾਲ ਨਜ਼ਦੀਕੀ ਲੋਕ ਪ੍ਰਸਾਰਨ ਨੂੰ ਸੁਣਨ ਲਈ QR ਕੋਡ ਨੂੰ ਸਕੈਨ ਕਰ ਸਕਦੇ ਹਨ ਜਾਂ ਤੁਹਾਡੇ ਪ੍ਰਸਾਰਨ ਦੇ ਨਾਮ ਅਤੇ ਪਾਸਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਨ"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ਪ੍ਰਸਾਰਨ ਦਾ ਨਾਮ"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"ਪਾਸਵਰਡ"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"ਬਿਲਡ ਨੰਬਰ"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"ਬਿਲਡ ਨੰਬਰ ਨੂੰ ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕੀਤਾ ਗਿਆ।"</string>
<string name="basic_status" msgid="2315371112182658176">"ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"ਕਿਰਿਆਸ਼ੀਲ ਐਪਾਂ"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ਬੰਦ ਕਰੋ"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ਬੰਦ ਹੈ"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ਹੋ ਗਿਆ"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"ਕਾਪੀ ਕੀਤੀ ਗਈ"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> ਤੋਂ"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"ਕਾਪੀ ਕੀਤੇ UI ਨੂੰ ਖਾਰਜ ਕਰੋ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 3160f4da1aea..2d560fa0c768 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -32,13 +32,13 @@
<string name="battery_saver_start_action" msgid="8353766979886287140">"Włącz"</string>
<string name="battery_saver_dismiss_action" msgid="7199342621040014738">"Nie, dziękuję"</string>
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Autoobracanie ekranu"</string>
- <string name="usb_device_permission_prompt" msgid="4414719028369181772">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_device_permission_prompt" msgid="4414719028369181772">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nTa aplikacja nie ma uprawnień do nagrywania, ale może rejestrować dźwięk za pomocą tego urządzenia USB."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Otworzyć aplikację <xliff:g id="APPLICATION">%1$s</xliff:g> na potrzeby obsługi urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Otworzyć <xliff:g id="APPLICATION">%1$s</xliff:g> dla urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ta aplikacja nie ma uprawnień do nagrywania, ale może rejestrować dźwięk za pomocą tego urządzenia USB. Używanie aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na tym urządzeniu może zakłócać słyszenie połączeń, powiadomień i alertów."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Używanie aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na tym urządzeniu może zakłócać słyszenie połączeń, powiadomień i alertów."</string>
- <string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do urządzenia <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
+ <string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na dostęp do: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Otworzyć aplikację <xliff:g id="APPLICATION">%1$s</xliff:g> do obsługi urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Zezwolić aplikacji <xliff:g id="APPLICATION">%1$s</xliff:g> na obsługę urządzenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nTa aplikacja nie ma uprawnień do nagrywania, ale może rejestrować dźwięk za pomocą tego urządzenia USB."</string>
<string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Otworzyć aplikację <xliff:g id="APPLICATION">%1$s</xliff:g> do obsługi urządzenia <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Twarz rozpoznana"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potwierdzono"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Aby zakończyć, kliknij Potwierdź"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Uwierzytelniono"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Użyj kodu PIN"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Spowoduje to odblokowanie dostępu dla wszystkich aplikacji i usług, które mają uprawnienia do korzystania z mikrofonu."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Spowoduje to odblokowanie dostępu dla wszystkich aplikacji i usług, które mają uprawnienia do korzystania z aparatu."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Spowoduje to odblokowanie dostępu dla wszystkich aplikacji i usług, które mają uprawnienia do korzystania z aparatu lub mikrofonu."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon jest zablokowany"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Aparat jest zablokowany"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon i aparat są zablokowane"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Aby odblokować, ustaw przełącznik prywatności w odniesieniu do mikrofonu na urządzeniu w pozycji włączenia, aby zezwolić na dostęp do mikrofonu. Aby dowiedzieć się, gdzie na urządzeniu znajdziesz przełącznik prywatności, zajrzyj do instrukcji urządzenia."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Aby odblokować, ustaw przełącznik prywatności w odniesieniu do aparatu na urządzeniu w pozycji włączenia, aby zezwolić na dostęp do aparatu. Aby dowiedzieć się, gdzie na urządzeniu znajdziesz przełącznik prywatności, zajrzyj do instrukcji urządzenia."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Aby je odblokować, ustaw przełącznik prywatności na urządzeniu w pozycji odblokowania, aby zezwolić na dostęp. Aby dowiedzieć się, gdzie na urządzeniu znajdziesz przełącznik prywatności, zajrzyj do instrukcji urządzenia."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon jest dostępny"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Aparat jest dostępny"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon i aparat są dostępne"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Inne urządzenie"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Przełącz Przegląd"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Nie będą Cię niepokoić żadne dźwięki ani wibracje z wyjątkiem alarmów, przypomnień, wydarzeń i połączeń od wybranych osób. Będziesz słyszeć wszystkie odtwarzane treści, takie jak muzyka, filmy czy gry."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Kliknij ponownie, by otworzyć"</string>
<string name="tap_again" msgid="1315420114387908655">"Kliknij jeszcze raz"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Przesuń w górę, by otworzyć"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Naciśnij, by otworzyć"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Przesuń w górę, by spróbować ponownie"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Odblokuj, by użyć komunikacji NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"To urządzenie należy do Twojej organizacji"</string>
@@ -800,18 +794,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Dodaj"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Sugestia: <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Urządzenie zablokowane"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Pokazywać urządzenia i umożliwiać sterowanie nimi na ekranie blokady?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Możesz dodać do ekranu blokady elementy sterujące dotyczące urządzeń zewnętrznych.\n\nMożesz mieć możliwość sterowania niektórymi urządzeniami za pomocą aplikacji na telefonie lub tablecie bez odblokowywania tych urządzeń.\n\nW dowolnej chwili możesz wprowadzić zmiany w Ustawieniach."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Sterować urządzeniami na ekranie blokady?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Możesz sterować niektórymi urządzeniami bez odblokowywania telefonu lub tabletu.\n\nTo, którymi urządzeniami możesz sterować w ten sposób, określa aplikacja na urządzeniu."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nie, dziękuję"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Tak"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Kod PIN zawiera litery lub symbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Sprawdź urządzenie <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Nieprawidłowy kod PIN"</string>
@@ -861,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Aby przesłać tę sesję, otwórz aplikację."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Nieznana aplikacja"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zatrzymaj przesyłanie"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Jak działa transmitowanie"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmisja"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Osoby w pobliżu ze zgodnymi urządzeniami Bluetooth mogą słuchać transmitowanych przez Ciebie multimediów"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Aby słuchać Twojej transmisji, osoby w pobliżu ze zgodnymi urządzeniami Bluetooth mogą zeskanować Twój kod QR lub użyć nazwy transmisji i hasła"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nazwa transmisji"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Hasło"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Zapisz"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numer kompilacji"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Numer kompilacji został skopiowany do schowka."</string>
<string name="basic_status" msgid="2315371112182658176">"Otwarta rozmowa"</string>
@@ -953,8 +934,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktywne aplikacje"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Zatrzymaj"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Zatrzymano"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gotowe"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Skopiowano"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Od: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Zamknij UI kopiowania"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 5cd852ce8888..464414d6f8d7 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> restantes"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Não é possível carregar via USB"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Usar o carregador que acompanha o dispositivo"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Ativar \"Economia de bateria\"?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Ativar a Economia de bateria?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Sobre a Economia de bateria"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Ativar"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Ativar"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Rosto autenticado"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmada"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Toque em \"Confirmar\" para concluir"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Desbloqueado pelo rosto. Pressione o ícone de desbloqueio para continuar."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticado"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Usar PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Usar padrão"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Essa ação desbloqueia o acesso para todos os apps e serviços com autorização para usar seu microfone."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Essa ação desbloqueia o acesso para todos os apps e serviços com autorização para usar sua câmera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Essa ação desbloqueia o acesso para todos os apps e serviços com autorização para usar sua câmera ou seu microfone."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"O microfone está bloqueado"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"A câmara está bloqueada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"O microfone e a câmera estão bloqueados"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Para desbloquear, mude a chave de privacidade do dispositivo para permitir o acesso ao microfone. Veja a posição da chave de privacidade no manual do dispositivo."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Para desbloquear, mude a chave de privacidade do dispositivo para permitir acesso à câmera. Veja a posição da chave de privacidade no manual do dispositivo."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Para desbloquear, mude a chave de privacidade do dispositivo para permitir acesso. Veja a posição da chave de privacidade no manual do dispositivo."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microfone disponível"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Câmera disponível"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Microfone e câmera disponíveis"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Alternar Visão geral"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Você não será perturbado por sons e vibrações, exceto alarmes, lembretes, eventos e chamadas de pessoas especificadas. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Toque novamente para abrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Toque novamente"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Deslize para cima para abrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pressione para abrir"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Pressione o ícone de desbloqueio para abrir"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Desbloqueado pelo rosto. Pressione o ícone de desbloqueio para abrir."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Deslize para cima para tentar novamente"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloqueie para usar a NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Este dispositivo pertence à sua organização"</string>
@@ -625,7 +616,7 @@
<string name="left_icon" msgid="5036278531966897006">"Ícone à esquerda"</string>
<string name="right_icon" msgid="1103955040645237425">"Ícone à direita"</string>
<string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantenha pressionado e arraste para adicionar blocos"</string>
- <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantenha pressionado e arraste para reorganizar os blocos"</string>
+ <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantenha o bloco pressionado e arraste para reorganizar"</string>
<string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arraste aqui para remover"</string>
<string name="drag_to_remove_disabled" msgid="933046987838658850">"É preciso haver pelo menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> blocos"</string>
<string name="qs_edit" msgid="5583565172803472437">"Editar"</string>
@@ -843,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Abra o app para transmitir esta sessão."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconhecido"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Parar transmissão"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Como funciona a transmissão"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmitir"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"As pessoas próximas a você com dispositivos Bluetooth compatíveis podem ouvir a mídia que você está transmitindo"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"As pessoas próximas com dispositivos Bluetooth compatíveis podem ler seu código QR ou usar o nome da transmissão e a senha para ouvir a transmissão."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome da transmissão"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Senha"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salvar"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número da versão"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Número da versão copiado para a área de transferência."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 0c082baefc8e..d1124b66b8a6 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -21,12 +21,12 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4811759950673118541">"IU do sistema"</string>
<string name="battery_low_title" msgid="5319680173344341779">"Ativar a Poupança de bateria?"</string>
- <string name="battery_low_description" msgid="3282977755476423966">"Resta-lhe <xliff:g id="PERCENTAGE">%s</xliff:g> de bateria. A Poupança de bateria ativa o tema escuro, restringe a atividade em segundo plano e atrasa as notificações."</string>
+ <string name="battery_low_description" msgid="3282977755476423966">"Tem <xliff:g id="PERCENTAGE">%s</xliff:g> de bateria. A Poupança de bateria ativa o tema escuro, restringe a atividade em segundo plano e atrasa as notificações."</string>
<string name="battery_low_intro" msgid="5148725009653088790">"A Poupança de bateria ativa o tema escuro, restringe a atividade em segundo plano e atrasa as notificações."</string>
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> restante"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Não é possível carregar através de USB."</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Utilize o carregador fornecido com o dispositivo."</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Pretende ativar a Poupança de bateria?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Ativar a Poupança de bateria?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Acerca da Poupança de bateria"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Ativar"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Ativar"</string>
@@ -91,7 +91,7 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Gravador de ecrã"</string>
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"A processar a gravação de ecrã"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificação persistente de uma sessão de gravação de ecrã"</string>
- <string name="screenrecord_start_label" msgid="1750350278888217473">"Pretende iniciar a gravação?"</string>
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"Iniciar a gravação?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"Enquanto estiver a gravar, o sistema Android pode capturar quaisquer informações confidenciais que estejam visíveis no ecrã ou que sejam reproduzidas no dispositivo. Isto inclui palavras-passe, informações de pagamento, fotos, mensagens e áudio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Gravar áudio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Áudio do dispositivo"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Rosto autenticado"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmado"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Toque em Confirmar para concluir."</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Desbloqueado c/ rosto. Prima o ícone de desb. p/ continuar."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticado"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Utilizar PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Utilizar padrão"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Isto desbloqueia o acesso a todas as apps e serviços com autorização para utilizar o seu microfone."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Isto desbloqueia o acesso a todas as apps e serviços com autorização para utilizar a sua câmara."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Isto desbloqueia o acesso a todas as apps e serviços com autorização para utilizar a sua câmara ou microfone."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"O microfone está bloqueado"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"A câmara está bloqueada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"O microfone e a câmara estão bloqueados"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Para desbloquear, mova o interruptor de privacidade do dispositivo relativo ao microfone para a posição de autorização de acesso ao microfone. Consulte o manual do dispositivo para localizar o interruptor de privacidade no seu dispositivo."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Para desbloquear, mova o interruptor de privacidade do dispositivo relativo à câmara para a posição de autorização de acesso à câmara. Consulte o manual do dispositivo para localizar o interruptor de privacidade no seu dispositivo."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Para desbloquear, mova o interruptor de privacidade do dispositivo para a posição desbloqueada para permitir o acesso. Consulte o manual do dispositivo para localizar o interruptor de privacidade no seu dispositivo."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microfone disponível"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Câmara disponível"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Microfone e câmara disponíveis"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Ativar/desativar Vista geral"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Não é incomodado por sons e vibrações, exceto de alarmes, lembretes, eventos e autores de chamadas que especificar. Continua a ouvir tudo o que optar por reproduzir, incluindo música, vídeos e jogos."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Toque novamente para abrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Toque novamente"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Deslize rapidamente para cima para abrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Prima para abrir"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Prima o ícone de desbloqueio para abrir"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Desbloqueado com o rosto. Prima o ícone de desbl. p/ abrir."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Deslize rapidamente para cima para tentar novamente."</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquear para utilizar o NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Este dispositivo pertence à sua entidade."</string>
@@ -357,8 +348,8 @@
<string name="user_remove_user_remove" msgid="8387386066949061256">"Remover"</string>
<string name="media_projection_dialog_text" msgid="1755705274910034772">"A app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> terá acesso a todas as informações que estiverem visíveis no ecrã ou que forem reproduzidas a partir do dispositivo durante a gravação ou transmissão. Isto inclui informações como palavras-passe, detalhes de pagamentos, fotos, mensagens e áudio reproduzido."</string>
<string name="media_projection_dialog_service_text" msgid="958000992162214611">"O serviço que fornece esta função terá acesso a todas as informações que estiverem visíveis no ecrã ou que forem reproduzidas a partir do dispositivo durante a gravação ou transmissão. Isto inclui informações como palavras-passe, detalhes de pagamentos, fotos, mensagens e áudio reproduzido."</string>
- <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Pretende começar a gravar ou a transmitir?"</string>
- <string name="media_projection_dialog_title" msgid="3316063622495360646">"Pretende começar a gravar ou a transmitir com a app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
+ <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Começar a gravar ou a transmitir?"</string>
+ <string name="media_projection_dialog_title" msgid="3316063622495360646">"Começar a gravar ou a transmitir com a app <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>?"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"Limpar tudo"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"Gerir"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Histórico"</string>
@@ -724,7 +715,7 @@
<string name="slice_permission_deny" msgid="6870256451658176895">"Recusar"</string>
<string name="auto_saver_title" msgid="6873691178754086596">"Tocar para agendar a Poupança de bateria"</string>
<string name="auto_saver_text" msgid="3214960308353838764">"Ativar quando for provável que a bateria se esgote"</string>
- <string name="no_auto_saver_action" msgid="7467924389609773835">"Não, obrigado"</string>
+ <string name="no_auto_saver_action" msgid="7467924389609773835">"Não"</string>
<string name="heap_dump_tile_name" msgid="2464189856478823046">"Despejar pilha SysUI"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"As aplicações estão a utilizar o(a) <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
<string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string>
@@ -788,18 +779,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Adicionar"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Sugerido por <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Dispositivo bloq."</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Mostrar e controlar dispositivos a partir do ecrã de bloqueio?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Pode adicionar controlos para os seus dispositivos externos ao ecrã de bloqueio.\n\nA app do dispositivo pode permitir controlar alguns dispositivos sem desbloquear o seu telemóvel ou tablet.\n\nPode fazer alterações em qualquer altura nas Definições."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Controlar dispositivos a partir do ecrã de bloqueio?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Pode controlar alguns dispositivos sem desbloquear o seu telemóvel ou tablet.\n\nA app do dispositivo determina que dispositivos podem ser controlados desta forma."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Não"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Sim"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"O PIN contém letras ou símbolos."</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Validar <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN incorreto"</string>
@@ -849,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para transmitir esta sessão, abra a app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconhecida"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Parar transmissão"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Como funciona a transmissão"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmissão"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"As pessoas próximas de si com dispositivos Bluetooth compatíveis podem ouvir o conteúdo multimédia que está a transmitir"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Para ouvir a sua transmissão, as pessoas próximas com dispositivos Bluetooth compatíveis podem ler o código QR ou usar a palavra-passe e o nome da transmissão"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome da transmissão"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Palavra-passe"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Guardar"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número da compilação"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Número da compilação copiado para a área de transferência."</string>
<string name="basic_status" msgid="2315371112182658176">"Abrir conversa"</string>
@@ -939,8 +917,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Apps ativas"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Parar"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Parada"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Concluir"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Copiado"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Da app <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ignorar cópia de IU"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 5cd852ce8888..464414d6f8d7 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"<xliff:g id="PERCENTAGE">%s</xliff:g> restantes"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Não é possível carregar via USB"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Usar o carregador que acompanha o dispositivo"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Ativar \"Economia de bateria\"?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Ativar a Economia de bateria?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Sobre a Economia de bateria"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Ativar"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Ativar"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Rosto autenticado"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmada"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Toque em \"Confirmar\" para concluir"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Desbloqueado pelo rosto. Pressione o ícone de desbloqueio para continuar."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autenticado"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Usar PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Usar padrão"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Essa ação desbloqueia o acesso para todos os apps e serviços com autorização para usar seu microfone."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Essa ação desbloqueia o acesso para todos os apps e serviços com autorização para usar sua câmera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Essa ação desbloqueia o acesso para todos os apps e serviços com autorização para usar sua câmera ou seu microfone."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"O microfone está bloqueado"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"A câmara está bloqueada"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"O microfone e a câmera estão bloqueados"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Para desbloquear, mude a chave de privacidade do dispositivo para permitir o acesso ao microfone. Veja a posição da chave de privacidade no manual do dispositivo."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Para desbloquear, mude a chave de privacidade do dispositivo para permitir acesso à câmera. Veja a posição da chave de privacidade no manual do dispositivo."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Para desbloquear, mude a chave de privacidade do dispositivo para permitir acesso. Veja a posição da chave de privacidade no manual do dispositivo."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microfone disponível"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Câmera disponível"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Microfone e câmera disponíveis"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Outro dispositivo"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Alternar Visão geral"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Você não será perturbado por sons e vibrações, exceto alarmes, lembretes, eventos e chamadas de pessoas especificadas. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Toque novamente para abrir"</string>
<string name="tap_again" msgid="1315420114387908655">"Toque novamente"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Deslize para cima para abrir"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pressione para abrir"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Pressione o ícone de desbloqueio para abrir"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Desbloqueado pelo rosto. Pressione o ícone de desbloqueio para abrir."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Deslize para cima para tentar novamente"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloqueie para usar a NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Este dispositivo pertence à sua organização"</string>
@@ -625,7 +616,7 @@
<string name="left_icon" msgid="5036278531966897006">"Ícone à esquerda"</string>
<string name="right_icon" msgid="1103955040645237425">"Ícone à direita"</string>
<string name="drag_to_add_tiles" msgid="8933270127508303672">"Mantenha pressionado e arraste para adicionar blocos"</string>
- <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantenha pressionado e arraste para reorganizar os blocos"</string>
+ <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Mantenha o bloco pressionado e arraste para reorganizar"</string>
<string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arraste aqui para remover"</string>
<string name="drag_to_remove_disabled" msgid="933046987838658850">"É preciso haver pelo menos <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> blocos"</string>
<string name="qs_edit" msgid="5583565172803472437">"Editar"</string>
@@ -843,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Abra o app para transmitir esta sessão."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"App desconhecido"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Parar transmissão"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Como funciona a transmissão"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmitir"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"As pessoas próximas a você com dispositivos Bluetooth compatíveis podem ouvir a mídia que você está transmitindo"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"As pessoas próximas com dispositivos Bluetooth compatíveis podem ler seu código QR ou usar o nome da transmissão e a senha para ouvir a transmissão."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Nome da transmissão"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Senha"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salvar"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Número da versão"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Número da versão copiado para a área de transferência."</string>
<string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index d8486b7a599b..d943d11d23e5 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Chip autentificat"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Confirmat"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Atingeți Confirmați pentru a finaliza"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentificat"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Folosiți PIN-ul"</string>
@@ -294,24 +294,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Astfel, deblocați accesul pentru toate aplicațiile și serviciile care au permisiunea de a folosi microfonul."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Astfel, deblocați accesul pentru toate aplicațiile și serviciile care au permisiunea de a folosi camera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Astfel, deblocați accesul pentru toate aplicațiile și serviciile care au permisiunea de a folosi camera sau microfonul."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Microfonul este blocat"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Camera este blocată"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Microfonul și camera sunt blocate"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Pentru deblocare, deplasați comutatorul de confidențialitate de pe dispozitiv în poziția Microfon activat pentru a permite accesul la microfon. Consultați manualul dispozitivului ca să găsiți comutatorul de confidențialitate."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Pentru deblocare, deplasați comutatorul de confidențialitate de pe dispozitiv în poziția Cameră foto activată pentru a permite accesul la cameră. Consultați manualul dispozitivului ca să găsiți comutatorul de confidențialitate."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Pentru deblocare, deplasați comutatorul de confidențialitate de pe dispozitiv în poziția Deblocat(ă) pentru a permite accesul. Consultați manualul dispozitivului ca să găsiți comutatorul de confidențialitate."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Microfon disponibil"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Cameră foto disponibilă"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Microfon și cameră disponibile"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Alt dispozitiv"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Comutați secțiunea Recente"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Se vor anunța prin sunete și vibrații numai alarmele, mementourile, evenimentele și apelanții specificați de dvs. Totuși, veți auzi tot ce alegeți să redați, inclusiv muzică, videoclipuri și jocuri."</string>
@@ -322,7 +313,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Atingeți din nou pentru a deschide"</string>
<string name="tap_again" msgid="1315420114387908655">"Atingeți din nou"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Glisați în sus pentru a deschide"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Apăsați pentru a deschide"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Glisați pentru a încerca din nou"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Deblocați pentru a folosi NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Dispozitivul aparține organizației dvs."</string>
@@ -794,18 +788,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Adăugați"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Sugerat de <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Dispozitiv blocat"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vedeți și controlați dispozitivele de pe ecranul de blocare?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Puteți adăuga comenzi pentru dispozitivele externe pe ecranul de blocare.\n\nAplicația de pe dispozitiv vă poate da posibilitatea să controlați unele dispozitive fără să deblocați telefonul.\n\nPuteți face modificări oricând în Setări."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Controlați dispozitivele de pe ecranul de blocare?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Puteți să controlați unele dispozitive fără să deblocați telefonul sau tableta.\n\nAplicația de pe dispozitiv stabilește dispozitivele care pot fi controlate astfel."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nu, mulțumesc"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Da"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Codul PIN conține litere sau simboluri"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verificați <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Cod PIN greșit"</string>
@@ -855,20 +843,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Pentru a proiecta această sesiune, deschideți aplicația."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplicație necunoscută"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Nu mai proiectați"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Cum funcționează transmisia"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmiteți"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Persoanele din apropiere cu dispozitive Bluetooth compatibile pot asculta conținutul pe care îl transmiteți"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Ca să asculte transmisia dvs., persoanele din apropiere cu dispozitive Bluetooth compatibile vă pot scana codul QR sau pot folosi numele și parola transmisiei."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Numele transmisiei"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Parolă"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Salvați"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numărul versiunii"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Numărul versiunii s-a copiat în clipboard."</string>
<string name="basic_status" msgid="2315371112182658176">"Deschideți conversația"</string>
@@ -946,8 +927,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aplicații active"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Opriți"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Oprită"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Gata"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"S-a copiat"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Din <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Închideți copierea interfeței de utilizare"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index bf6d6aa15b5a..bf35e937a142 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Лицо распознано"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Подтверждено"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Нажмите \"Подтвердить\""</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Аутентификация выполнена"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN-код"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Будет снята блокировка доступа для всех приложений и сервисов с разрешением на использование микрофона."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Будет снята блокировка доступа для всех приложений и сервисов с разрешением на использование камеры."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Будет снята блокировка доступа для всех приложений и сервисов с разрешением на использование камеры или микрофона."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофон заблокирован"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камера заблокирована"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофон и камера заблокированы"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Чтобы разблокировать микрофон, установите защитный переключатель на вашем устройстве в положение \"Вкл.\". Расположение переключателя должно быть указано в инструкции к устройству."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Чтобы разблокировать камеру, установите защитный переключатель на вашем устройстве в положение \"Вкл\". Расположение переключателя должно быть указано в инструкции к устройству."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Для разблокировки установите защитный переключатель на вашем устройстве в положение \"Вкл.\". Расположение переключателя должно быть указано в инструкции к устройству."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофон готов."</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камера готова."</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофон и камера готовы."</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Другое устройство"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Переключить режим обзора"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Вас не будут отвлекать звуки и вибрация, за исключением сигналов будильника, напоминаний, уведомлений о мероприятиях и звонков от помеченных контактов. Вы по-прежнему будете слышать включенную вами музыку, видео, игры и т. д."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Нажмите ещё раз, чтобы открыть"</string>
<string name="tap_again" msgid="1315420114387908655">"Нажмите ещё раз"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Проведите вверх, чтобы открыть"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Нажмите, чтобы открыть."</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Чтобы повторить попытку, проведите вверх"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Чтобы использовать NFC, разблокируйте устройство."</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Это устройство принадлежит вашей организации"</string>
@@ -362,7 +356,7 @@
<string name="user_remove_user_message" msgid="6702834122128031833">"Все приложения и данные этого пользователя будут удалены."</string>
<string name="user_remove_user_remove" msgid="8387386066949061256">"Удалить"</string>
<string name="media_projection_dialog_text" msgid="1755705274910034772">"Во время записи или трансляции у приложения \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\" будет доступ ко всей информации, которая видна на экране или воспроизводится с устройства, в том числе к паролям, сведениям о платежах, фотографиям, сообщениям и прослушиваемым аудиозаписям."</string>
- <string name="media_projection_dialog_service_text" msgid="958000992162214611">"Во время записи или трансляции у сервиса, предоставляющего эту функцию, будет доступ ко всей информации, которая видна на экране или проигрывается на устройстве, включая пароли, сведения о платежах, фотографии, сообщения и воспроизводимые звуки."</string>
+ <string name="media_projection_dialog_service_text" msgid="958000992162214611">"Во время записи или трансляции у сервиса, предоставляющего эту функцию, будет доступ ко всей информации, которая видна на экране или воспроизводится на устройстве, включая пароли, сведения о платежах, фотографии, сообщения и звуки."</string>
<string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Начать запись или трансляцию?"</string>
<string name="media_projection_dialog_title" msgid="3316063622495360646">"Начать запись или трансляцию через приложение \"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>\"?"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"Очистить все"</string>
@@ -800,18 +794,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Добавить"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Предложено приложением \"<xliff:g id="APP">%s</xliff:g>\""</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Устройство заблокировано"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Разрешить показывать устройства и управлять ими на заблокированном экране?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Вы можете добавить элементы управления внешними устройствами на заблокированный экран.\n\nПриложение на вашем устройстве может разрешать управление некоторыми устройствами с заблокированного экрана.\n\nИзменить параметры можно в любое время в настройках."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Управлять устройствами на заблокированном экране?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Вы можете управлять некоторыми устройствами с заблокированного телефона или планшета.\n\nКакими именно устройствами можно управлять, зависит от приложения на вашем устройстве."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Не сейчас"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Да"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-код содержит буквы или символы"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Подтвердите устройство \"<xliff:g id="DEVICE">%s</xliff:g>\""</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Неверный PIN-код"</string>
@@ -861,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Чтобы начать трансляцию сеанса, откройте приложение"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Неизвестное приложение"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Остановить трансляцию"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Как работают трансляции"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Трансляция"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Находящиеся рядом с вами люди с совместимыми устройствами Bluetooth могут слушать медиафайлы, которые вы транслируете."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Чтобы подключиться к вашей трансляции, пользователи с совместимыми устройствами Bluetooth могут отсканировать ваш QR-код или ввести название и пароль трансляции"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Название трансляции"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Пароль"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Сохранить"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Номер сборки"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Номер сборки скопирован в буфер обмена."</string>
<string name="basic_status" msgid="2315371112182658176">"Открытый чат"</string>
@@ -953,8 +934,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Активные приложения"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Остановить"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Остановлено"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Готово"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Скопировано."</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Из приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\""</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Закрыть меню копирования"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 8096315779f8..1d0155343b84 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"මුහුණ සත්‍යාපන කළා"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"තහවුරු කළා"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"සම්පූර්ණ කිරීමට තහවුරු කරන්න තට්ටු කර."</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"සත්‍යාපනය විය"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN භාවිත කරන්න"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"මෙය ඔබගේ මයික්‍රෆෝනය භාවිත කිරීමට ඉඩ දී ඇති සියලු යෙදුම් සහ සේවා සඳහා ප්‍රවේශය අවහිර කිරීම ඉවත් කරයි."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"මෙය ඔබගේ කැමරාව භාවිතා කිරීමට ඉඩ දී ඇති සියලු යෙදුම් සහ සේවා සඳහා ප්‍රවේශය අවහිර කිරීම ඉවත් කරයි."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"මෙය ඔබගේ කැමරාව හෝ මයික්‍රෆෝනය භාවිත කිරීමට ඉඩ දී ඇති සියලු යෙදුම් සහ සේවා සඳහා ප්‍රවේශය අවහිර කිරීම ඉවත් කරයි."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"මයික්‍රෆෝනය අවහිර කර ඇත"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"කැමරාව අවහිර කර ඇත"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"මයික්‍රෆෝනය සහ කැමරාව අවහිර කර ඇත"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"අවහිර කිරීම ඉවත් කිරීමට, මයික්‍රෆෝන ප්‍රවේශයට ඉඩ දීම සඳහා ඔබගේ උපාංගයේ පෞද්ගලිකත්ව ස්විචය මයික්‍රෆෝනය තිබෙන ස්ථානයට ගෙන යන්න. ඔබගේ උපාංගයේ පෞද්ගලිකත්ව ස්විචය සොයා ගැනීමට උපාංග අත්පොත බලන්න."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"අවහිර කිරීම ඉවත් කිරීමට, කැමරා ප්‍රවේශයට ඉඩ දීම සඳහා ඔබගේ උපාංගයේ පෞද්ගලිකත්ව ස්විචය කැමරාව තිබෙන ස්ථානයට ගෙන යන්න. ඔබගේ උපාංගයේ පෞද්ගලිකත්ව ස්විචය සොයා ගැනීමට උපාංග අත්පොත බලන්න."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"ඒවා අවහිර කිරීම ඉවත් කිරීමට, ප්‍රවේශයට ඉඩ දීමට ඔබගේ උපාංගයේ පෞද්ගලිකත්ව ස්විචය අවහිර කිරීම ඉවත් කළ ස්ථානයට ගෙන යන්න. ඔබගේ උපාංගයේ පෞද්ගලිකත්ව ස්විචය සොයා ගැනීමට උපාංග අත්පොත බලන්න."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"මයික්‍රෆෝනය ලබා ගත හැකිය"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"කැමරාව ලබා ගත හැකිය"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"මයික්‍රෆෝනය සහ කැමරාව ලබා ගත හැකිය"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"වෙනත් උපාංගය"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"දළ විශ්ලේෂණය ටොගල කරන්න"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"එලාම සිහිකැඳවීම්, සිදුවීම්, සහ ඔබ සඳහන් කළ අමතන්නන් හැර, ශබ්ද සහ කම්පනවලින් ඔබට බාධා නොවනු ඇත. සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු ඔබ වාදනය කිරීමට තෝරන ලද සියලු දේ ඔබට තවම ඇසෙනු ඇත."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"විවෘත කිරීමට නැවත තට්ටු කරන්න"</string>
<string name="tap_again" msgid="1315420114387908655">"නැවත තට්ටු කරන්න"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"විවෘත කිරීමට ස්වයිප් කරන්න"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"විවෘත කිරීමට ඔබන්න"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"නැවත උත්සාහ කිරීමට ඉහළට ස්වයිප් කරන්න"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC භාවිත කිරීමට අගුලු හරින්න"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"මෙම උපාංගය ඔබේ සංවිධානයට අයිතිය"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"එක් කරන්න"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"යෝජනා කළේ <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"උපාංගය අගුලු දමා ඇත"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"අගුලු තිරයෙන් උපාංග පෙන්වීම සහ පාලනය සිදු කරන්නද?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"ඔබට ඔබගේ බාහිර උපාංග සඳහා පාලන අගුලු තිරයට එක් කළ හැකිය.\n\nඔබගේ උපාංග යෙදුම ඔබගේ දුරකථනය හෝ ටැබ්ලටය අගුලු හැරීමෙන් තොරව සමහර උපාංග පාලනය කිරීමට ඉඩ ලබා දේ.\n\nඔබට සැකසීම් තුළ ඕනෑම වේලාවක වෙනස් කිරීම් සිදු කළ හැකිය."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"අගුලු තිරයෙන් උපාංග පාලනය කරන්නද?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"ඔබගේ දුරකථනය හෝ ටැබ්ලටය අගුලු හැරීමෙන් තොරව ඔබට සමහර උපාංග පාලනය කළ හැකිය.\n\nඔබගේ උපාංග යෙදුම මේ ආකාරයෙන් පාලනය කළ හැකි උපාංග තීරණය කරයි."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"එපා ස්තුතියි"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ඔව්"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN හි අකුරු හෝ සංකේත අඩංගු වේ"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> සත්‍යාපනය කරන්න"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"වැරදි PIN එකකි"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"මෙම සැසිය විකාශය කිරීමට, කරුණාකර යෙදුම විවෘත කරන්න."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"නොදන්නා යෙදුම"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"විකාශය නවතන්න"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"විකාශනය ක්‍රියා කරන ආකාරය"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"විකාශනය"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ගැළපෙන බ්ලූටූත් උපාංග සහිත ඔබ අවට සිටින පුද්ගලයින්ට ඔබ විකාශනය කරන මාධ්‍යයට සවන් දිය හැකිය"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ඔබගේ විකාශනයට සවන් දීමට, ගැළපෙන බ්ලූටූත් උපාංග සහිත අවට පුද්ගලයින්ට ඔබගේ QR කේතය ස්කෑන් කිරීමට හෝ ඔබගේ විකාශන නම සහ මුරපදය භාවිත කිරීමට හැකිය"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"විකාශන නම"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"මුරපදය"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"සුරකින්න"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"නිමැවුම් අංකය"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"නිමැවුම් අංකය පසුරු පුවරුවට පිටපත් කරන ලදි."</string>
<string name="basic_status" msgid="2315371112182658176">"සංවාදය විවෘත කරන්න"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"සක්‍රිය යෙදුම්"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"නවත්වන්න"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"නවත්වන ලදි"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"නිමයි"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"පිටපත් කරන ලදි"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> සිට"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Dismiss copy UI"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 69873d41155a..f45fc9d5ed1f 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -26,7 +26,7 @@
<string name="battery_low_percent_format" msgid="4276661262843170964">"Zostáva <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"Nedá sa nabíjať cez USB"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"Použite nabíjačku dodanú so zariadením"</string>
- <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Zapnúť šetrič batérie?"</string>
+ <string name="battery_saver_confirmation_title" msgid="1234998463717398453">"Chcete zapnúť šetrič batérie?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"Šetrič batérie"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"Zapnúť"</string>
<string name="battery_saver_start_action" msgid="8353766979886287140">"Zapnúť"</string>
@@ -34,8 +34,8 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Automatické otočenie obrazovky"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Povoliť aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g> prístup k zariadeniu <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Povoliť aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g> pristupovať k zariadeniu <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nTejto aplikácii nebolo udelené povolenie na nahrávanie, môže však snímať zvuk cez toto zariadenie USB."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Chcete povoliť aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g> prístup k zariadeniu <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Chcete otvoriť aplikáciu <xliff:g id="APPLICATION">%1$s</xliff:g> na spravovanie zariadenia <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Povoliť apl. <xliff:g id="APPLICATION">%1$s</xliff:g> prístup k zar. <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Otvoriť <xliff:g id="APPLICATION">%1$s</xliff:g> na spravovanie <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Tejto aplikácii nebolo udelené povolenie na nahrávanie, ale môže nahrávať zvuk cez toto zariadenie USB. Ak budete s týmto zariadením používať aplikáciu <xliff:g id="APPLICATION">%1$s</xliff:g>, nemusíte počuť hovory, upozornenia ani budíky."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Ak budete s týmto zariadením používať aplikáciu <xliff:g id="APPLICATION">%1$s</xliff:g>, nemusíte počuť hovory, upozornenia ani budíky."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Povoliť aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g> prístup k zariadeniu <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Tvár bola overená"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potvrdené"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Overenie dokončíte klepnutím na Potvrdiť"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Overené"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Použiť PIN"</string>
@@ -225,7 +225,7 @@
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"Automatické otáčanie"</string>
<string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"Automatické otáčanie obrazovky"</string>
<string name="quick_settings_location_label" msgid="2621868789013389163">"Poloha"</string>
- <string name="quick_settings_camera_label" msgid="5612076679385269339">"Prístup k fotoaparátu"</string>
+ <string name="quick_settings_camera_label" msgid="5612076679385269339">"Prístup ku kamere"</string>
<string name="quick_settings_mic_label" msgid="8392773746295266375">"Prístup k mikrofónu"</string>
<string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"K dispozícii"</string>
<string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Blokované"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Táto akcia odblokuje prístup všetkým aplikáciám a službám, ktoré majú povolené používať mikrofón."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Táto akcia odblokuje prístup všetkým aplikáciám a službám, ktoré majú povolené používať fotoaparát."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Táto akcia odblokuje prístup všetkým aplikáciám a službám, ktoré majú povolené používať fotoaparát alebo mikrofón."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofón je blokovaný"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera je blokovaná"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofón a kamera sú blokované"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Ak ho chcete odblokovať, posuňte prepínač ochrany súkromia vo svojom zariadení do polohy Mikrofón je zapnutý, čím povolíte prístup k mikrofónu. Prepínač ochrany súkromia v zariadení môžete nájsť pomocou príručky k nemu."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Ak ho chcete odblokovať, posuňte prepínač ochrany súkromia vo svojom zariadení do polohy Kamera je zapnutá, čím povolíte prístup ku kamere. Prepínač ochrany súkromia v zariadení môžete nájsť pomocou príručky k nemu."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Ak ho chcete odblokovať, posuňte prepínač ochrany súkromia vo svojom zariadení do odblokovanej polohy, čím povolíte prístup. Prepínač ochrany súkromia v zariadení môžete nájsť pomocou príručky k nemu."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofón je k dispozícii"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera je k dispozícii"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofón a kamera sú k dispozícii"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Iné zariadenie"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Prepnúť prehľad"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Nebudú vás vyrušovať zvuky ani vibrácie, iba budíky, pripomenutia, udalosti a volajúci, ktorých určíte. Budete naďalej počuť všetko, čo sa rozhodnete prehrať, ako napríklad hudbu, videá a hry."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Upozornenie otvoríte opätovným klepnutím"</string>
<string name="tap_again" msgid="1315420114387908655">"Klepnite znova"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Otvorte potiahnutím prstom nahor"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Stlačením otvoríte"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Potiahnutím nahor to skúste znova"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ak chcete použiť NFC, odomknite"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Toto zariadenie patrí vašej organizácii"</string>
@@ -735,7 +729,7 @@
<string name="auto_saver_title" msgid="6873691178754086596">"Klepnutím naplánujete aktivovanie Šetriča batérie"</string>
<string name="auto_saver_text" msgid="3214960308353838764">"Zapnite, keď je batéria takmer vybitá"</string>
<string name="no_auto_saver_action" msgid="7467924389609773835">"Nie, vďaka"</string>
- <string name="heap_dump_tile_name" msgid="2464189856478823046">"V7pis haldy SysUI"</string>
+ <string name="heap_dump_tile_name" msgid="2464189856478823046">"Výpis haldy SysUI"</string>
<string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Aplikácie používajú zoznam <xliff:g id="TYPES_LIST">%s</xliff:g>."</string>
<string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string>
<string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" a "</string>
@@ -788,7 +782,7 @@
<string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"odstránite z obľúbených"</string>
<string name="accessibility_control_move" msgid="8980344493796647792">"Presunúť na pozíciu <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Ovládacie prvky"</string>
- <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Vyberte ovládanie, ku ktorému chcete mať prístup z rýchlych nastavení"</string>
+ <string name="controls_favorite_subtitle" msgid="6481675111056961083">"Vyberte ovládače, ku ktorému chcete mať prístup z rýchlych nastavení"</string>
<string name="controls_favorite_rearrange" msgid="5616952398043063519">"Polohu každého ovládača môžete zmeniť jeho pridržaním a presunutím"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"Všetky ovládače boli odstránené"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"Zmeny neboli uložené"</string>
@@ -855,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Ak chcete túto reláciu prenášať, otvorte aplikáciu."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Neznáma aplikácia"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Zastaviť prenos"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Ako vysielanie funguje"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Vysielanie"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Ľudia v okolí s kompatibilnými zariadeniami s rozhraním Bluetooth si môžu vypočuť médiá, ktoré vysielate"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Ľudia v okolí s kompatibilnými zariadeniami s rozhraním Bluetooth si môžu vypočuť vaše vysielanie naskenovaním QR kódu alebo pomocou názvu a hesla tohto vysielania"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Názov vysielania"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Heslo"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Uložiť"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Číslo zostavy"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Číslo zostavy bolo skopírované do schránky."</string>
<string name="basic_status" msgid="2315371112182658176">"Otvorená konverzácia"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 6f9d453d4e49..134dba5ac2e6 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -34,18 +34,18 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Samodejno zasukaj zaslon"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Ali aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> dovolite dostop do dodatka USB <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Ali aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> dovolite dostop do naprave <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nTa aplikacija sicer nima dovoljenja za snemanje, vendar bi lahko zajemala zvok prek te naprave USB."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Ali aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> dovolite dostop do naprave USB <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Želite odpreti aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje naprave USB <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Dovolite aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> dostop do naprave <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Želite odpreti <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje naprave <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ta aplikacija sicer nima dovoljenja za snemanje, vendar bi lahko zajemala zvok prek te naprave USB. Uporaba aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g> s to napravo lahko povzroči, da boste preslišali klice, obvestila in alarme."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Uporaba aplikacije <xliff:g id="APPLICATION">%1$s</xliff:g> s to napravo lahko povzroči, da boste preslišali klice, obvestila in alarme."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Ali aplikaciji <xliff:g id="APPLICATION">%1$s</xliff:g> dovolite dostop do dodatka USB <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
- <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Želite odpreti aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje dodatka USB <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Želite odpreti <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje naprave <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Želite odpreti aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje naprave <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nTa aplikacija sicer nima dovoljenja za snemanje, vendar bi lahko zajemala zvok prek te naprave USB."</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Želite odpreti aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje dodatka USB <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Želite odpreti <xliff:g id="APPLICATION">%1$s</xliff:g> za upravljanje dodatka <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Namešč. prog. ne delujejo s tem dodatkom USB. Več o tem dodatku preberite na <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"Dodatek USB"</string>
<string name="label_view" msgid="6815442985276363364">"Prikaži"</string>
- <string name="always_use_device" msgid="210535878779644679">"Ko je dodatek <xliff:g id="USB_DEVICE">%2$s</xliff:g> povezan, vedno odpri aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
+ <string name="always_use_device" msgid="210535878779644679">"Ko je naprava <xliff:g id="USB_DEVICE">%2$s</xliff:g> povezana, vedno odpri aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
<string name="always_use_accessory" msgid="1977225429341838444">"Ko je dodatek <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> povezan, vedno odpri aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g>"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"Ali dovolite odpravljanje težav prek USB?"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"Računalnikov prstni odtis ključa RSA je:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Pristnost obraza je potrjena"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Potrjeno"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Za dokončanje se dotaknite »Potrdite«"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Preverjena pristnost"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Uporabi kodo PIN"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"S tem boste odblokirali dostop za vse aplikacije in storitve, ki imajo dovoljenje za uporabo mikrofona."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"S tem boste odblokirali dostop za vse aplikacije in storitve, ki imajo dovoljenje za uporabo fotoaparata."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"S tem boste odblokirali dostop za vse aplikacije in storitve, ki imajo dovoljenje za uporabo fotoaparata ali mikrofona."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon je blokiran"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera je blokirana"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon in kamera sta blokirana"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Če ga želite odblokirati, dovolite dostop do mikrofona tako, da pri njem premaknete stikalo za zasebnost v napravi v vklopljen položaj. V priročniku za napravo si oglejte, kje v napravi je stikalo za zasebnost."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Če jo želite odblokirati, dovolite dostop do kamere tako, da pri njej premaknete stikalo za zasebnost v napravi v vklopljen položaj. V priročniku za napravo si oglejte, kje v napravi je stikalo za zasebnost."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Če ju želite odblokirati, dovolite dostop tako, da premaknete stikalo za zasebnost v napravi v odblokiran položaj. V priročniku za napravo si oglejte, kje v napravi je stikalo za zasebnost."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon je na voljo"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera je na voljo"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon in kamera sta na voljo"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Druga naprava"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Vklop/izklop pregleda"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Ne bodo vas motili zvoki ali vibriranje, razen v primeru alarmov, opomnikov, dogodkov in klicateljev, ki jih določite. Še vedno pa boste slišali vse, kar se boste odločili predvajati, vključno z glasbo, videoposnetki in igrami."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Znova se dotaknite, da odprete"</string>
<string name="tap_again" msgid="1315420114387908655">"Znova se dotaknite možnosti"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Povlecite navzgor, da odprete"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pritisnite, če želite odpreti."</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Povlecite navzgor za vnovičen poskus"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Odklenite napravo, če želite uporabljati NFC."</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Ta naprava pripada vaši organizaciji"</string>
@@ -469,7 +463,7 @@
<string name="enable_demo_mode" msgid="3180345364745966431">"Omogočanje predstavitvenega načina"</string>
<string name="show_demo_mode" msgid="3677956462273059726">"Prikaz predstavitvenega načina"</string>
<string name="status_bar_ethernet" msgid="5690979758988647484">"Ethernet"</string>
- <string name="status_bar_alarm" msgid="87160847643623352">"Opozorilo"</string>
+ <string name="status_bar_alarm" msgid="87160847643623352">"Alarm"</string>
<string name="wallet_title" msgid="5369767670735827105">"Denarnica"</string>
<string name="wallet_empty_state_label" msgid="7776761245237530394">"Nastavite možnost hitrejšega in varnejšega plačevanja s telefonom."</string>
<string name="wallet_app_button_label" msgid="7123784239111190992">"Prikaži vse"</string>
@@ -714,7 +708,7 @@
<string name="mobile_data" msgid="4564407557775397216">"Mobilni podatki"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<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="8912204177152950766">"<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="5389597396308001471">"Wi-Fi je izklopljen"</string>
+ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi je izklopljen."</string>
<string name="bt_is_off" msgid="7436344904889461591">"Bluetooth je izklopljen"</string>
<string name="dnd_is_off" msgid="3185706903793094463">"Način »ne moti« je izklopljen"</string>
<string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Samodejno pravilo (<xliff:g id="ID_1">%s</xliff:g>) je vklopilo način »ne moti«."</string>
@@ -855,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Če želite predvajati to sejo, odprite aplikacijo."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Neznana aplikacija"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Ustavi predvajanje"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Kako deluje oddajanje"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Oddajanje"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Osebe v bližini z združljivo napravo Bluetooth lahko poslušajo predstavnost, ki jo oddajate."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Če želijo poslušati vaše oddajanje, lahko osebe v bližini z združljivo napravo Bluetooth optično preberejo kodo QR ali uporabijo ime oddajanja in geslo."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Ime oddajanja"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Geslo"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Shrani"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Delovna različica"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Delovna različica je bila kopirana v odložišče."</string>
<string name="basic_status" msgid="2315371112182658176">"Odprt pogovor"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 47249bb2c851..3e7cbb001068 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -34,7 +34,7 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Rrotullimi automatik i ekranit"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Të lejohet <xliff:g id="APPLICATION">%1$s</xliff:g> të ketë qasje te <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Dëshiron të lejosh që <xliff:g id="APPLICATION">%1$s</xliff:g> të ketë qasje te <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nKëtij aplikacioni nuk i është dhënë leje për regjistrim, por mund të regjistrojë audio përmes kësaj pajisjeje USB."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Të lejohet që <xliff:g id="APPLICATION">%1$s</xliff:g> të ketë qasje te <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Të lejohet \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" të qaset te <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Të hapet <xliff:g id="APPLICATION">%1$s</xliff:g> për të përdorur <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Këtij aplikacioni nuk i është dhënë leje për regjistrim, por mund të regjistrojë audio përmes kësaj pajisjeje USB. Përdorimi i <xliff:g id="APPLICATION">%1$s</xliff:g> me këtë pajisje mund të ndalojë dëgjimin e telefonatave, njoftimeve dhe alarmeve."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Përdorimi i <xliff:g id="APPLICATION">%1$s</xliff:g> me këtë pajisje mund të ndalojë dëgjimin e telefonatave, njoftimeve dhe alarmeve."</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Fytyra u vërtetua"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Konfirmuar"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Trokit \"Konfirmo\" për ta përfunduar"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"U vërtetua"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Përdor kodin PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Kjo zhbllokon qasjen për të gjitha aplikacionet dhe shërbimet që lejohen të përdorin mikrofonin tënd."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Kjo zhbllokon qasjen për të gjitha aplikacionet dhe shërbimet që lejohen të përdorin kamerën tënde."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Kjo zhbllokon qasjen për të gjitha aplikacionet dhe shërbimet që lejohen të përdorin kamerën ose mikrofonin tënd."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofoni është bllokuar"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera është bllokuar"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofoni dhe kamera janë bllokuar"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Për ta zhbllokuar, lëviz çelësin e privatësisë në pajisjen tënde në pozicionin e ndezjes së mikrofonit për të lejuar qasjen te mikrofoni. Referoju manualit të pajisjes për të gjetur vendndodhjen e çelësit të privatësisë në pajisjen tënde."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Për ta zhbllokuar, lëviz çelësin e privatësisë në pajisjen tënde në pozicionin e ndezjes së kamerës për të lejuar qasjen te kamera. Referoju manualit të pajisjes për të gjetur vendndodhjen e çelësit të privatësisë në pajisjen tënde."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Për t\'i zhbllokuar, lëviz çelësin e privatësisë në pajisjen tënde në pozicionin e zhbllokuar për të lejuar qasjen. Referoju manualit të pajisjes për të gjetur vendndodhjen e çelësit të privatësisë në pajisjen tënde."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofoni ofrohet"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera ofrohet"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofoni dhe kamera ofrohen"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Pajisje tjetër"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Kalo te përmbledhja"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Nuk do të shqetësohesh nga tingujt dhe dridhjet, përveç alarmeve, alarmeve rikujtuese, ngjarjeve dhe telefonuesve që specifikon. Do të vazhdosh të dëgjosh çdo gjë që zgjedh të luash duke përfshirë muzikën, videot dhe lojërat."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Trokit përsëri për ta hapur"</string>
<string name="tap_again" msgid="1315420114387908655">"Trokit sërish"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Rrëshqit lart për ta hapur"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Shtyp për të hapur"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Rrëshqit lart për të provuar përsëri"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Shkyçe për të përdorur NFC-në"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Kjo pajisje i përket organizatës sate"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Shto"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Sugjeruar nga <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Pajisja është e kyçur"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Të shfaqen dhe të kontrollohen pajisjet nga ekrani i kyçjes?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Mund të shtosh kontrolle për pajisjet e tua të jashtme në ekranin e kyçjes.\n\nAplikacioni në pajisjen tënde mund të të lejojë të kontrollosh disa pajisje pa shkyçur telefonin apo tabletin.\n\nMund të bësh ndryshime në çdo kohë te \"Cilësimet\"."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Të kontrollohen pajisjet nga ekrani i kyçjes?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Mund të kontrollosh disa pajisje pa shkyçur telefonin apo tabletin.\n\nAplikacioni në pajisjen tënde përcakton se cilat pajisje mund të kontrollohen në këtë mënyrë."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Jo, faleminderit"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Po"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Kodi PIN përmban shkronja ose simbole"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifiko <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Kod PIN i gabuar"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Hap aplikacionin për të transmetuar këtë seancë."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Aplikacion i panjohur"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Ndalo transmetimin"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Si funksionon transmetimi"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Transmetimi"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Personat në afërsi me ty me pajisje të përputhshme me Bluetooth mund të dëgjojnë median që ti po transmeton"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Për të dëgjuar transmetimin tënd, personat në afërsi me pajisje të përputhshme me Bluetooth mund të skanojnë kodin tënd QR ose të përdorin emrin dhe fjalëkalimin e transmetimit tënd"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Emri i transmetimit"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Fjalëkalimi"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Ruaj"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numri i ndërtimit"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Numri i ndërtimit u kopjua te kujtesa e fragmenteve"</string>
<string name="basic_status" msgid="2315371112182658176">"Hap bisedën"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aplikacionet aktive"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Ndalo"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Ndaluar"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"U krye"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"U kopjua"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Nga <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Hiq kopjen e ndërfaqes së përdoruesit"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index fe8923776a78..0991763c09dd 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -32,14 +32,14 @@
<string name="battery_saver_start_action" msgid="8353766979886287140">"Укључи"</string>
<string name="battery_saver_dismiss_action" msgid="7199342621040014738">"Не, хвала"</string>
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Аутоматско ротирање екрана"</string>
- <string name="usb_device_permission_prompt" msgid="4414719028369181772">"Желите ли да дозволите да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_device_permission_prompt" msgid="4414719028369181772">"Дозвољавате да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Желите ли да дозволите да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nОва апликација нема дозволу за снимање, али би могла да снима звук помоћу овог USB уређаја."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Желите ли да дозволите да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Дозвољавате да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Желите ли да отворите апликацију <xliff:g id="APPLICATION">%1$s</xliff:g> да бисте користили уређај <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Ова апликација нема дозволу за снимање, али би могла да снима звук помоћу овог USB уређаја. Ако користите апликацију <xliff:g id="APPLICATION">%1$s</xliff:g> са овим уређајем, можда нећете чути позиве, обавештења и аларме."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Ако користите апликацију <xliff:g id="APPLICATION">%1$s</xliff:g> са овим уређајем, можда нећете чути позиве, обавештења и аларме."</string>
- <string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Желите ли да дозволите да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
- <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Желите ли да отворите апликацију <xliff:g id="APPLICATION">%1$s</xliff:g> да бисте користили уређај <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
+ <string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Дозвољавате да <xliff:g id="APPLICATION">%1$s</xliff:g> приступа уређају <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
+ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"Желите да отворите <xliff:g id="APPLICATION">%1$s</xliff:g> да бисте користили <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"Желите ли да отворите апликацију <xliff:g id="APPLICATION">%1$s</xliff:g> ради руковања уређајем <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nОва апликација нема дозволу за снимање, али би могла да снима звук помоћу овог USB уређаја."</string>
<string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"Желите ли да отворите апликацију <xliff:g id="APPLICATION">%1$s</xliff:g> да бисте користили уређај <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Инсталиране апликације не функционишу са овим USB помоћним уређајем. Сазнајте више о њему на адреси <xliff:g id="URL">%1$s</xliff:g>"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Лице је потврђено"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Потврђено"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Додирните Потврди да бисте завршили"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Идентитет је потврђен"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Користите PIN"</string>
@@ -294,24 +294,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Овим ће се одблокирати приступ за све апликације и услуге које имају дозволу за коришћење микрофона."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Овим ће се одблокирати приступ за све апликације и услуге које имају дозволу за коришћење камере."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Овим ће се одблокирати приступ за све апликације и услуге које имају дозволу за коришћење камере или микрофона."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Микрофон је блокиран"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камера је блокирана"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Микрофон и камера су блокирани"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Да бисте одблокирали, померите прекидач за приватност на уређају на позицију укључено за микрофон како бисте омогућили приступ микрофону. Погледајте приручник за уређај да бисте пронашли прекидач за приватност на уређају."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Да бисте одблокирали, померите прекидач за приватност на уређају на позицију укључено за камеру како бисте омогућили приступ камери. Погледајте приручник за уређај да бисте пронашли прекидач за приватност на уређају."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Да бисте их одблокирали, померите прекидач за приватност на уређају на позицију одблокирано како бисте омогућили приступ. Погледајте приручник за уређај да бисте пронашли прекидач за приватност на уређају."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Микрофон је доступан"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камера је доступна"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Микрофон и камера су доступни"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Други уређај"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Укључи/искључи преглед"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Неће вас узнемиравати звукови и вибрације осим за аларме, подсетнике, догађаје и позиваоце које наведете. И даље ћете чути све што одаберете да пустите, укључујући музику, видео снимке и игре."</string>
@@ -322,7 +313,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Додирните поново да бисте отворили"</string>
<string name="tap_again" msgid="1315420114387908655">"Додирните поново"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Превуците нагоре да бисте отворили"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Притисните да бисте отворили"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Превуците нагоре да бисте пробали поново"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Откључајте да бисте користили NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Овај уређај припада организацији"</string>
@@ -794,18 +788,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Додај"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Предлаже <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Уређај је закључан"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Желите ли да приказујете и контролишете уређаје са закључаног екрана?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Можете да додате контроле за спољне уређаје на закључани екран.\n\nАпликација на уређају може да вам омогући да контролишете неке уређаје без откључавања телефона или таблета.\n\nТо можете да промените кад год желите у Подешавањима."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Желите ли да контролишете уређаје са закључаног екрана?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Неке уређаје можете да контролишете без откључавања телефона или таблета.\n\nАпликација на уређају одређује који уређаји могу да се контролишу на овај начин."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Не, хвала"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Да"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN садржи слова или симболе"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Верификујте: <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Погрешан PIN"</string>
@@ -855,20 +843,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Да бисте пребацивали ову сесију, отворите апликацију."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Непозната апликација"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Заустави пребацивање"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Како функционише емитовање"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Емитовање"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Људи у близини са компатибилним Bluetooth уређајима могу да слушају медијски садржај који емитујете"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Да би слушали емитовање, људи у близини са компатибилним Bluetooth уређајима могу да скенирају QR кôд или да користе назив и лозинку емитовања"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Назив емитовања"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Лозинка"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Сачувај"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Број верзије"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Број верзије је копиран у привремену меморију."</string>
<string name="basic_status" msgid="2315371112182658176">"Отворите конверзацију"</string>
@@ -946,8 +927,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Активне апликације"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Заустави"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Заустављено"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Готово"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Копирано је"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Из: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Одбаци копирање корисничког интерфејса"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 30a3aa9d551e..c6c9d119a173 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Ansiktet har autentiserats"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Bekräftat"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Slutför genom att trycka på Bekräfta"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Autentiserad"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Använd pinkod"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Detta återaktiverar åtkomsten för alla appar och tjänster som tillåts att använda mikrofonen."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Detta återaktiverar åtkomsten för alla appar och tjänster som tillåts att använda kameran."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Detta återaktiverar åtkomsten för alla appar och tjänster som tillåts att använda kameran eller mikrofonen."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofonen är blockerad"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kameran är blockerad"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofonen och kameran är blockerade"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Du återaktiverar genom att flytta integritetsreglaget på enheten till läget för aktiverad mikrofon och ge åtkomst till mikrofonen. Läs i enhetens bruksanvisning för att hitta integritetsreglaget på enheten."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Du återaktiverar genom att flytta integritetsreglaget på enheten till läget för aktiverad kamera och ge åtkomst till kameran. Läs i enhetens bruksanvisning för att hitta integritetsreglaget på enheten."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Du återaktiverar genom att flytta integritetsreglaget på enheten till läget för att återaktivera och ge åtkomst. Läs i enhetens bruksanvisning för att hitta integritetsreglaget på enheten."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofonen kan användas"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kameran kan användas"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofonen och kameran kan användas"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Annan enhet"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Aktivera och inaktivera översikten"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Du blir inte störd av ljud och vibrationer, förutom från alarm, påminnelser, händelser och specifika samtal. Ljudet är fortfarande på för sådant du väljer att spela upp, till exempel musik, videor och spel."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Tryck igen för att öppna"</string>
<string name="tap_again" msgid="1315420114387908655">"Tryck igen"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Öppna genom att svepa uppåt"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Tryck för att öppna"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Svep uppåt om du vill försöka igen"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Lås upp om du vill använda NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Den här enheten tillhör organisationen"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Lägg till"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Förslag från <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Enheten är låst"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Vill du se och styra enheter på låsskärmen?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Du kan lägga till reglage att styra externa enheter med på låsskärmen.\n\nVissa enheter kan gå att styra med appen på enheten utan att du behöver låsa upp telefonen eller surfplattan.\n\nDu kan när som helst ändra detta i inställningarna."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Vill du styra enheter på låsskärmen?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Du kan styra vissa enheter utan att låsa upp telefonen eller surfplattan.\n\nVilka enheter som går att styra på det här sättet beror på appen på enheten."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Nej tack"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ja"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Pinkoden innehåller bokstäver eller symboler"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Verifiera <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Fel pinkod"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Öppna appen om du vill casta den här sessionen."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Okänd app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Sluta casta"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Så fungerar utsändning"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Utsändning"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Personer i närheten med kompatibla Bluetooth-enheter kan lyssna på medieinnehåll som du sänder ut"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Personer i närheten med kompatibla Bluetooth-enheter kan lyssna på utsändningen genom att skanna QR-koden eller genom att använda utsändningens namn och lösenord"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Utsändningsnamn"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Lösenord"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Spara"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Versionsnummer"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Versionsnumret har kopierats till urklipp."</string>
<string name="basic_status" msgid="2315371112182658176">"Öppen konversation"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Aktiva appar"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stoppa"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Stoppad"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Klar"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopierades"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Från <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Stäng användargränssnittet för kopiering"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index e7180e45e857..410a661cf5cf 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -45,8 +45,8 @@
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Hakuna programu zilizosakinishwa zinazofanya kazi na kifaa hiki cha USB. Pata maelezo zaidi kuhusu kifaa hiki kwenye <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"Kifaa cha Usb"</string>
<string name="label_view" msgid="6815442985276363364">"Ona"</string>
- <string name="always_use_device" msgid="210535878779644679">"Fungua <xliff:g id="APPLICATION">%1$s</xliff:g> kila wakati <xliff:g id="USB_DEVICE">%2$s</xliff:g> inaunganishwa"</string>
- <string name="always_use_accessory" msgid="1977225429341838444">"Fungua <xliff:g id="APPLICATION">%1$s</xliff:g> kila wakati <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> inaunganishwa"</string>
+ <string name="always_use_device" msgid="210535878779644679">"Fungua <xliff:g id="APPLICATION">%1$s</xliff:g> kila wakati <xliff:g id="USB_DEVICE">%2$s</xliff:g> imeunganishwa"</string>
+ <string name="always_use_accessory" msgid="1977225429341838444">"Fungua <xliff:g id="APPLICATION">%1$s</xliff:g> kila wakati <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> imeunganishwa"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"Ruhusu utatuaji wa USB?"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"Kitambulisho dijitali cha kifunguo cha RSA cha kompyuta ni:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="4003121804294739548">"Ruhusu kutoka kwenye kompyuta hii kila wakati"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Uso umethibitishwa"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Imethibitishwa"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Gusa Thibitisha ili ukamilishe"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Umethibitishwa"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Tumia PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Hatua hii huruhusu programu na huduma zote zenye idhini zitumie maikrofoni yako."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Hatua hii huruhusu programu na huduma zote zenye idhini zitumie kamera yako."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Hatua hii huruhusu programu na huduma zote zenye idhini zitumie kamera au maikrofoni yako."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Maikrofoni imezuiwa"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera imezuiwa"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Maikrofoni na kamera zimezuiliwa"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Ili uondoe kizuizi, sogeza swichi ya faragha kwenye kifaa chako uiweke kwenye nafasi ya kuwasha maikrofoni ili uruhusu ufikiaji wa maikrofoni. Rejelea mwongozo wa kifaa ili uitambue swichi ya faragha kwenye kifaa chako."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Ili uondoe kizuizi, sogeza swichi ya faragha kwenye kifaa chako uiweke kwenye nafasi ya kuwasha kamera ili uruhusu ufikiaji wa kamera. Rejelea mwongozo wa kifaa ili uitambue swichi ya faragha kwenye kifaa chako."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Ili uwaondolee vizuizi, sogeza swichi ya faragha kwenye kifaa uiweke kwenye nafasi ya kuondoa kizuizi ili uruhusu ufikiaji. Rejelea mwongozo wa kifaa ili uitambue swichi ya faragha kwenye kifaa chako."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Maikrofoni inapatikana"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera inapatikana"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Maikrofoni na kamera zinapatikana"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Kifaa kingine"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Washa Muhtasari"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Hutasumbuliwa na sauti na mitetemo, isipokuwa kengele, vikumbusho, matukio na simu zinazopigwa na watu uliobainisha. Bado utasikia chochote utakachochagua kucheza, ikiwa ni pamoja na muziki, video na michezo."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Gusa tena ili ufungue"</string>
<string name="tap_again" msgid="1315420114387908655">"Gusa tena"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Telezesha kidole juu ili ufungue"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Bofya ili ufungue"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Telezesha kidole juu ili ujaribu tena"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Fungua ili utumie NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Kifaa hiki kinamilikiwa na shirika lako"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Weka"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Kimependekezwa na <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Kifaa kimefungwa"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Ungependa kuonyesha na udhibiti vifaa kwenye skrini iliyofungwa?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Unaweza kuweka vidhibiti kwa ajili ya vifaa vyako vya nje kwenye skrini iliyofungwa.\n\nProgramu ya kifaa chako huenda ikakuruhusu udhibiti baadhi ya vifaa bila kufungua simu au kompyuta kibao yako.\n\nUnaweza kufanya mabadiliko muda wowote kwenye Mipangilio."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Ungependa kudhibiti vifaa kwenye skrini iliyofungwa?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Unaweza kudhibiti baadhi ya vifaa bila kufungua simu au kompyuta kibao yako.\n\nProgramu ya kifaa chako hubainisha ni vifaa vipi vinaweza kudhibitiwa kwa njia hii."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Hapana"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ndiyo"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN ina herufi au alama"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Thibitisha <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Nambari ya PIN si sahihi"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Ili utume kipindi hiki, tafadhali fungua programu."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Programu isiyojulikana"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Acha kutuma"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Jinsi utangazaji unavyofanya kazi"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Tangaza"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Watu walio karibu nawe wenye vifaa oanifu vya Bluetooth wanaweza kusikiliza maudhui unayoyatangaza"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Ili wasikilize tangazo lako, watu walio karibu wenye vifaa oanifu vya Bluetooth wanaweza kuchanganua msimbo wako wa QR au kutumia jina na nenosiri la tangazo lako"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Jina la Tangazo"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Nenosiri"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Hifadhi"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Nambari ya muundo"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Nambari ya muundo imewekwa kwenye ubao wa kunakili."</string>
<string name="basic_status" msgid="2315371112182658176">"Fungua mazungumzo"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Programu zinazotumika"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Simamisha"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Imesimamishwa"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Imemaliza"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Imenakiliwa"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Kutoka <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Ondoa kiolesura cha nakala"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 0ebf998b8ca9..a2f85c7c0b39 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"முகம் அங்கீகரிக்கப்பட்டது"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"உறுதிப்படுத்தப்பட்டது"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"முடிக்க \'உறுதிப்படுத்துக\' என்பதை தட்டவும்"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"அங்கீகரிக்கப்பட்டது"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"பின்னைப் பயன்படுத்து"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"உங்கள் மைக்ரோஃபோனைப் பயன்படுத்த அனுமதிக்கப்பட்டுள்ள அனைத்து ஆப்ஸ் மற்றும் சேவைகளை அணுகுவதற்கான தடுப்பை இது நீக்கும்."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"உங்கள் கேமராவைப் பயன்படுத்த அனுமதிக்கப்பட்டுள்ள அனைத்து ஆப்ஸ் மற்றும் சேவைகளை அணுகுவதற்கான தடுப்பை இது நீக்கும்."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"உங்கள் கேமராவையோ மைக்ரோஃபோனையோ பயன்படுத்த அனுமதிக்கப்பட்டுள்ள அனைத்து ஆப்ஸ் மற்றும் சேவைகளை அணுகுவதற்கான தடுப்பை இது நீக்கும்."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"மைக்ரோஃபோன் அணுகல் முடக்கப்பட்டுள்ளது"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"கேமரா அணுகல் முடக்கப்பட்டுள்ளது"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"மைக்ரோஃபோன் &amp; கேமரா அணுகல் முடக்கப்பட்டுள்ளது"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"மைக்ரோஃபோனுக்கான அணுகலை அனுமதிக்க, உங்கள் சாதனத்தில் உள்ள தனியுரிமை ஸ்விட்ச்சை மைக்ரோஃபோனுக்கு \'ஆன்\' என்று அமைக்கவும். உங்கள் சாதனத்தில் தனியுரிமை ஸ்விட்ச் எங்குள்ளது என்பதை அறிய சாதனக் கையேட்டைப் பார்க்கவும்."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"கேமராவிற்கான அணுகலை அனுமதிக்க, உங்கள் சாதனத்தில் உள்ள தனியுரிமை ஸ்விட்ச்சை கேமராவிற்கு \'ஆன்\' என்று அமைக்கவும். உங்கள் சாதனத்தில் தனியுரிமை ஸ்விட்ச் எங்குள்ளது என்பதை அறிய சாதனக் கையேட்டைப் பார்க்கவும்."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"அவற்றுக்கான அணுகலை அனுமதிக்க, உங்கள் சாதனத்தில் உள்ள தனியுரிமை ஸ்விட்ச்சை அவற்றுக்கு \'ஆன்\' என்று அமைக்கவும். உங்கள் சாதனத்தில் தனியுரிமை ஸ்விட்ச் எங்குள்ளது என்பதை அறிய சாதனக் கையேட்டைப் பார்க்கவும்."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"மைக்ரோஃபோன் அணுகல் உள்ளது"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"கேமரா அணுகல் உள்ளது"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"மைக்ரோஃபோன் &amp; கேமரா அணுகல் உள்ளது"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"பிற சாதனம்"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"மேலோட்டப் பார்வையை நிலைமாற்று"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"அலாரங்கள், நினைவூட்டல்கள், நிகழ்வுகள் மற்றும் குறிப்பிட்ட அழைப்பாளர்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள், கேம்ஸ் போன்றவை) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"அன்லாக் செய்ய, மீண்டும் தட்டவும்"</string>
<string name="tap_again" msgid="1315420114387908655">"மீண்டும் தட்டவும்"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"திறப்பதற்கு மேல் நோக்கி ஸ்வைப் செய்யவும்"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"திறப்பதற்கு அழுத்தவும்"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"மீண்டும் முயல மேல்நோக்கி ஸ்வைப் செய்யவும்"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCயைப் பயன்படுத்த அன்லாக் செய்யவும்"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"இந்த சாதனம் உங்கள் நிறுவனத்துக்கு சொந்தமானது"</string>
@@ -357,7 +351,7 @@
<string name="user_remove_user_remove" msgid="8387386066949061256">"அகற்று"</string>
<string name="media_projection_dialog_text" msgid="1755705274910034772">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> உங்கள் திரையில் தெரியும் தகவல்கள், ரெக்கார்டு செய்யும்போதோ அனுப்பும்போதோ உங்கள் சாதனத்திலிருந்து பிளே ஆகும் அனைத்து தகவல்கள் ஆகியவற்றுக்கான அணுகலைக் கொண்டிருக்கும். கடவுச்சொற்கள், பேமெண்ட் தொடர்பான தகவல்கள், படங்கள், மெசேஜ்கள், நீங்கள் பிளே செய்யும் ஆடியோ போன்ற அனைத்துத் தகவல்களும் இதில் அடங்கும்."</string>
<string name="media_projection_dialog_service_text" msgid="958000992162214611">"இந்தச் செயல்பாட்டை வழங்கும் சேவையானது உங்கள் திரையில் தெரியும் தகவல்கள், ரெக்கார்டு செய்யும்போதோ அனுப்பும்போதோ உங்கள் சாதனத்திலிருந்து பிளே ஆகும் அனைத்துத் தகவல்கள் ஆகியவற்றுக்கான அணுகலைக் கொண்டிருக்கும். கடவுச்சொற்கள், பேமெண்ட் தொடர்பான தகவல்கள், படங்கள், மெசேஜ்கள், நீங்கள் பிளே செய்யும் ஆடியோ போன்ற அனைத்துத் தகவல்களும் இதில் அடங்கும்."</string>
- <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"ரெக்கார்டிங் செய்யவோ அனுப்புவதற்கோ தொடங்கிவிட்டீர்களா?"</string>
+ <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"ரெக்கார்டிங் செய்யவோ அனுப்புவோ தொடங்கவா?"</string>
<string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> மூலம் ரெக்கார்டிங் செய்யவோ அனுப்புவதற்கோ தொடங்கிவீட்டீர்களா?"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"எல்லாவற்றையும் அழி"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"நிர்வகி"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"சேர்"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ஆப்ஸால் பரிந்துரைக்கப்பட்டது"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"சாதனம் பூட்டப்பட்டது"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"பூட்டுத் திரையிலிருந்தே சாதனங்களைப் பார்க்கவும் கட்டுப்படுத்தவும் அனுமதிக்கவா?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"வெளிப்புறச் சாதனங்களுக்கான கட்டுப்பாடுகளை உங்கள் பூட்டுத் திரையில் சேர்க்கலாம்.\n\nஉங்கள் மொபைலையோ டேப்லெட்டையோ அன்லாக் செய்யாமலேயே சில சாதனங்களைக் கட்டுப்படுத்த சாதன ஆப்ஸ் உங்களை அனுமதிக்கக்கூடும்.\n\nஅமைப்புகளுக்குச் சென்று எப்போது வேண்டுமானாலும் மாற்றங்களைச் செய்யலாம்."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"பூட்டுத் திரையிலிருந்தே சாதனங்களைக் கட்டுப்படுத்தவா?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"உங்கள் மொபைலையோ டேப்லெட்டையோ அன்லாக் செய்யாமலேயே சில சாதனங்களை நீங்கள் கட்டுப்படுத்தலாம்.\n\nஎந்தெந்தச் சாதனங்களை இவ்வாறு கட்டுப்படுத்தலாம் என்பதை உங்கள் சாதன ஆப்ஸ் தீர்மானிக்கும்."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"வேண்டாம்"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ஆம்"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"பின்னில் எழுத்துகள் அல்லது குறிகள் உள்ளன"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> ஐச் சரிபார்த்தல்"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"தவறான பின்"</string>
@@ -849,27 +837,20 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"இந்த அமர்வை அலைபரப்ப ஆப்ஸைத் திறங்கள்."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"அறியப்படாத ஆப்ஸ்"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"அலைபரப்புவதை நிறுத்து"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"பிராட்காஸ்ட் எவ்வாறு செயல்படுகிறது?"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"பிராட்காஸ்ட்"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"நீங்கள் பிராட்காஸ்ட் செய்யும் மீடியாவை அருகிலுள்ளவர்கள் இணக்கமான புளூடூத் சாதனங்கள் மூலம் கேட்கலாம்"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"அருகிலுள்ளவர்கள் இணக்கமான புளூடூத் சாதனத்தின் மூலம் உங்கள் QR குறியீட்டை ஸ்கேன் செய்தோ பிராட்காஸ்ட் பெயரையும் கடவுச்சொல்லையும் பயன்படுத்தியோ பிராட்காஸ்ட் மீடியாவைக் கேட்கலாம்"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"பிராட்காஸ்ட்டின் பெயர்"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"கடவுச்சொல்"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"சேமி"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"பதிப்பு எண்"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"பதிப்பு எண் கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது."</string>
<string name="basic_status" msgid="2315371112182658176">"திறந்தநிலை உரையாடல்"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"உரையாடல் விட்ஜெட்டுகள்"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ஓர் உரையாடலை உங்கள் முகப்புத் திரையில் சேர்க்க அந்த உரையாடலைத் தட்டுங்கள்"</string>
<string name="no_conversations_text" msgid="5354115541282395015">"உங்கள் சமீபத்திய உரையாடல்கள் இங்கே காட்டப்படும்"</string>
- <string name="priority_conversations" msgid="3967482288896653039">"முன்னுரிமை அளிக்கப்பட்ட உரையாடல்கள்"</string>
+ <string name="priority_conversations" msgid="3967482288896653039">"முக்கிய உரையாடல்கள்"</string>
<string name="recent_conversations" msgid="8531874684782574622">"சமீபத்திய உரையாடல்கள்"</string>
<string name="days_timestamp" msgid="5821854736213214331">"<xliff:g id="DURATION">%1$s</xliff:g> நாட்களுக்கு முன்பு"</string>
<string name="one_week_timestamp" msgid="4925600765473875590">"1 வாரத்திற்கு முன்பு"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"செயலிலுள்ள ஆப்ஸ்"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"நிறுத்து"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"இயங்கவில்லை"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"முடிந்தது"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"நகலெடுக்கப்பட்டது"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> ஆப்ஸிலிருந்து"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"கிளிப்போர்டு மேலடுக்கை மூடுக"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index a7851a0167e7..12542afccf93 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -35,13 +35,13 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>ని యాక్సెస్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ని అనుమతించాలా?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>యాక్సెస్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ను అనుమతించాలా?\nఈ యాప్‌నకు రికార్డ్ చేసే అనుమతి మంజూరు చేయబడలేదు, కానీ ఈ USB పరికరం ద్వారా ఆడియోను క్యాప్చర్ చేయగలదు."</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>‌ను యాక్సెస్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>‌ను అనుమతించాలా?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>‌ను నిర్వహించడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>‌ను తెరవాలా?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>‌ను హ్యాండిల్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>‌ను తెరవాలా?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"ఈ యాప్‌నకు రికార్డ్ చేసే అనుమతి మంజూరు కాలేదు, అయినా ఈ USB పరికరం ద్వారా ఆడియోను క్యాప్చర్ చేయగలదు. ఈ పరికరంలో <xliff:g id="APPLICATION">%1$s</xliff:g>‌ను ఉపయోగించడం వలన కాల్స్, నోటిఫికేషన్‌లు, అలారంలను వినబడనీయకుండా నివారించవచ్చు."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"ఈ పరికరంలో <xliff:g id="APPLICATION">%1$s</xliff:g>‌ను ఉపయోగించడం వలన కాల్స్, నోటిఫికేషన్‌లు, అలారంలను వినబడనీయకుండా నివారించవచ్చు."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g>ని యాక్సెస్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ని అనుమతించాలా?"</string>
- <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>ని నిర్వహించడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ని తెరవాలా?"</string>
+ <string name="usb_device_confirm_prompt" msgid="4091711472439910809">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>ని హ్యాండిల్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ని తెరవాలా?"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"<xliff:g id="USB_DEVICE">%2$s</xliff:g>ని హ్యాండిల్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ను తెరవాలా?\nఈ యాప్‌కు రికార్డ్ చేసే అనుమతి మంజూరు కాలేదు, అయినా ఈ USB పరికరం ద్వారా ఆడియోను క్యాప్చర్ చేయగలదు."</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g>ని నిర్వహించడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ని తెరవాలా?"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g>ని హ్యాండిల్ చేయడానికి <xliff:g id="APPLICATION">%1$s</xliff:g>ని తెరవాలా?"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"ఈ USB ఉపకరణంతో ఇన్‌స్టాల్ చేయబడిన యాప్‌లు ఏవీ పని చేయవు. ఈ ఉపకరణం గురించి <xliff:g id="URL">%1$s</xliff:g>లో మరింత తెలుసుకోండి"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"USB ఉపకరణం"</string>
<string name="label_view" msgid="6815442985276363364">"చూడండి"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ముఖం ప్రామాణీకరించబడింది"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"నిర్ధారించబడింది"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"పూర్తి చేయడానికి \"నిర్ధారించు\" నొక్కండి"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ప్రామాణీకరించబడింది"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"పిన్‌ను ఉపయోగించు"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"మీ మైక్రోఫోన్‌ను ఉపయోగించడానికి అనుమతి పొందిన అన్ని యాప్‌లు, సర్వీస్‌లకు యాక్సెస్‌ను ఇది అన్‌బ్లాక్ చేస్తుంది."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"ఇది, మీ కెమెరాను ఉపయోగించడానికి అనుమతి పొందిన అన్ని యాప్‌లకు, సర్వీస్‌లకు యాక్సెస్‌ను అన్‌బ్లాక్ చేస్తుంది."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"ఇది, మీ కెమెరాను లేదా మైక్రోఫోన్‌ను ఉపయోగించడానికి అనుమతి పొందిన అన్ని యాప్‌లకు, సర్వీస్‌లకు యాక్సెస్‌ను అన్‌బ్లాక్ చేస్తుంది."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"మైక్రోఫోన్ బ్లాక్ చేయబడింది"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"కెమెరా బ్లాక్ చేయబడింది"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"మైక్ &amp; కెమెరా బ్లాక్ చేయబడ్డాయి"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"అన్‌బ్లాక్ చేయడానికి, మైక్రోఫోన్ యాక్సెస్‌ను అనుమతించడానికి మీ పరికరంలోని గోప్యతా స్విచ్‌ను మైక్రోఫోన్‌ను ఆన్ చేయండి స్థానానికి తరలించండి. మీ పరికరంలో గోప్యతా స్విచ్‌ను గుర్తించడానికి పరికర మాన్యువల్‌ని చూడండి."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"అన్‌బ్లాక్ చేయడానికి, కెమెరా యాక్సెస్‌ను అనుమతించడానికి మీ పరికరంలోని గోప్యతా స్విచ్‌ను కెమెరాను ఆన్ చేయండి స్థానంలోకి తరలించండి. మీ పరికరంలో గోప్యతా స్విచ్‌ను గుర్తించడానికి పరికర మాన్యువల్‌ని చూడండి."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"వాటిని అన్‌బ్లాక్ చేయడానికి, యాక్సెస్‌ని అనుమతించడానికి మీ పరికరంలోని గోప్యతా స్విచ్‌ను అన్‌బ్లాక్ చేయబడింది స్థానానికి తరలించండి. మీ పరికరంలో గోప్యతా స్విచ్‌ను గుర్తించడానికి పరికర మాన్యువల్‌ని చూడండి."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"మైక్రోఫోన్ అందుబాటులో ఉంది"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"కెమెరా అందుబాటులో ఉంది"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"మైక్రోఫోన్, అలాగే కెమెరా అందుబాటులో ఉంది"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"ఇతర పరికరం"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"స్థూలదృష్టిని టోగుల్ చేయి"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"మీరు పేర్కొనే అలారాలు, రిమైండర్‌లు, ఈవెంట్‌లు మరియు కాలర్‌ల నుండి మినహా మరే ఇతర ధ్వనులు మరియు వైబ్రేషన్‌లతో మీకు అంతరాయం కలగదు. మీరు ఇప్పటికీ సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా మీరు ప్లే చేయడానికి ఎంచుకున్నవి ఏవైనా వింటారు."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"తెరవడానికి మళ్లీ నొక్కండి"</string>
<string name="tap_again" msgid="1315420114387908655">"మళ్లీ ట్యాప్ చేయండి"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"తెరవడానికి, పైకి స్వైప్ చేయండి"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"తెరవడానికి నొక్కండి"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"మళ్ళీ ప్రయత్నించడానికి పైకి స్వైప్ చేయండి"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCని ఉపయోగించడానికి అన్‌లాక్ చేయండి"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"ఈ పరికరం మీ సంస్థకు చెందినది"</string>
@@ -777,7 +771,7 @@
<string name="accessibility_control_move" msgid="8980344493796647792">"<xliff:g id="NUMBER">%d</xliff:g> పొజిషన్‌కు తరలించండి"</string>
<string name="controls_favorite_default_title" msgid="967742178688938137">"నియంత్రణలు"</string>
<string name="controls_favorite_subtitle" msgid="6481675111056961083">"త్వరిత సెట్టింగ్‌ల నుండి యాక్సెస్ చేయడానికి కంట్రోల్స్‌ను ఎంచుకోండి"</string>
- <string name="controls_favorite_rearrange" msgid="5616952398043063519">"కంట్రోల్స్ క్రమం మార్చడానికి దేనినైనా పట్టుకుని, లాగి వదిలేయండి"</string>
+ <string name="controls_favorite_rearrange" msgid="5616952398043063519">"కంట్రోల్స్ క్రమం మార్చడానికి దేన్నయినా పట్టుకుని, లాగి వదలండి"</string>
<string name="controls_favorite_removed" msgid="5276978408529217272">"అన్ని కంట్రోల్స్ తీసివేయబడ్డాయి"</string>
<string name="controls_favorite_toast_no_changes" msgid="7094494210840877931">"మార్పులు సేవ్ చేయబడలేదు"</string>
<string name="controls_favorite_see_other_apps" msgid="7709087332255283460">"ఇతర యాప్‌లను చూడండి"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"జోడించండి"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> ద్వారా సూచించబడింది"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"పరికరంలాక్ చేయబడింది"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"లాక్ స్క్రీన్ నుండి పరికరాలను చూపించాలా, కంట్రోల్ చేయాలా?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"మీరు లాక్ స్క్రీన్‌కు మీ బాహ్య పరికరాల కోసం కంట్రోల్స్‌ను జోడించవచ్చు.\n\nమీ ఫోన్ లేదా టాబ్లెట్‌ను అన్‌లాక్ చేయకుండానే కొన్ని పరికరాలను కంట్రోల్ చేయడానికి మీ పరికర యాప్ మిమ్మల్ని అనుమతించవచ్చు.\n\nమీరు సెట్టింగ్‌లలో ఎప్పుడైనా మార్పులు చేయవచ్చు."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"లాక్ స్క్రీన్ నుండి పరికరాలను కంట్రోల్ చేయాలా?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"మీరు మీ ఫోన్ లేదా టాబ్లెట్‌ను అన్‌లాక్ చేయకుండానే కొన్ని పరికరాలను కంట్రోల్ చేయవచ్చు.\n\nమీ పరికర యాప్ \'ఈ విధంగా ఏ పరికరాలను కంట్రోల్ చేయవచ్చు\' అని నిర్ణయిస్తుంది."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"వద్దు, ధన్యవాదాలు"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"అవును"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"పిన్ అక్షరాలను లేదా చిహ్నాలను కలిగి ఉంది"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g>ను వెరిఫై చేయండి"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"పిన్ తప్పు"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"ఈ సెషన్‌ను ప్రసారం చేయడానికి, దయచేసి యాప్‌ను తెరవండి."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"తెలియని యాప్"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"ప్రసారాన్ని ఆపివేయండి"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"ప్రసారం కావడం అనేది ఎలా పని చేస్తుంది"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ప్రసారం"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"మీకు సమీపంలో ఉన్న వ్యక్తులు అనుకూలత ఉన్న బ్లూటూత్ పరికరాలతో మీరు ప్రసారం చేస్తున్న మీడియాను వినగలరు"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"మీ ప్రసారాన్ని వినడానికి, సమీపంలోని వ్యక్తులు అనుకూలత ఉన్న బ్లూటూత్ పరికరాలతో మీ QR కోడ్‌ను స్కాన్ చేయవచ్చు లేదా మీ ప్రసారం పేరు, పాస్‌వర్డ్‌ను ఉపయోగించవచ్చు"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ప్రసారం పేరు"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"పాస్‌‌వర్డ్"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"సేవ్ చేయండి"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"బిల్డ్ నంబర్"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"బిల్డ్ నంబర్, క్లిప్‌బోర్డ్‌కు కాపీ చేయబడింది."</string>
<string name="basic_status" msgid="2315371112182658176">"సంభాషణను తెరవండి"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"యాక్టివ్‌గా ఉన్న యాప్‌లు"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"ఆపివేయండి"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"ఆపివేయబడింది"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"పూర్తయింది"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"కాపీ అయింది"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> నుండి"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"కాపీ UIని విస్మరించండి"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index e3f44b10509c..2ff5315ddebc 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -34,8 +34,8 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"หมุนหน้าจออัตโนมัติ"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"อนุญาตให้ <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึง <xliff:g id="USB_DEVICE">%2$s</xliff:g> ไหม"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"อนุญาตให้ <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึง <xliff:g id="USB_DEVICE">%2$s</xliff:g> ไหม\nแอปนี้ไม่ได้รับอนุญาตให้อัดเสียงแต่จะอัดเสียงผ่านอุปกรณ์ USB นี้ได้"</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"อนุญาตให้ <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึง<xliff:g id="USB_DEVICE">%2$s</xliff:g> ใช่ไหม"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"เปิด <xliff:g id="APPLICATION">%1$s</xliff:g> เพื่อจัดการ<xliff:g id="USB_DEVICE">%2$s</xliff:g> ใช่ไหม"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"อนุญาตให้ <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึง <xliff:g id="USB_DEVICE">%2$s</xliff:g> ใช่ไหม"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"เปิด <xliff:g id="APPLICATION">%1$s</xliff:g> เพื่อจัดการ <xliff:g id="USB_DEVICE">%2$s</xliff:g> ใช่ไหม"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"แอปนี้ไม่ได้รับอนุญาตให้อัดเสียงแต่จะอัดเสียงผ่านอุปกรณ์ USB นี้ได้ การใช้ <xliff:g id="APPLICATION">%1$s</xliff:g> กับอุปกรณ์นี้อาจทำให้คุณไม่ได้ยินเสียงสายเรียกเข้า การแจ้งเตือน และการปลุก"</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"การใช้ <xliff:g id="APPLICATION">%1$s</xliff:g> กับอุปกรณ์นี้อาจทำให้คุณไม่ได้ยินเสียงสายเรียกเข้า การแจ้งเตือน และการปลุก"</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"อนุญาตให้ <xliff:g id="APPLICATION">%1$s</xliff:g> เข้าถึง <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> ไหม"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"ตรวจสอบสิทธิ์ใบหน้าแล้ว"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"ยืนยันแล้ว"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"แตะยืนยันเพื่อดำเนินการให้เสร็จสมบูรณ์"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"ตรวจสอบสิทธิ์แล้ว"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"ใช้ PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"การดำเนินการนี้จะเลิกบล็อกสิทธิ์เข้าถึงของแอปและบริการทั้งหมดที่ได้รับอนุญาตให้ใช้ไมโครโฟนของคุณ"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"การดำเนินการนี้จะเลิกบล็อกสิทธิ์เข้าถึงของแอปและบริการทั้งหมดที่ได้รับอนุญาตให้ใช้กล้องของคุณ"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"การดำเนินการนี้จะเลิกบล็อกสิทธิ์เข้าถึงของแอปและบริการทั้งหมดที่ได้รับอนุญาตให้ใช้กล้องหรือไมโครโฟนของคุณ"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"ไมโครโฟนถูกบล็อก"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"กล้องถูกบล็อก"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"ไมโครโฟนและกล้องถูกบล็อก"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"หากต้องการเลิกบล็อก ให้สลับสวิตช์ความเป็นส่วนตัวบนอุปกรณ์ไปที่ตำแหน่งเปิดไมโครโฟน เพื่อให้สิทธิ์การเข้าถึงไมโครโฟน ดูตำแหน่งสวิตช์ความเป็นส่วนตัวบนอุปกรณ์ของคุณได้ในคู่มืออุปกรณ์"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"หากต้องการเลิกบล็อก ให้สลับสวิตช์ความเป็นส่วนตัวบนอุปกรณ์ไปที่ตำแหน่งเปิดกล้อง เพื่อให้สิทธิ์การเข้าถึงกล้อง ดูตำแหน่งสวิตช์ความเป็นส่วนตัวบนอุปกรณ์ของคุณได้ในคู่มืออุปกรณ์"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"หากต้องการเลิกบล็อก ให้สลับสวิตช์ความเป็นส่วนตัวบนอุปกรณ์ไปที่ตำแหน่งเลิกบล็อก เพื่อให้สิทธิ์การเข้าถึง ดูตำแหน่งสวิตช์ความเป็นส่วนตัวบนอุปกรณ์ของคุณได้ในคู่มืออุปกรณ์"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"ใช้งานไมโครโฟนได้"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"ใช้งานกล้องได้"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"ใช้งานไมโครโฟนและกล้องได้"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"อุปกรณ์อื่น"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"สลับภาพรวม"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"คุณจะไม่ถูกรบกวนจากเสียงและการสั่น ยกเว้นเสียงนาฬิกาปลุก การช่วยเตือน กิจกรรม และผู้โทรที่ระบุไว้ คุณจะยังคงได้ยินสิ่งที่คุณเลือกเล่น เช่น เพลง วิดีโอ และเกม"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"แตะอีกครั้งเพื่อเปิด"</string>
<string name="tap_again" msgid="1315420114387908655">"แตะอีกครั้ง"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"เลื่อนขึ้นเพื่อเปิด"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"กดเพื่อเปิด"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"เลื่อนขึ้นเพื่อลองอีกครั้ง"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"ปลดล็อกเพื่อใช้ NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"องค์กรของคุณเป็นเจ้าของอุปกรณ์นี้"</string>
@@ -843,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"โปรดเปิดแอปหากต้องการแคสต์เซสชันนี้"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"แอปที่ไม่รู้จัก"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"หยุดแคสต์"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"วิธีการทำงานของการออกอากาศ"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"ประกาศ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"ผู้ที่อยู่ใกล้คุณและมีอุปกรณ์บลูทูธที่รองรับสามารถรับฟังสื่อที่คุณกำลังออกอากาศได้"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"ผู้คนในบริเวณใกล้เคียงที่มีอุปกรณ์บลูทูธที่รองรับสามารถสแกนคิวอาร์โค้ดหรือใช้ชื่อการออกอากาศและรหัสผ่านของคุณเพื่อรับฟังการออกอากาศได้"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"ชื่อการออกอากาศ"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"รหัสผ่าน"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"บันทึก"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"หมายเลขบิลด์"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"คัดลอกหมายเลขบิลด์ไปยังคลิปบอร์ดแล้ว"</string>
<string name="basic_status" msgid="2315371112182658176">"เปิดการสนทนา"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 0fc2195cc87f..b0c117a0e666 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Na-authenticate ang mukha"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Nakumpirma"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"I-tap ang Kumpirmahin para kumpletuhin"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"Na-unlock gamit ang mukha. Pindutin ang icon ng unlock para magpatuloy."</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Na-authenticate"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Gumamit ng PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"Gumamit ng pattern"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Ina-unblock nito ang access para sa lahat ng app at serbisyong pinapayagang gumamit ng iyong mikropono."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Ina-unblock nito ang access para sa lahat ng app at serbisyong pinapayagang gumamit ng iyong camera."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Ina-unblock nito ang access para sa lahat ng app at serbisyong pinapayagang gumamit ng iyong camera o mikropono."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Naka-block ang mikropono"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Naka-block ang camera"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Naka-block ang mic at camera"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Para i-unblock, ilipat sa naka-on na posisyon ang switch ng privacy sa iyong device sa mikropono para payagan ang access sa mikropono. Sumangguni sa manual ng device para mahanap ang switch ng privacy sa iyong device."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Para i-unblock, ilipat sa naka-on na posisyon ang switch ng privacy sa iyong device sa camera para payagan ang access sa camera. Sumangguni sa manual ng device para mahanap ang switch ng privacy sa iyong device."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Para i-unblock ang mga ito, ilipat sa naka-unblock na posisyon ang switch ng privacy sa iyong device para payagan ang access. Sumangguni sa manual ng device para mahanap ang switch ng privacy sa iyong device."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Available ang mikropono"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Available ang camera"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Available ang mikropono at camera"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Iba pang device"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"I-toggle ang Overview"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Hindi ka maiistorbo ng mga tunog at pag-vibrate, maliban mula sa mga alarm, paalala, event, at tumatawag na tutukuyin mo. Maririnig mo pa rin ang kahit na anong piliin mong i-play kabilang ang mga musika, video, at laro."</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"I-tap ulit upang buksan"</string>
<string name="tap_again" msgid="1315420114387908655">"I-tap ulit"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Mag-swipe pataas para buksan"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Pindutin para buksan"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"Pindutin ang icon ng unlock para buksan"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"Na-unlock gamit ang mukha. Pindutin ang icon ng unlock para buksan."</string>
<string name="keyguard_retry" msgid="886802522584053523">"Mag-swipe pataas para subukan ulit"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"I-unlock para magamit ang NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Pagmamay-ari ng iyong organisasyon ang device na ito"</string>
@@ -843,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Para ma-cast ang session na ito, buksan ang app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Hindi kilalang app"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Ihinto ang pag-cast"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Paano gumagana ang pag-broadcast"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Broadcast"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Makakapakinig ang mga taong malapit sa iyo na may mga compatible na Bluetooth device sa media na bino-broadcast mo"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Para makinig sa iyong broadcast, puwedeng i-scan ng mga tao sa malapit na may mga compatible na Bluetooth device ang QR code mo o puwede nilang gamitin ang pangalan at password ng iyong broadcast"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Pangalan ng Broadcast"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Password"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"I-save"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Numero ng build"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Nakopya sa clipboard ang numero ng build."</string>
<string name="basic_status" msgid="2315371112182658176">"Buksan ang pag-uusap"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 3f2972cbede9..00ce33d3e25c 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -46,7 +46,7 @@
<string name="title_usb_accessory" msgid="1236358027511638648">"USB aksesuarı"</string>
<string name="label_view" msgid="6815442985276363364">"Görüntüle"</string>
<string name="always_use_device" msgid="210535878779644679">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> bağlandığında <xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasını her zaman aç"</string>
- <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g> bağlandığında <xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasını her zaman aç"</string>
+ <string name="always_use_accessory" msgid="1977225429341838444">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g> bağlandığında her zaman <xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasını aç"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"USB hata ayıklamasına izin verilsin mi?"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"Bilgisayarın RSA anahtarı parmak izi:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="4003121804294739548">"Bu bilgisayardan her zaman izin ver"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Yüz kimliği doğrulandı"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Onaylandı"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tamamlamak için Onayla\'ya dokunun"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Kimliği Doğrulandı"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN kullan"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Bu işlem, mikrofonunuzu kullanmasına izin verilen tüm uygulama ve hizmetlere erişimin engellemesini kaldırır."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Bu işlem, kameranızı kullanmasına izin verilen tüm uygulama ve hizmetlere erişimin engellemesini kaldırır."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Bu işlem, kamera veya mikrofonunuzu kullanmasına izin verilen tüm uygulama ve hizmetlere erişimin engellemesini kaldırır."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon engellenmiş"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera engellenmiş"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon ve kamera engellenmiş"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Engeli kaldırıp mikrofon erişimine izin vermek için cihazınızdaki gizlilik anahtarını mikrofon açık konumuna getirin. Cihazınızdaki gizlilik anahtarını bulmak için cihaz kılavuzuna bakın."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Engeli kaldırıp kamera erişimine izin vermek için cihazınızdaki gizlilik anahtarını kamera açık konumuna getirin. Cihazınızdaki gizlilik anahtarını bulmak için cihaz kılavuzuna bakın."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Engellerini kaldırıp erişime izin vermek için cihazınızdaki gizlilik anahtarını engellemenin kaldırıldığı konuma getirin. Cihazınızdaki gizlilik anahtarını bulmak için cihaz kılavuzuna bakın."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon kullanılabilir"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera kullanılabilir"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon ve kamera kullanılabilir"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Diğer cihaz"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Genel bakışı aç/kapat"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Alarmlar, hatırlatıcılar, etkinlikler ve sizin seçtiğiniz kişilerden gelen çağrılar dışında hiçbir ses ve titreşimle rahatsız edilmeyeceksiniz. O sırada çaldığınız müzik, seyrettiğiniz video ya da oynadığınız oyunların sesini duymaya devam edeceksiniz."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Açmak için tekrar dokunun"</string>
<string name="tap_again" msgid="1315420114387908655">"Tekrar dokunun"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Açmak için yukarı kaydırın"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Açmak için basın"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Tekrar denemek için yukarı kaydırın"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC\'yi kullanmak için kilidi açın"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Bu cihaz, kuruluşunuza ait"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Ekle"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> tarafından önerildi"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Cihaz kilitlendi"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Cihazlar kilit ekranında gösterilip buradan kontrol edilsin mi?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Kilit ekranına harici cihazlarınız için kontroller ekleyebilirsiniz.\n\nCihaz uygulamanız, bazı cihazları telefonunuzun veya tabletinizin kilidini açmadan kontrol etmenize izin verebilir.\n\nAyarlar\'da istediğiniz zaman değişiklik yapabilirsiniz."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Cihazlar kilit ekranından kontrol edilsin mi?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Bazı cihazları telefonunuzun veya tabletinizin kilidini açmadan kontrol edebilirsiniz.\n\nHangi cihazların bu şekilde kontrol edilebileceğini cihaz uygulamanız belirler."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Hayır, teşekkürler"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Evet"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN, harf veya simge içerir"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g> cihazını doğrulayın"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Yanlış PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Bu oturumu yayınlamak için lütfen uygulamayı açın."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Bilinmeyen uygulama"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Yayını durdur"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Yayınlamanın işleyiş şekli"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Anons"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Yakınınızda ve uyumlu Bluetooth cihazları olan kişiler yayınladığınız medya içeriğini dinleyebilir"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Yakınınızda ve uyumlu Bluetooth cihazları olan kişiler, yayınınızı dinlemek için QR kodunuzu tarayabilir ya da yayın adınızı ve şifrenizi kullanabilir"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Yayın Adı"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Şifre"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Kaydet"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Derleme numarası"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Derleme numarası panoya kopyalandı."</string>
<string name="basic_status" msgid="2315371112182658176">"Görüşmeyi aç"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Etkin uygulamalar"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Durdur"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Durduruldu"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Bitti"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Kopyalandı"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> uygulamasından"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Kopyalanan kullanıcı arayüzünü kapat"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index e2240e23a2c5..c5cf9fa073fd 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -35,7 +35,7 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"Надати додатку <xliff:g id="APPLICATION">%1$s</xliff:g> доступ до такого аксесуара: <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"Надати додатку <xliff:g id="APPLICATION">%1$s</xliff:g> доступ до <xliff:g id="USB_DEVICE">%2$s</xliff:g>?\nЦей додаток не має дозволу на записування звуку, але може фіксувати його через цей USB-пристрій."</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"Надати додатку <xliff:g id="APPLICATION">%1$s</xliff:g> доступ до пристрою (<xliff:g id="USB_DEVICE">%2$s</xliff:g>)?"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Відкрити додаток <xliff:g id="APPLICATION">%1$s</xliff:g>, щоб використовувати пристрій (<xliff:g id="USB_DEVICE">%2$s</xliff:g>)?"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"Відкрити <xliff:g id="APPLICATION">%1$s</xliff:g>, щоб керувати пристроєм <xliff:g id="USB_DEVICE">%2$s</xliff:g>?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Додаток не має дозволу на запис, але він може фіксувати звук через цей USB-пристрій. Якщо додаток <xliff:g id="APPLICATION">%1$s</xliff:g> використовується з цим пристроєм, звук дзвінків, сповіщень і будильників може не відтворюватися."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Якщо додаток <xliff:g id="APPLICATION">%1$s</xliff:g> використовується з цим пристроєм, звук дзвінків, сповіщень і будильників може не відтворюватися."</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"Надати додатку <xliff:g id="APPLICATION">%1$s</xliff:g> доступ до такого аксесуара: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>?"</string>
@@ -45,8 +45,8 @@
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"Установлені прогр. не працюють із цим аксесуаром USB. Більше про цей аксесуар: <xliff:g id="URL">%1$s</xliff:g>"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"Пристрій USB"</string>
<string name="label_view" msgid="6815442985276363364">"Переглянути"</string>
- <string name="always_use_device" msgid="210535878779644679">"Завжди відкривати додаток <xliff:g id="APPLICATION">%1$s</xliff:g>, коли під’єднано такий аксесуар: <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
- <string name="always_use_accessory" msgid="1977225429341838444">"Завжди відкривати додаток <xliff:g id="APPLICATION">%1$s</xliff:g>, коли під’єднано такий аксесуар: <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
+ <string name="always_use_device" msgid="210535878779644679">"Завжди відкривати додаток <xliff:g id="APPLICATION">%1$s</xliff:g>, коли під’єднуться пристрій <xliff:g id="USB_DEVICE">%2$s</xliff:g>"</string>
+ <string name="always_use_accessory" msgid="1977225429341838444">"Завжди відкривати додаток <xliff:g id="APPLICATION">%1$s</xliff:g>, коли під’єднуться пристрій <xliff:g id="USB_ACCESSORY">%2$s</xliff:g>"</string>
<string name="usb_debugging_title" msgid="8274884945238642726">"Дозволити налагодження USB?"</string>
<string name="usb_debugging_message" msgid="5794616114463921773">"Цифровий відбиток ключа RSA комп’ютера:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string>
<string name="usb_debugging_always" msgid="4003121804294739548">"Завжди дозволяти з цього комп’ютера"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Обличчя автентифіковано"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Підтверджено"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Щоб завершити, натисніть \"Підтвердити\""</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Автентифіковано"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Ввести PIN-код"</string>
@@ -296,24 +296,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Усі додатки та сервіси, яким дозволено користуватися вашим мікрофоном, отримають доступ."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Усі додатки та сервіси, яким дозволено користуватися вашою камерою, отримають доступ."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Усі додатки та сервіси, яким дозволено користуватися вашою камерою чи мікрофоном, отримають доступ."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Мікрофон заблоковано"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Камеру заблоковано"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Мікрофон і камеру заблоковано"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Щоб розблокувати мікрофон і надати доступ до нього, пересуньте перемикач конфіденційності на своєму пристрої в положення \"Мікрофон увімкнено\". Щоб знайти перемикач конфіденційності, перегляньте інструкцію до пристрою."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Щоб розблокувати камеру й надати доступ до неї, пересуньте перемикач конфіденційності на своєму пристрої в положення \"Камеру ввімкнено\". Щоб знайти перемикач конфіденційності, перегляньте інструкцію до пристрою."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Щоб розблокувати мікрофон і камеру й надати доступ до них, пересуньте перемикач конфіденційності на своєму пристрої в положення розблокування. Щоб знайти перемикач конфіденційності, перегляньте інструкцію до пристрою."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Мікрофон доступний"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Камера доступна"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Мікрофон і камера доступні"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Інший пристрій"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Увімкнути або вимкнути огляд"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Ви отримуватиме звукові та вібросигнали лише для вибраних будильників, нагадувань, подій і абонентів. Однак ви чутимете все, що захочете відтворити, зокрема музику, відео й ігри."</string>
@@ -324,7 +315,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Торкніться знову, щоб відкрити"</string>
<string name="tap_again" msgid="1315420114387908655">"Натисніть знову"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Проведіть пальцем угору, щоб відкрити"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Натисніть, щоб відкрити"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Проведіть пальцем угору, щоб повторити спробу"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Розблокуйте екран, щоб скористатись NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Цей пристрій належить вашій організації"</string>
@@ -800,18 +794,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Додати"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Запропоновано додатком <xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Пристрій заблоковано"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Переглядати пристрої та керувати ними на заблокованому екрані?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Елементи керування зовнішніми пристроями можна додавати на заблокований екран.\n\nЗа допомогою спеціального додатка ви можете керувати деякими пристроями, не розблоковуючи телефон або планшет.\n\nВи можете будь-коли вносити зміни в налаштуваннях."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Керувати пристроями на заблокованому екрані?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Ви можете керувати деякими пристроями, не розблоковуючи телефон або планшет.\n\nЯкими пристроями можна керувати в такий спосіб, визначає додаток на пристрої."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Ні, дякую"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Так"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN-код містить літери чи символи"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"<xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Неправильний PIN-код"</string>
@@ -861,20 +849,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Щоб транслювати цей сеанс, відкрийте додаток."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Невідомий додаток"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Припинити трансляцію"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Як працює трансляція"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Трансляція"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Люди поблизу, які мають сумісні пристрої з Bluetooth, можуть слухати медіаконтент, який ви транслюєте."</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Щоб слухати вашу трансляцію, люди поблизу, які мають сумісні пристрої з Bluetooth, можуть відсканувати ваш QR-код або використати назву вашої трансляції та пароль"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Назва трансляції"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Пароль"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Зберегти"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Номер складання"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Номер складання скопійовано в буфер обміну."</string>
<string name="basic_status" msgid="2315371112182658176">"Відкрита розмова"</string>
@@ -953,8 +934,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Активні додатки"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Зупинити"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Зупинено"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Готово"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Скопійовано"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"З додатка <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Закрити вікно копіювання"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index a6d72279cda2..55778f83b52e 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -35,13 +35,13 @@
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"<xliff:g id="APPLICATION">%1$s</xliff:g> کو <xliff:g id="USB_DEVICE">%2$s</xliff:g> تک رسائی حاصل کرنے کی اجازت دیں؟"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"‏<xliff:g id="APPLICATION">%1$s</xliff:g> کو <xliff:g id="USB_DEVICE">%2$s</xliff:g> تک رسائی دیں؟\nاس ایپ کو ریکارڈ کی اجازت عطا نہیں کی گئی ہے مگر اس USB آلہ سے کیپچر کر سکتے ہیں۔"</string>
<string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"<xliff:g id="APPLICATION">%1$s</xliff:g> کو <xliff:g id="USB_DEVICE">%2$s</xliff:g> تک رسائی حاصل کرنے کی اجازت دیں؟"</string>
- <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> ہینڈل کرنے کیلئے <xliff:g id="APPLICATION">%1$s</xliff:g> کھولیں؟"</string>
+ <string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"‫<xliff:g id="USB_DEVICE">%2$s</xliff:g> ہینڈل کرنے کیلئے <xliff:g id="APPLICATION">%1$s</xliff:g> کھولیں؟"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"‏اس ایپ کو ریکارڈ کرنے کی اجازت عطا نہیں کی گئی ہے مگر اس USB آلہ کے ذریعے آڈیو کیپچر کر سکتی ہے۔ اس آلہ پر <xliff:g id="APPLICATION">%1$s</xliff:g> کا استعمال آپ کو کالز، اطلاعات اور الارمز سننے سے روک سکتا ہے۔"</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"اس آلہ پر <xliff:g id="APPLICATION">%1$s</xliff:g> کا استعمال آپ کو کالز، اطلاعات اور الارمز سننے سے روک سکتا ہے۔"</string>
<string name="usb_accessory_permission_prompt" msgid="717963550388312123">"<xliff:g id="APPLICATION">%1$s</xliff:g> کو <xliff:g id="USB_ACCESSORY">%2$s</xliff:g> تک رسائی حاصل کرنے کی اجازت دیں؟"</string>
<string name="usb_device_confirm_prompt" msgid="4091711472439910809">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> ہینڈل کرنے کیلئے <xliff:g id="APPLICATION">%1$s</xliff:g> کھولیں؟"</string>
<string name="usb_device_confirm_prompt_warn" msgid="990208659736311769">"‏<xliff:g id="USB_DEVICE">%2$s</xliff:g> کو ہینڈل کرنے کے ليے <xliff:g id="APPLICATION">%1$s</xliff:g> کھولیں؟ \nاس ایپ کو ریکارڈ کی اجازت عطا نہیں کی گئی ہے مگر اس USB آلہ سے کیپچر کر سکتے ہیں۔"</string>
- <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"<xliff:g id="USB_ACCESSORY">%2$s</xliff:g> ہینڈل کرنے کیلئے <xliff:g id="APPLICATION">%1$s</xliff:g> کھولیں؟"</string>
+ <string name="usb_accessory_confirm_prompt" msgid="5728408382798643421">"‫<xliff:g id="USB_ACCESSORY">%2$s</xliff:g> ہینڈل کرنے کیلئے <xliff:g id="APPLICATION">%1$s</xliff:g> کھولیں؟"</string>
<string name="usb_accessory_uri_prompt" msgid="6756649383432542382">"‏اس USB لوازم کے ساتھ کوئی انسٹال کردہ ایپس کام نہیں کرتی ہیں۔ <xliff:g id="URL">%1$s</xliff:g> پر مزید جانیں"</string>
<string name="title_usb_accessory" msgid="1236358027511638648">"‏USB لوازم"</string>
<string name="label_view" msgid="6815442985276363364">"دیکھیں"</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"چہرے کی تصدیق ہو گئی"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"تصدیق شدہ"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"مکمل کرنے کیلئے \'تصدیق کریں\' تھپتھپائیں"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"تصدیق کردہ"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"‏PIN استعمال کریں"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"اس سے آپ کا مائیکروفون استعمال کرنے کے لیے اجازت یافتہ سبھی ایپس اور سروسز کے لیے رسائی غیر مسدود ہو جاتی ہے۔"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"اس سے آپ کا کیمرا استعمال کرنے کے لیے اجازت یافتہ سبھی ایپس اور سروسز کے لیے رسائی غیر مسدود ہو جاتی ہے۔"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"اس سے آپ کا کیمرا یا مائیکروفون استعمال کرنے کے لیے اجازت یافتہ سبھی ایپس اور سروسز کے لیے رسائی غیر مسدود ہو جاتی ہے۔"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"مائیکروفون مسدود ہے"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"کیمرا مسدود ہے"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"مائیک اور کیمرا مسدود ہیں"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"غیر مسدود کرنے کے لیے، کیمرا تک رسائی کی اجازت دینے کے لیے اپنے آلے پر رازداری سوئچ کو مائیکروفون آن ہے وضع پر لے جائیں۔ اپنے آلے پر رازداری سوئچ کا پتہ لگانے کے لیے آلہ کے مینوئل سے رجوع کریں۔"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"غیر مسدود کرنے کے لیے، کیمرا تک رسائی کی اجازت دینے کے لیے اپنے آلے پر رازداری سوئچ کو کیمرا آن ہے وضع پر لے جائیں۔ اپنے آلے پر رازداری سوئچ کا پتہ لگانے کے لیے آلہ کے مینوئل سے رجوع کریں۔"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"انہیں غیر مسدود کرنے کے لیے، رسائی کی اجازت دینے کے لیے اپنے آلے پر رازداری سوئچ کو غیر مسدود کریں وضع پر لے جائیں۔ اپنے آلے پر رازداری سوئچ کا پتہ لگانے کے لیے آلہ کے مینوئل سے رجوع کریں۔"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"مائیکروفون دستیاب ہے"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"کیمرا دستیاب ہے"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"مائیکروفون اور کیمرا دستیاب ہیں"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"دوسرا آلہ"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"مجموعی جائزہ ٹوگل کریں"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"الارمز، یاددہانیوں، ایونٹس اور آپ کے متعین کردہ کالرز کے علاوہ، آپ آوازوں اور وائبریشنز سے ڈسٹرب نہیں ہوں گے۔ موسیقی، ویڈیوز اور گیمز سمیت آپ ابھی بھی ہر وہ چیز سنیں گے جسے چلانے کا آپ انتخاب کرتے ہیں۔"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"کھولنے کیلئے دوبارہ تھپتھپائیں"</string>
<string name="tap_again" msgid="1315420114387908655">"دوبارہ تھپتھپائیں"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"کھولنے کے لیے اوپر سوائپ کريں"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"کھولنے کے لیے دبائیں"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"دوبارہ کوشش کرنے کے لیے اوپر سوائپ کريں"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"‏NFC استعمال کرنے کیلئے غیر مقفل کریں"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"یہ آلہ آپ کی تنظیم کا ہے"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"شامل کریں"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> کی طرف سے تجویز کردہ"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"آلہ مقفل کر دیا گیا"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"لاک اسکرین سے آلات دکھائیں اور کنٹرول کریں؟"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"آپ اپنے بیرونی آلات کے لیے لاک اسکرین پر کنٹرولز شامل کر سکتے ہیں۔\n\nآپ کے آلے کی ایپ آپ کو اپنے فون یا ٹیبلیٹ کو غیر مقفل کیے بغیر کچھ آلات کو کنٹرول کرنے کی اجازت دے سکتی ہے۔\n\nآپ ترتیبات میں کسی بھی وقت تبدیلیاں کر سکتے ہیں۔"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"لاک اسکرین سے آلات کو کنٹرول کریں؟"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"آپ اپنے فون یا ٹیبلیٹ کو غیر مقفل کیے بغیر کچھ آلات کو کنٹرول کر سکتے ہیں۔\n\nآپ کے آلے کی ایپ اس بات کا تعین کرتی ہے کہ اس طرح کن آلات کو کنٹرول کیا جا سکتا ہے۔"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"نہیں شکریہ"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"ہاں"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"‏PIN میں حروف یا علامات شامل ہیں"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"‫<xliff:g id="DEVICE">%s</xliff:g> کی تصدیق کریں"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"‏غلط PIN"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"اس سیشن کو کاسٹ کرنے کیلئے، براہ کرم ایپ کھولیں۔"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"نامعلوم ایپ"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"کاسٹ کرنا بند کریں"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"براڈکاسٹنگ کیسے کام کرتا ہے"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"براڈکاسٹ"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"موافق بلوٹوتھ آلات کے ساتھ آپ کے قریبی لوگ آپ کے نشر کردہ میڈیا کو سن سکتے ہیں"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"‏آپ کا براڈکاسٹ سننے کے لیے، موافق بلوٹوتھ آلات کے ساتھ قریبی لوگ آپ کا QR کوڈ اسکین کر سکتے ہیں یا آپ کے براڈکاسٹ کا نام اور پاس ورڈ استعمال کر سکتے ہیں"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"براڈکاسٹ کا نام"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"پاس ورڈ"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"محفوظ کریں"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"بلڈ نمبر"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"بلڈ نمبر کلپ بورڈ میں کاپی ہو گیا۔"</string>
<string name="basic_status" msgid="2315371112182658176">"گفتگو کھولیں"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"فعال ایپس"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"روکیں"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"رکی ہوئی ہے"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"ہو گیا"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"کاپی کر دیا گیا ہے"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"<xliff:g id="APPNAME">%1$s</xliff:g> سے"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"‏کاپی شدہ UI کو برخاست کریں"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index d30dab6036e7..362208f47039 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -34,7 +34,7 @@
<string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"Ekranning avtomatik burilishi"</string>
<string name="usb_device_permission_prompt" msgid="4414719028369181772">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasiga <xliff:g id="USB_DEVICE">%2$s</xliff:g> qurilmasidan foydalanishga ruxsat berilsinmi?"</string>
<string name="usb_device_permission_prompt_warn" msgid="2309129784984063656">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasiga <xliff:g id="USB_DEVICE">%2$s</xliff:g> qurilmasidan foydalanish uchun ruxsat berilsinmi?\nBu ilovaga yozib olish ruxsati berilmagan, lekin shu USB orqali ovozlarni yozib olishi mumkin."</string>
- <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasiga <xliff:g id="USB_DEVICE">%2$s</xliff:g> qurilmasidan foydalanishga ruxsat berilsinmi?"</string>
+ <string name="usb_audio_device_permission_prompt_title" msgid="4221351137250093451">"<xliff:g id="APPLICATION">%1$s</xliff:g> uchun <xliff:g id="USB_DEVICE">%2$s</xliff:g> ishlatish ruxsati berilsinmi?"</string>
<string name="usb_audio_device_confirm_prompt_title" msgid="8828406516732985696">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> bilan ishlash uchun <xliff:g id="APPLICATION">%1$s</xliff:g> ochilsinmi?"</string>
<string name="usb_audio_device_prompt_warn" msgid="2504972133361130335">"Bu ilovaga yozib olish ruxsati berilmagan, lekin shu USB orqali ovozlarni yozib olishi mumkin. Bu qurilma <xliff:g id="APPLICATION">%1$s</xliff:g> orqali boshqarilsa, chaqiruv, bildirishnoma va signallar eshitilmay qolishi mumkin."</string>
<string name="usb_audio_device_prompt" msgid="7944987408206252949">"Bu qurilma <xliff:g id="APPLICATION">%1$s</xliff:g> orqali boshqarilsa, chaqiruv, bildirishnoma va signallar eshitilmay qolishi mumkin."</string>
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Yuzingiz aniqlandi"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Tasdiqlangan"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Tasdiqlash uchun tegining"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Tasdiqlandi"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"PIN kod kiritish"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Mikrofoningizdan foydalanishga ruxsat berilgan barcha ilovalar va xizmatlar uchun ruxsatni blokdan chiqaradi."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Kamerangizdan foydalanishga ruxsat berilgan barcha ilovalar va xizmatlar uchun ruxsatni blokdan chiqaradi."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Kamera va mikrofoningizdan foydalanishga ruxsat berilgan barcha ilovalar va xizmatlar uchun ruxsatni blokdan chiqaradi."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Mikrofon bloklangan"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Kamera bloklangan"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Mikrofon va kamera bloklangan"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Mikrofonga kirish uchun qurilmangizdagi maxfiylik tugmachasini suring va mikrofonni yoqing. Kalitning joylashuvi qurilma qoʻllanmasida koʻrsatilishi kerak."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Kameraga kirish uchun qurilmangizdagi maxfiylik tugmachasini suring va kamerani yoqing Kalitning joylashuvi qurilma qoʻllanmasida koʻrsatilishi kerak."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Ularni blokdan chiqarish uchun qurilmangizdagi maxfiylik tugmachasini suring va ularga ruxsat bering. Kalitning joylashuvi qurilma qoʻllanmasida koʻrsatilishi kerak."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Mikrofon mavjud"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Kamera mavjud"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Mikrofon va kamera mavjud"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Boshqa qurilma"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Umumiy nazar rejimini almashtirish"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Turli ovoz va tebranishlar endi sizni bezovta qilmaydi. Biroq, signallar, eslatmalar, tadbirlar haqidagi bildirishnomalar va siz tanlagan abonentlardan kelgan chaqiruvlar bundan mustasno. Lekin, ijro etiladigan barcha narsalar, jumladan, musiqa, video va o‘yinlar ovozi eshitiladi."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Ochish uchun yana bosing"</string>
<string name="tap_again" msgid="1315420114387908655">"Yana bosing"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Ochish uchun tepaga suring"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Ochish uchun bosing"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Qayta urinish uchun tepaga suring"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ishlatish uchun qurilma qulfini oching"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Bu qurilma tashkilotingizga tegishli"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Kiritish"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"<xliff:g id="APP">%s</xliff:g> taklif etgan"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Qurilma qulflandi"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Qurilmalar qulflangan ekranda koʻrsatilsinmi va boshqarilsinmi?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Tashqi qurilmalaringiz uchun ekran qulfiga boshqaruvlarni qoʻshishingiz mumkin.\n\nQurilma ilovasi ayrim qurilmalarni telefon yoki planshet qulfini ochmasdan boshqarish imkonini beradi.\n\nIstalgan vaqtda Sozlamalar orqali oʻzgartirish mumkin."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Qurilmalar ekran qulfidan boshqarilsinmi?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Ayrim qurilmalarni telefon yoki planshet ekran qulfini ochmasdan boshqarish mumkin.\n\nQurilmangiz ilovasi qaysi qurilmalarni shu tarzda boshqarish mumkinligini aniqlaydi."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Yopish"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Ha"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Harflar yoki maxsus belgilardan iborat PIN kod"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Tekshirish: <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN kod xato"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Bu seansni translatsiya qilish uchun ilovani oching."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Notanish ilova"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Toʻxtatish"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Translatsiya qanday ishlaydi"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Translatsiya"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Atrofingizdagi mos Bluetooth qurilmasiga ega foydalanuvchilar siz translatsiya qilayotgan mediani tinglay olishadi"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Mos Bluetooth qurilmalariga ega foydalanuvchilar QR kodingizni skanerlashi yoki translatsiyangizga ulanish uchun translatsiya nomi va parolingizni kiritishi mumkin."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Translatsiya nomi"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Parol"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Saqlash"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Nashr raqami"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Nashr raqami vaqtinchalik xotiraga nusxalandi."</string>
<string name="basic_status" msgid="2315371112182658176">"Suhbatni ochish"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Faol ilovalar"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Stop"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Toʻxtatildi"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Tayyor"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Nusxa olindi"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Manba: <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"UI nusxasini bekor qilish"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 02d52292ba6b..a2f9dd2f5da3 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Đã xác thực khuôn mặt"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Ðã xác nhận"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Nhấn vào Xác nhận để hoàn tất"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Đã xác thực"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Dùng mã PIN"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Thao tác này sẽ bỏ chặn quyền truy cập cho mọi ứng dụng và dịch vụ được phép sử dụng micrô của bạn."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Thao tác này sẽ bỏ chặn quyền truy cập cho mọi ứng dụng và dịch vụ được phép sử dụng máy ảnh của bạn."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Thao tác này sẽ bỏ chặn quyền truy cập cho mọi ứng dụng và dịch vụ được phép sử dụng máy ảnh hoặc micrô của bạn."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Micrô bị chặn"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Máy ảnh bị chặn"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"Micrô và máy ảnh bị chặn"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Để bỏ chặn, hãy chuyển nút quyền riêng tư trên thiết bị sang vị trí bật micrô để cho phép truy cập vào micrô. Hãy tham khảo hướng dẫn sử dụng thiết bị để tìm nút quyền riêng tư trên thiết bị của bạn."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Để bỏ chặn, hãy chuyển nút quyền riêng tư trên thiết bị sang vị trí bật máy ảnh để cho phép truy cập vào máy ảnh. Hãy tham khảo hướng dẫn sử dụng thiết bị để tìm nút quyền riêng tư trên thiết bị của bạn."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Để bỏ chặn, hãy chuyển nút quyền riêng tư trên thiết bị sang vị trí bỏ chặn để cho phép truy cập. Hãy tham khảo hướng dẫn sử dụng thiết bị để tìm nút quyền riêng tư trên thiết bị của bạn."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Micrô đang bật"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Máy ảnh đang bật"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Micrô và máy ảnh đang bật"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Thiết bị khác"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Bật/tắt chế độ xem Tổng quan"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Bạn sẽ không bị làm phiền bởi âm thanh và tiếng rung, ngoại trừ báo thức, lời nhắc, sự kiện và người gọi mà bạn chỉ định. Bạn sẽ vẫn nghe thấy mọi thứ bạn chọn phát, bao gồm nhạc, video và trò chơi."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Nhấn lại để mở"</string>
<string name="tap_again" msgid="1315420114387908655">"Nhấn lại"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Vuốt lên để mở"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Nhấn để mở"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Vuốt lên để thử lại"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Mở khóa để sử dụng NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Thiết bị này thuộc về tổ chức của bạn"</string>
@@ -704,7 +698,7 @@
<string name="mobile_data" msgid="4564407557775397216">"Dữ liệu di động"</string>
<string name="mobile_data_text_format" msgid="6806501540022589786">"<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="8912204177152950766">"<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="5389597396308001471">"Wi-Fi tắt"</string>
+ <string name="wifi_is_off" msgid="5389597396308001471">"Wi-Fi đang tắt"</string>
<string name="bt_is_off" msgid="7436344904889461591">"Bluetooth tắt"</string>
<string name="dnd_is_off" msgid="3185706903793094463">"Không làm phiền tắt"</string>
<string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"Không làm phiền đã được một quy tắc tự động (<xliff:g id="ID_1">%s</xliff:g>) bật."</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Thêm"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Do <xliff:g id="APP">%s</xliff:g> đề xuất"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Đã khóa thiết bị"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Bạn muốn hiện và điều khiển các thiết bị từ màn hình khoá?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Bạn có thể thêm các chế độ điều khiển cho những thiết bị bên ngoài vào màn hình khoá.\n\nỨng dụng thiết bị có thể cho phép bạn điều khiển một số thiết bị mà không cần mở khoá điện thoại hoặc máy tính bảng.\n\nBạn có thể thay đổi chế độ cài đặt này bất cứ lúc nào trong phần Cài đặt."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Bạn muốn điều khiển các thiết bị từ màn hình khoá?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Bạn có thể điều khiển một số thiết bị mà không cần mở khoá điện thoại hoặc máy tính bảng.\n\nỨng dụng thiết bị sẽ xác định thiết bị mà bạn có thể điều khiển bằng cách này."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Không, cảm ơn"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Có"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Mã PIN chứa các ký tự hoặc ký hiệu"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Xác minh <xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Mã PIN sai"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Vui lòng mở ứng dụng để truyền phiên này."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"Ứng dụng không xác định"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Dừng truyền"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Cách tính năng truyền hoạt động"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Truyền"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Những người ở gần có thiết bị Bluetooth tương thích có thể nghe nội dung nghe nhìn bạn đang truyền"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Để nghe nội dung truyền, những người ở gần có thiết bị Bluetooth tương thích có thể quét mã QR hoặc dùng tên thiết bị và mật khẩu truyền của bạn"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Tên thiết bị truyền"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Mật khẩu"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Lưu"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Số bản dựng"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Đã sao chép số bản dựng vào bảng nhớ tạm."</string>
<string name="basic_status" msgid="2315371112182658176">"Mở cuộc trò chuyện"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Ứng dụng đang hoạt động"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Dừng"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Đã dừng"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Xong"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Đã sao chép"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Từ <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Đóng giao diện người dùng sao chép"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index a44f39151190..d8f445732f5b 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"面孔身份验证成功"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"已确认"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"点按“确认”即可完成"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"已经过身份验证"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"使用 PIN 码"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"这将会为所有获准使用您麦克风的应用和服务启用这项权限。"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"这将会为所有获准使用您摄像头的应用和服务启用这项权限。"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"这将会为所有获准使用您的摄像头或麦克风的应用和服务启用这项权限。"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"麦克风已被屏蔽"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"摄像头已被屏蔽"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"麦克风和摄像头已被屏蔽"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"若要取消屏蔽,请将设备上的隐私开关移到启用麦克风的位置,以允许访问麦克风。请参考设备手册找到设备上的隐私开关。"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"若要取消屏蔽,请将设备上的隐私开关移到启用摄像头的位置,以允许访问摄像头。请参考设备手册找到设备上的隐私开关。"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"若要取消屏蔽,请将设备上的隐私开关移到取消屏蔽的位置,以允许访问。请参考设备手册找到设备上的隐私开关。"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"麦克风可用"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"摄像头可用"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"麦克风和摄像头可用"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"其他设备"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"切换概览"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"您将不会受到声音和振动的打扰(闹钟、提醒、活动和所指定来电者的相关提示音除外)。您依然可以听到您选择播放的任何内容(包括音乐、视频和游戏)的相关音效。"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"再次点按即可打开"</string>
<string name="tap_again" msgid="1315420114387908655">"请再点按一次"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"向上滑动即可打开"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"按一下即可打开"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"向上滑动即可重试"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"需要解锁才能使用 NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"此设备归贵单位所有"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"添加"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"来自<xliff:g id="APP">%s</xliff:g>的建议"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"设备已锁定"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"要从锁定屏幕上显示和控制设备吗?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"您可以在锁定屏幕上添加用于控制外部设备的控件。\n\n您的设备应用可能会允许您在不解锁手机或平板电脑的情况下控制某些设备。\n\n您可以随时在“设置”中进行更改。"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"要从锁定屏幕上控制设备吗?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"您可以在不解锁手机或平板电脑的情况下控制某些设备。\n\n您的设备应用将决定哪些设备可以通过这种方式进行控制。"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"不用了"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"是"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN 码由字母或符号组成"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"验证<xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN 码错误"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"如需投射此会话,请打开相关应用。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"未知应用"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"停止投射"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"广播的运作方式"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"广播"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"附近使用兼容蓝牙设备的用户可以收听您广播的媒体内容"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"附近使用兼容蓝牙设备的用户可以通过扫描您的二维码或使用您的广播名称和密码来收听您的广播"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"广播名称"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"密码"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"保存"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"版本号"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"已将版本号复制到剪贴板。"</string>
<string name="basic_status" msgid="2315371112182658176">"开放式对话"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"使用中的应用"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"停止"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"已停止"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"完成"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"已复制"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"来自<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"关闭复制界面"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 9f2f84f6a069..73e4c0e798e9 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -91,7 +91,7 @@
<string name="screenrecord_name" msgid="2596401223859996572">"螢幕畫面錄影工具"</string>
<string name="screenrecord_background_processing_label" msgid="7244617554884238898">"正在處理螢幕錄影內容"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"持續顯示錄影畫面工作階段通知"</string>
- <string name="screenrecord_start_label" msgid="1750350278888217473">"要開始錄影嗎?"</string>
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"要開始錄製嗎?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"錄影時,Android 系統可擷取螢幕上顯示或裝置播放的任何敏感資料,包括密碼、付款資料、相片、訊息和音訊。"</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"錄音"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"裝置音訊"</string>
@@ -135,8 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"臉孔已經驗證"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"已確認"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"輕按 [確定] 以完成"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
- <skip />
+ <string name="biometric_dialog_tap_confirm_with_face" msgid="1092050545851021991">"已使用面孔解鎖。按解鎖圖示即可繼續。"</string>
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"驗證咗"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"使用 PIN"</string>
<string name="biometric_dialog_use_pattern" msgid="2315593393167211194">"使用圖案"</string>
@@ -292,24 +291,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"解除封鎖後,凡有存取權的應用程式和服務都可使用您的麥克風。"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"解除封鎖後,凡有存取權的應用程式和服務都可使用您的相機。"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"解除封鎖後,凡有存取權的應用程式和服務都可使用您的相機或麥克風。"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"已封鎖麥克風"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"已封鎖相機"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"已封鎖麥克風和相機"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"如要允許存取麥克風,請將裝置的私隱開關切換至「開啟」的位置。如要找出裝置的私隱開關位置,請參閱裝置的說明書。"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"如要允許存取相機,請將裝置的私隱開關切換至「開啟」的位置。如要找出裝置的私隱開關位置,請參閱裝置的說明書。"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"如要允許存取,請將裝置的私隱開關切換至「開啟」的位置。如要找出裝置的私隱開關位置,請參閱裝置的說明書。"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"可使用麥克風"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"可使用相機"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"可使用麥克風和相機"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"其他裝置"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"切換概覽"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"您不會受到聲音和震動騷擾 (鬧鐘、提醒、活動和您指定的來電者鈴聲除外)。當您選擇播放音樂、影片和遊戲等,仍可以聽到該內容的聲音。"</string>
@@ -320,7 +310,8 @@
<string name="notification_tap_again" msgid="4477318164947497249">"再次輕按即可開啟"</string>
<string name="tap_again" msgid="1315420114387908655">"再次輕按"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"向上滑動即可開啟"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"按下即可開啟"</string>
+ <string name="keyguard_unlock_press" msgid="9140109453735019209">"按解鎖圖示即可開啟"</string>
+ <string name="keyguard_face_successful_unlock_press" msgid="25520941264602588">"已使用面孔解鎖。按解鎖圖示即可開啟。"</string>
<string name="keyguard_retry" msgid="886802522584053523">"請向上滑動以再試一次"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"解鎖方可使用 NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"此裝置屬於您的機構"</string>
@@ -788,18 +779,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"新增"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"由「<xliff:g id="APP">%s</xliff:g>」提供的建議"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"裝置已上鎖"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"要從上鎖畫面查看及控制裝置嗎?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"您可以在上鎖畫面新增外部裝置的控制項。\n\n裝置應用程式可能會讓您在不解鎖手機或平板電腦的情況下控制部分裝置。\n\n您可隨時在「設定」中作出變更。"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"要在上鎖畫面控制裝置嗎?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"您可以在不解鎖手機或平板電腦的情況下控制部分裝置。\n\n裝置應用程式決定哪些裝置可透過此方式控制。"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"不用了,謝謝"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"是"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN 含有字母或符號"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"驗證<xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN 錯誤"</string>
@@ -849,20 +834,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"如要投放此工作階段,請開啟應用程式。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"不明應用程式"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"停止投放"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"廣播運作方式"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"廣播"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"附近有兼容藍牙裝置的人可收聽您正在廣播的媒體內容"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"如附近有兼容藍牙裝置的人,只要掃瞄您的 QR 碼或使用您的廣播名稱和密碼,便可收聽您的廣播內容"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"廣播名稱"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"密碼"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"儲存"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"版本號碼"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"版本號碼已複製到剪貼簿。"</string>
<string name="basic_status" msgid="2315371112182658176">"開啟對話"</string>
@@ -932,15 +910,14 @@
<string name="qs_tile_request_dialog_not_add" msgid="4168716573114067296">"不要新增圖塊"</string>
<string name="qs_user_switch_dialog_title" msgid="3045189293587781366">"選取使用者"</string>
<plurals name="fgs_manager_footer_label" formatted="false" msgid="9091110396713032871">
- <item quantity="other"><xliff:g id="COUNT_1">%s</xliff:g> 個使用中的應用程式</item>
- <item quantity="one"><xliff:g id="COUNT_0">%s</xliff:g> 個使用中的應用程式</item>
+ <item quantity="other">有 <xliff:g id="COUNT_1">%s</xliff:g> 個應用程式正在使用</item>
+ <item quantity="one">有 <xliff:g id="COUNT_0">%s</xliff:g> 個應用程式正在使用</item>
</plurals>
<string name="fgs_dot_content_description" msgid="2865071539464777240">"新資料"</string>
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"使用中的應用程式"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"停止"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"已停止"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"完成"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"已複製"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"來自「<xliff:g id="APPNAME">%1$s</xliff:g>」"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"關閉剪貼簿使用者介面"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 202bc4d02245..b1cf81e2e6d1 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"臉孔驗證成功"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"確認完畢"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"輕觸 [確認] 完成驗證設定"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"已通過驗證"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"使用 PIN 碼"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"這麼做可允許所有應用程式和服務使用麥克風。"</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"這麼做可允許所有應用程式和服務使用相機。"</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"這麼做可允許所有應用程式和服務使用相機或麥克風。"</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"無法使用麥克風"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"無法使用攝影機"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"無法使用麥克風和相機"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"如要允許存取麥克風,請將裝置的麥克風隱私權切換鈕切換到「開啟」的位置。如要知道裝置的隱私權切換鈕位置,請參閱裝置的使用手冊。"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"如要允許存取相機,請將裝置的相機隱私權切換鈕切換到「開啟」的位置。如要知道裝置的隱私權切換鈕位置,請參閱裝置的使用手冊。"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"如要允許存取,請將裝置的隱私權切換鈕切換到「開啟」的位置。如要知道裝置的隱私權切換鈕位置,請參閱裝置的使用手冊。"</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"可使用麥克風"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"可使用相機"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"可使用麥克風和相機"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"其他裝置"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"切換總覽"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"裝置不會發出音效或震動造成干擾,但是會保留與鬧鐘、提醒、活動和指定來電者有關的設定。如果你選擇播放音樂、影片和遊戲等內容,還是可以聽見相關音訊。"</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"再次輕觸即可開啟"</string>
<string name="tap_again" msgid="1315420114387908655">"再輕觸一次"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"向上滑動即可開啟"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"按下即可開啟"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"向上滑動即可重試"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"如要使用 NFC,請先解鎖"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"這部裝置的擁有者為貴機構"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"新增"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"來自「<xliff:g id="APP">%s</xliff:g>」的建議"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"裝置已鎖定"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"要在螢幕鎖定畫面上查看及控制裝置嗎?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"你可以在螢幕鎖定畫面上新增外部裝置的控制選項。\n\n你或許可透過裝置應用程式控制某些裝置,而不必解鎖手機或平板電腦。\n\n你隨時可以前往「設定」進行變更。"</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"要在螢幕鎖定畫面上控制裝置嗎?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"你可以直接控制某些裝置,不必解鎖手機或平板電腦。\n\n裝置應用程式會判斷可透過這種方式控制的應用程式。"</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"不用了,謝謝"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"是"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"PIN 碼含有字母或符號"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"驗證「<xliff:g id="DEVICE">%s</xliff:g>」"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"PIN 碼錯誤"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"如要投放這個工作階段,請開啟應用程式。"</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"不明的應用程式"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"停止投放"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"廣播功能的運作方式"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"廣播"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"如果附近的人有相容的藍牙裝置,就可以聽到你正在廣播的媒體內容"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"如果附近的人有相容的藍牙裝置,只要掃描你的 QR 圖碼或使用你的廣播名稱和密碼,就可以聽到你的廣播內容"</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"廣播名稱"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"密碼"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"儲存"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"版本號碼"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"已將版本號碼複製到剪貼簿。"</string>
<string name="basic_status" msgid="2315371112182658176">"開放式對話"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"使用中的應用程式"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"停止"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"已停止"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"完成"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"已複製"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"來自「<xliff:g id="APPNAME">%1$s</xliff:g>」"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"關閉剪貼簿 UI"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index e14a589c2026..4f9262f7371d 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -135,7 +135,7 @@
<string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"Ubuso bufakazelwe ubuqiniso"</string>
<string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"Kuqinisekisiwe"</string>
<string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"Thepha okuthi Qinisekisa ukuze uqedele"</string>
- <!-- no translation found for biometric_dialog_tap_confirm_with_face (7538145860465755864) -->
+ <!-- no translation found for biometric_dialog_tap_confirm_with_face (1092050545851021991) -->
<skip />
<string name="biometric_dialog_authenticated" msgid="7337147327545272484">"Kugunyaziwe"</string>
<string name="biometric_dialog_use_pin" msgid="8385294115283000709">"Sebenzisa iphinikhodi"</string>
@@ -292,24 +292,15 @@
<string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Lokhu kuvulela ukufinyelela kwawo wonke ama-app namasevisi avunyelwe ukusebenzisa imakrofoni yakho."</string>
<string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Lokhu kuvulela ukufinyelela kwawo wonke ama-app namasevisi avunyelwe ukusebenzisa ikhamera yakho."</string>
<string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Lokhu kuvulela ukufinyelela kwawo wonke ama-app namasevisi avunyelwe ukusebenzisa ikhamera yakho noma imakrofoni."</string>
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_title (2640140287496469689) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_title (7398084286822440384) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_title (195236134743281973) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_blocked_dialog_content (2138318880682877747) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_camera_blocked_dialog_content (7216015168047965948) -->
- <skip />
- <!-- no translation found for sensor_privacy_start_use_mic_camera_blocked_dialog_content (3960837827570483762) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_unblocked_toast_content (306555320557065068) -->
- <skip />
- <!-- no translation found for sensor_privacy_camera_unblocked_toast_content (7843105715964332311) -->
- <skip />
- <!-- no translation found for sensor_privacy_mic_camera_unblocked_toast_content (7339355093282661115) -->
- <skip />
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_title" msgid="2640140287496469689">"Imakrofoni ivinjiwe"</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_title" msgid="7398084286822440384">"Ikhamera ivinjiwe"</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_title" msgid="195236134743281973">"I-mic nekhamera kuvinjiwe"</string>
+ <string name="sensor_privacy_start_use_mic_blocked_dialog_content" msgid="2138318880682877747">"Ukuze uvule, hambisa iswishi yobumfihlo kudivayisi yakho uye kumakrofoni endaweni ukuze uvumele ukufinyelela kwemakrofoni. Bheka imanuwali yedivayisi ukuze uthole iswishi yobumfihlo kudivayisi yakho."</string>
+ <string name="sensor_privacy_start_use_camera_blocked_dialog_content" msgid="7216015168047965948">"Ukuze uvule, hambisa iswishi yobumfihlo kudivayisi yakho uyiyise kukhamera esendaweni ukuze uvumele ukufinyelela kwekhamera. Bheka imanuwali yedivayisi ukuze uthole iswishi yobumfihlo kudivayisi yakho."</string>
+ <string name="sensor_privacy_start_use_mic_camera_blocked_dialog_content" msgid="3960837827570483762">"Ukuze uzivulele, hambisa iswishi yobumfihlo kudivayisi yakho uyiyise endaweni evuliwe ukuze uvumele ukufinyelela. Bheka imanuwali yedivayisi ukuze uthole iswishi yobumfihlo kudivayisi yakho."</string>
+ <string name="sensor_privacy_mic_unblocked_toast_content" msgid="306555320557065068">"Imakrofoni iyatholakala"</string>
+ <string name="sensor_privacy_camera_unblocked_toast_content" msgid="7843105715964332311">"Ikhamera iyatholakala"</string>
+ <string name="sensor_privacy_mic_camera_unblocked_toast_content" msgid="7339355093282661115">"Imakrofoni nekhamera kuyatholakala"</string>
<string name="media_seamless_other_device" msgid="4654849800789196737">"Enye idivayisi"</string>
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"Guqula ukubuka konke"</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"Ngeke uphazanyiswe imisindo nokudlidliza, ngaphandle kusukela kuma-alamu, izikhumbuzi, imicimbi, nabafonayo obacacisayo. Usazozwa noma yini okhetha ukuyidlala okufaka umculo, amavidiyo, namageyimu."</string>
@@ -320,7 +311,10 @@
<string name="notification_tap_again" msgid="4477318164947497249">"Thepha futhi ukuze uvule"</string>
<string name="tap_again" msgid="1315420114387908655">"Thepha futhi"</string>
<string name="keyguard_unlock" msgid="8031975796351361601">"Swayiphela phezulu ukuze uvule"</string>
- <string name="keyguard_unlock_press" msgid="8488350566398524740">"Chofoza ukuze uvule"</string>
+ <!-- no translation found for keyguard_unlock_press (9140109453735019209) -->
+ <skip />
+ <!-- no translation found for keyguard_face_successful_unlock_press (25520941264602588) -->
+ <skip />
<string name="keyguard_retry" msgid="886802522584053523">"Swayiphela phezulu ukuze uzame futhi"</string>
<string name="require_unlock_for_nfc" msgid="1305686454823018831">"Vula ukuze usebenzise i-NFC"</string>
<string name="do_disclosure_generic" msgid="4896482821974707167">"Le divayisi eyenhlangano yakho"</string>
@@ -788,18 +782,12 @@
<string name="controls_dialog_ok" msgid="2770230012857881822">"Engeza"</string>
<string name="controls_dialog_message" msgid="342066938390663844">"Kuphakanyiswe ngu-<xliff:g id="APP">%s</xliff:g>"</string>
<string name="controls_tile_locked" msgid="731547768182831938">"Idivayisi ikhiyiwe"</string>
- <!-- no translation found for controls_settings_show_controls_dialog_title (3357852503553809554) -->
- <skip />
- <!-- no translation found for controls_settings_show_controls_dialog_message (7666211700524587969) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_title (7593188157655036677) -->
- <skip />
- <!-- no translation found for controls_settings_trivial_controls_dialog_message (237183787721917586) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_neutral_button (4514446354793124140) -->
- <skip />
- <!-- no translation found for controls_settings_dialog_positive_button (436070672551674863) -->
- <skip />
+ <string name="controls_settings_show_controls_dialog_title" msgid="3357852503553809554">"Bonisa futhi ulawule amadivayisi ekukhiyeni isikrini?"</string>
+ <string name="controls_settings_show_controls_dialog_message" msgid="7666211700524587969">"Ungakwazi ukwengeza izilawuli zamadivayisi wakho angaphandle ekukhiyeni isikrini.\n\nI-app yakho yedivayisi ingakuvumela ukuthi ulawule amanye amadivayisi ngaphandle kokuvula ifoni noma ithebulethi yakho.\n\nUngenza izinguquko nganoma yisiphi isikhathi Kumasethingi."</string>
+ <string name="controls_settings_trivial_controls_dialog_title" msgid="7593188157655036677">"Lawula amadivayisi ekukhiyeni isikrini?"</string>
+ <string name="controls_settings_trivial_controls_dialog_message" msgid="237183787721917586">"Ungalawula amanye amadivayisi ngaphandle kokuvula ifoni noma ithebulethi yakho.\n\nI-app yakho yedivayisi inquma ukuthi imaphi amadivayisi angalawulwa ngale ndlela."</string>
+ <string name="controls_settings_dialog_neutral_button" msgid="4514446354793124140">"Cha ngiyabonga"</string>
+ <string name="controls_settings_dialog_positive_button" msgid="436070672551674863">"Yebo"</string>
<string name="controls_pin_use_alphanumeric" msgid="8478371861023048414">"Iphinikhodi iqukethe amaletha namasimbui"</string>
<string name="controls_pin_verify" msgid="3452778292918877662">"Qinisekisa i-<xliff:g id="DEVICE">%s</xliff:g>"</string>
<string name="controls_pin_wrong" msgid="6162694056042164211">"Iphinikhodi engalungile"</string>
@@ -849,20 +837,13 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"Ukuze usakaze le seshini, sicela uvule i-app."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"I-app engaziwa"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"Misa ukusakaza"</string>
- <!-- no translation found for media_output_first_broadcast_title (6292237789860753022) -->
- <skip />
- <!-- no translation found for media_output_broadcast (3555580945878071543) -->
- <skip />
- <!-- no translation found for media_output_first_notify_broadcast_message (6353857724136398494) -->
- <skip />
- <!-- no translation found for media_output_broadcasting_message (4150299923404886073) -->
- <skip />
- <!-- no translation found for media_output_broadcast_name (8786127091542624618) -->
- <skip />
- <!-- no translation found for media_output_broadcast_code (870795639644728542) -->
- <skip />
- <!-- no translation found for media_output_broadcast_dialog_save (7910865591430010198) -->
- <skip />
+ <string name="media_output_first_broadcast_title" msgid="6292237789860753022">"Indlela ukusakaza okusebenza ngayo"</string>
+ <string name="media_output_broadcast" msgid="3555580945878071543">"Sakaza"</string>
+ <string name="media_output_first_notify_broadcast_message" msgid="6353857724136398494">"Abantu abaseduze nawe abanamadivayisi e-Bluetooth ahambisanayo bangalalela imidiya oyisakazayo"</string>
+ <string name="media_output_broadcasting_message" msgid="4150299923404886073">"Ukuze ulalele ukusakaza kwakho, abantu abaseduze abanamadivayisi e-Bluetooth ahambisanayo bangaskena ikhodi yakho ye-QR noma basebenzise igama lakho lokusakaza nephasiwedi."</string>
+ <string name="media_output_broadcast_name" msgid="8786127091542624618">"Londoloza Igama"</string>
+ <string name="media_output_broadcast_code" msgid="870795639644728542">"Iphasiwedi"</string>
+ <string name="media_output_broadcast_dialog_save" msgid="7910865591430010198">"Londoloza"</string>
<string name="build_number_clip_data_label" msgid="3623176728412560914">"Yakha inombolo"</string>
<string name="build_number_copy_toast" msgid="877720921605503046">"Yakha inombolo ekopishelwe kubhodi yokunamathisela."</string>
<string name="basic_status" msgid="2315371112182658176">"Vula ingxoxo"</string>
@@ -939,8 +920,7 @@
<string name="fgs_manager_dialog_title" msgid="5879184257257718677">"Ama-app asebenzayo"</string>
<string name="fgs_manager_app_item_stop_button_label" msgid="7188317969020801156">"Misa"</string>
<string name="fgs_manager_app_item_stop_button_stopped_label" msgid="6950382004441263922">"Imisiwe"</string>
- <!-- no translation found for clipboard_edit_text_done (4551887727694022409) -->
- <skip />
+ <string name="clipboard_edit_text_done" msgid="4551887727694022409">"Kwenziwe"</string>
<string name="clipboard_overlay_text_copied" msgid="1872624400464891363">"Ikopishiwe"</string>
<string name="clipboard_edit_source" msgid="9156488177277788029">"Kusukela ku-<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
<string name="clipboard_dismiss_description" msgid="7544573092766945657">"Chitha ukukopisha i-UI"</string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 767225106f0d..101db839336e 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -340,6 +340,7 @@
<!-- (48dp - 40dp) / 2 -->
<dimen name="qs_footer_action_inset">4dp</dimen>
+ <dimen name="qs_footer_actions_bottom_padding">4dp</dimen>
<dimen name="qs_footer_action_inset_negative">-4dp</dimen>
<!-- Margins on each side of QS Footer -->
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index ee77d210add5..f97bbee3b152 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -601,6 +601,12 @@
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
+ <style name="MediaPlayer.ScrubbingTime">
+ <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
+ <item name="android:textSize">12sp</item>
+ <item name="android:gravity">center</item>
+ </style>
+
<style name="MediaPlayer.Action" parent="@android:style/Widget.Material.Button.Borderless.Small">
<item name="android:background">@drawable/qs_media_light_source</item>
<item name="android:tint">?android:attr/textColorPrimary</item>
diff --git a/packages/SystemUI/res/xml/media_session_collapsed.xml b/packages/SystemUI/res/xml/media_session_collapsed.xml
index f00e03116337..eab7defe1e52 100644
--- a/packages/SystemUI/res/xml/media_session_collapsed.xml
+++ b/packages/SystemUI/res/xml/media_session_collapsed.xml
@@ -93,6 +93,11 @@
app:layout_constraintTop_toBottomOf="@id/media_seamless"
app:layout_constraintLeft_toRightOf="@id/media_action_barrier" />
+ <!-- Showing time while scrubbing isn't available in collapsed mode. -->
+ <Constraint
+ android:id="@+id/media_scrubbing_elapsed_time"
+ android:visibility="gone" />
+
<Constraint
android:id="@+id/media_progress_bar"
android:layout_width="0dp"
@@ -116,6 +121,11 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/media_seamless" />
+ <!-- Showing time while scrubbing isn't available in collapsed mode. -->
+ <Constraint
+ android:id="@+id/media_scrubbing_total_time"
+ android:visibility="gone" />
+
<Constraint
android:id="@+id/action0"
android:layout_width="48dp"
diff --git a/packages/SystemUI/res/xml/media_session_expanded.xml b/packages/SystemUI/res/xml/media_session_expanded.xml
index bec4e7ad540e..522dc686daa3 100644
--- a/packages/SystemUI/res/xml/media_session_expanded.xml
+++ b/packages/SystemUI/res/xml/media_session_expanded.xml
@@ -68,10 +68,19 @@
The chain is set to "spread" so that the progress bar can be weighted to fill any empty space.
-->
<Constraint
- android:id="@+id/actionPrev"
+ android:id="@+id/media_scrubbing_elapsed_time"
android:layout_width="48dp"
android:layout_height="48dp"
app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toLeftOf="@id/actionPrev"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintHorizontal_chainStyle="spread" />
+
+ <Constraint
+ android:id="@+id/actionPrev"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ app:layout_constraintLeft_toRightOf="@id/media_scrubbing_elapsed_time"
app:layout_constraintRight_toLeftOf="@id/media_progress_bar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_chainStyle="spread" />
@@ -90,6 +99,14 @@
android:layout_width="48dp"
android:layout_height="48dp"
app:layout_constraintLeft_toRightOf="@id/media_progress_bar"
+ app:layout_constraintRight_toLeftOf="@id/media_scrubbing_total_time"
+ app:layout_constraintBottom_toBottomOf="parent" />
+
+ <Constraint
+ android:id="@+id/media_scrubbing_total_time"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ app:layout_constraintLeft_toRightOf="@id/actionNext"
app:layout_constraintRight_toLeftOf="@id/action0"
app:layout_constraintBottom_toBottomOf="parent" />
@@ -97,7 +114,7 @@
android:id="@+id/action0"
android:layout_width="48dp"
android:layout_height="48dp"
- app:layout_constraintLeft_toRightOf="@id/actionNext"
+ app:layout_constraintLeft_toRightOf="@id/media_scrubbing_total_time"
app:layout_constraintRight_toLeftOf="@id/action1"
app:layout_constraintBottom_toBottomOf="parent" />
@@ -115,7 +132,7 @@
android:layout_height="48dp"
app:layout_constraintLeft_toRightOf="@id/action1"
app:layout_constraintRight_toLeftOf="@id/action3"
- app:layout_constraintBottom_toBottomOf="parent"/>
+ app:layout_constraintBottom_toBottomOf="parent" />
<Constraint
android:id="@+id/action3"
@@ -123,7 +140,7 @@
android:layout_height="48dp"
app:layout_constraintLeft_toRightOf="@id/action2"
app:layout_constraintRight_toLeftOf="@id/action4"
- app:layout_constraintBottom_toBottomOf="parent"/>
+ app:layout_constraintBottom_toBottomOf="parent" />
<Constraint
android:id="@+id/action4"
diff --git a/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt b/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt
index ad8c126aa2fa..19d39d515325 100644
--- a/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt
+++ b/packages/SystemUI/src/com/android/keyguard/AnimatableClockView.kt
@@ -22,6 +22,7 @@ import android.annotation.IntRange
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.Canvas
+import android.text.TextUtils
import android.text.format.DateFormat
import android.util.AttributeSet
import android.util.Log
@@ -125,13 +126,30 @@ class AnimatableClockView @JvmOverloads constructor(
fun refreshTime() {
time.timeInMillis = System.currentTimeMillis()
- text = DateFormat.format(format, time)
contentDescription = DateFormat.format(descFormat, time)
- Log.d(tag, "refreshTime this=$this" +
- " currTimeContextDesc=$contentDescription" +
- " measuredHeight=$measuredHeight" +
- " lastMeasureCall=$lastMeasureCall" +
- " isSingleLineInternal=$isSingleLineInternal")
+ val formattedText = DateFormat.format(format, time)
+ // Setting text actually triggers a layout pass (because the text view is set to
+ // wrap_content width and TextView always relayouts for this). Avoid needless
+ // relayout if the text didn't actually change.
+ if (!TextUtils.equals(text, formattedText)) {
+ text = formattedText
+ Log.d(
+ tag, "refreshTime this=$this" +
+ " currTimeContextDesc=$contentDescription" +
+ " measuredHeight=$measuredHeight" +
+ " lastMeasureCall=$lastMeasureCall" +
+ " isSingleLineInternal=$isSingleLineInternal"
+ )
+ } else {
+ Log.d(
+ tag, "refreshTime (skipped due to unchanged text)" +
+ " this=$this" +
+ " currTimeContextDesc=$contentDescription" +
+ " measuredHeight=$measuredHeight" +
+ " lastMeasureCall=$lastMeasureCall" +
+ " isSingleLineInternal=$isSingleLineInternal"
+ )
+ }
}
fun onTimeZoneChanged(timeZone: TimeZone?) {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt
index 43cd764f0110..692fe83ee2b8 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardBiometricLockoutLogger.kt
@@ -30,7 +30,6 @@ import com.android.keyguard.KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEv
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.SessionTracker
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -120,7 +119,7 @@ class KeyguardBiometricLockoutLogger @Inject constructor(
private fun log(event: PrimaryAuthRequiredEvent) =
uiEventLogger.log(event, sessionTracker.getSessionId(SESSION_KEYGUARD))
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ override fun dump(pw: PrintWriter, args: Array<String>) {
pw.println(" mFingerprintLockedOut=$fingerprintLockedOut")
pw.println(" mFaceLockedOut=$faceLockedOut")
pw.println(" mIsEncryptedOrLockdown=$encryptedOrLockdown")
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
index 25dcdf9aa561..bd5bceb4b3f9 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
@@ -23,7 +23,6 @@ import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.plugins.ClockPlugin;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -360,7 +359,7 @@ public class KeyguardClockSwitch extends RelativeLayout {
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardClockSwitch:");
pw.println(" mClockPlugin: " + mClockPlugin);
pw.println(" mClockFrame: " + mClockFrame);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
index fcac6813ae7a..b3cf92741222 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
@@ -25,6 +25,7 @@ import static com.android.keyguard.KeyguardClockSwitch.SMALL;
import android.app.WallpaperManager;
import android.content.res.Resources;
import android.database.ContentObserver;
+import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.View;
@@ -56,7 +57,6 @@ import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.settings.SecureSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Locale;
@@ -264,10 +264,11 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
mKeyguardUnlockAnimationController.setLockscreenSmartspace(mSmartspaceView);
}
- mSecureSettings.registerContentObserver(
+ mSecureSettings.registerContentObserverForUser(
Settings.Secure.getUriFor(Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK),
false, /* notifyForDescendants */
- mDoubleLineClockObserver
+ mDoubleLineClockObserver,
+ UserHandle.USER_ALL
);
updateDoubleLineClock();
@@ -476,8 +477,9 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
}
private void updateDoubleLineClock() {
- mCanShowDoubleLineClock = mSecureSettings.getInt(
- Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1) != 0;
+ mCanShowDoubleLineClock = mSecureSettings.getIntForUser(
+ Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1,
+ UserHandle.USER_CURRENT) != 0;
if (!mCanShowDoubleLineClock) {
mUiExecutor.execute(() -> displayClock(KeyguardClockSwitch.SMALL, /* animate */ true));
@@ -497,7 +499,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("currentClockSizeLarge=" + (mCurrentClockSize == LARGE));
pw.println("mCanShowDoubleLineClock=" + mCanShowDoubleLineClock);
mClockViewController.dump(pw);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index 9b76bab5c2a7..65a71664e245 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -51,7 +51,6 @@ import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.util.wakelock.KeepAwakeAnimationListener;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.HashSet;
@@ -279,7 +278,7 @@ public class KeyguardSliceView extends LinearLayout {
}
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardSliceView:");
pw.println(" mTitle: " + (mTitle == null ? "null" : mTitle.getVisibility() == VISIBLE));
pw.println(" mRow: " + (mRow == null ? "null" : mRow.getVisibility() == VISIBLE));
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
index 2af9244480e7..0b2b1214e599 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceViewController.java
@@ -47,7 +47,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.ViewController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
@@ -226,7 +225,7 @@ public class KeyguardSliceViewController extends ViewController<KeyguardSliceVie
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println(" mSlice: " + mSlice);
pw.println(" mClickActions: " + mClickActions);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
index 087817f0ec81..853d7402a1f8 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
@@ -28,7 +28,6 @@ import androidx.core.graphics.ColorUtils;
import com.android.systemui.R;
import com.android.systemui.statusbar.CrossFadeHelper;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Set;
@@ -133,15 +132,15 @@ public class KeyguardStatusView extends GridLayout {
return mChildrenAlphaExcludingSmartSpace;
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardStatusView:");
pw.println(" mDarkAmount: " + mDarkAmount);
pw.println(" mTextColor: " + Integer.toHexString(mTextColor));
if (mClockView != null) {
- mClockView.dump(fd, pw, args);
+ mClockView.dump(pw, args);
}
if (mKeyguardSlice != null) {
- mKeyguardSlice.dump(fd, pw, args);
+ mKeyguardSlice.dump(pw, args);
}
}
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 1383635a46d1..f1bec819560d 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -116,7 +116,6 @@ import com.android.systemui.util.Assert;
import com.google.android.collect.Lists;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -3598,7 +3597,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardUpdateMonitor state:");
pw.println(" SIM States:");
for (SimData data : mSimDatas.values()) {
diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconView.java b/packages/SystemUI/src/com/android/keyguard/LockIconView.java
index 0c1934cb977b..e63e675bfd14 100644
--- a/packages/SystemUI/src/com/android/keyguard/LockIconView.java
+++ b/packages/SystemUI/src/com/android/keyguard/LockIconView.java
@@ -36,7 +36,6 @@ import com.android.settingslib.Utils;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -217,7 +216,7 @@ public class LockIconView extends FrameLayout implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("Lock Icon View Parameters:");
pw.println(" Center in px (x, y)= ("
+ mLockIconCenter.x + ", " + mLockIconCenter.y + ")");
diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
index 25f185c8a4ed..db3037187520 100644
--- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
@@ -66,7 +66,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.concurrency.DelayableExecutor;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Objects;
@@ -377,7 +376,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("mUdfpsSupported: " + mUdfpsSupported);
pw.println("mUdfpsEnrolled: " + mUdfpsEnrolled);
pw.println("mIsKeyguardShowing: " + mIsKeyguardShowing);
@@ -399,7 +398,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
pw.println(" mInterpolatedDarkAmount: " + mInterpolatedDarkAmount);
if (mView != null) {
- mView.dump(fd, pw, args);
+ mView.dump(pw, args);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
index 9eaf4c96c896..3a9a238d90a6 100644
--- a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
@@ -20,7 +20,6 @@ import android.util.Log
import com.android.internal.annotations.GuardedBy
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.lang.ref.WeakReference
import java.util.concurrent.atomic.AtomicBoolean
@@ -102,7 +101,7 @@ class BootCompleteCacheImpl @Inject constructor(dumpManager: DumpManager) :
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("BootCompleteCache state:")
pw.println(" boot complete: ${isBootComplete()}")
if (!isBootComplete()) {
diff --git a/packages/SystemUI/src/com/android/systemui/CoreStartable.java b/packages/SystemUI/src/com/android/systemui/CoreStartable.java
index 4c96023549b5..0201cdc25319 100644
--- a/packages/SystemUI/src/com/android/systemui/CoreStartable.java
+++ b/packages/SystemUI/src/com/android/systemui/CoreStartable.java
@@ -23,7 +23,6 @@ import androidx.annotation.NonNull;
import com.android.internal.annotations.VisibleForTesting;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -46,7 +45,7 @@ public abstract class CoreStartable implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
}
@VisibleForTesting
diff --git a/packages/SystemUI/src/com/android/systemui/Dumpable.java b/packages/SystemUI/src/com/android/systemui/Dumpable.java
index 2f6d903233a0..652595100c0f 100644
--- a/packages/SystemUI/src/com/android/systemui/Dumpable.java
+++ b/packages/SystemUI/src/com/android/systemui/Dumpable.java
@@ -18,7 +18,6 @@ import androidx.annotation.NonNull;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -35,5 +34,5 @@ public interface Dumpable {
* @param pw Where to write your dump to.
* @param args Arguments.
*/
- void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args);
+ void dump(@NonNull PrintWriter pw, @NonNull String[] args);
}
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index ede2945be29a..649bfce5ae95 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -87,7 +87,6 @@ import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.ThreadFactory;
import com.android.systemui.util.settings.SecureSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -839,7 +838,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("ScreenDecorations state:");
pw.println(" DEBUG_DISABLE_SCREEN_DECORATIONS:" + DEBUG_DISABLE_SCREEN_DECORATIONS);
pw.println(" mIsPrivacyDotEnabled:" + isPrivacyDotEnabled());
@@ -864,7 +863,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
+ (mOverlays != null && mOverlays[BOUNDS_POSITION_TOP] != null) + ","
+ (mOverlays != null && mOverlays[BOUNDS_POSITION_RIGHT] != null) + ","
+ (mOverlays != null && mOverlays[BOUNDS_POSITION_BOTTOM] != null) + ")");
- mRoundedCornerResDelegate.dump(fd, pw, args);
+ mRoundedCornerResDelegate.dump(pw, args);
}
private void updateOrientation() {
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 031e3781ae9d..6d3fd503dff6 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -341,8 +341,7 @@ public class SystemUIApplication extends Application implements
// TODO(b/217567642): replace com.android.systemui.dump.Dumpable by
// com.android.util.Dumpable and get rid of the intermediate lambda
- mDumpManager.registerDumpable(dumpable.getDumpableName(),
- (fd, pw, args) -> dumpable.dump(pw, args));
+ mDumpManager.registerDumpable(dumpable.getDumpableName(), dumpable::dump);
return true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIService.java b/packages/SystemUI/src/com/android/systemui/SystemUIService.java
index 1f41038c260f..8ffa9b470cf7 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIService.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIService.java
@@ -120,6 +120,6 @@ public class SystemUIService extends Service {
DumpHandler.PRIORITY_ARG_CRITICAL};
}
- mDumpHandler.dump(fd, pw, massagedArgs);
+ mDumpHandler.dump(pw, massagedArgs);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
index aafbf7e4d439..6e14ddc671a3 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
@@ -41,7 +41,6 @@ import com.android.systemui.model.SysUiState;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.CommandQueue;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -237,7 +236,7 @@ public class WindowMagnification extends CoreStartable implements WindowMagnifie
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(TAG);
mMagnificationControllerSupplier.forEach(
magnificationController -> magnificationController.dump(pw));
diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
index 9676a57b2df9..56fbe6d9bf14 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
@@ -48,7 +48,6 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.util.Assert;
import com.android.systemui.util.time.SystemClock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -428,7 +427,7 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("AppOpsController state:");
pw.println(" Listening: " + mListening);
pw.println(" Active Items:");
diff --git a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java
index 2b0c083e2f31..6a10d4ab1e8b 100644
--- a/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java
+++ b/packages/SystemUI/src/com/android/systemui/battery/BatteryMeterView.java
@@ -32,6 +32,7 @@ import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import android.provider.Settings;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
@@ -52,7 +53,6 @@ import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.policy.BatteryController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.text.NumberFormat;
@@ -267,8 +267,15 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
if (mBatteryPercentView == null) {
return;
}
- mBatteryPercentView.setText(
- NumberFormat.getPercentInstance().format(mLevel / 100f));
+
+ String percentText = NumberFormat.getPercentInstance().format(mLevel / 100f);
+ // Setting text actually triggers a layout pass (because the text view is set to
+ // wrap_content width and TextView always relayouts for this). Avoid needless
+ // relayout if the text didn't actually change.
+ if (!TextUtils.equals(mBatteryPercentView.getText(), percentText)) {
+ mBatteryPercentView.setText(percentText);
+ }
+
setContentDescription(
getContext().getString(mCharging ? R.string.accessibility_battery_level_charging
: R.string.accessibility_battery_level, mLevel));
@@ -384,7 +391,7 @@ public class BatteryMeterView extends LinearLayout implements DarkReceiver {
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
String powerSave = mDrawable == null ? null : mDrawable.getPowerSaveEnabled() + "";
CharSequence percent = mBatteryPercentView == null ? null : mBatteryPercentView.getText();
pw.println(" BatteryMeterView:");
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt
index 27b0592af2d7..ac81633cdb2b 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.kt
@@ -19,14 +19,13 @@ import android.animation.ValueAnimator
import android.graphics.PointF
import android.graphics.RectF
import com.android.systemui.Dumpable
-import com.android.systemui.dump.DumpManager
import com.android.systemui.animation.Interpolators
+import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
import com.android.systemui.util.ViewController
-import java.io.FileDescriptor
import java.io.PrintWriter
/**
@@ -128,7 +127,7 @@ abstract class UdfpsAnimationViewController<T : UdfpsAnimationView>(
*/
private val dumpTag = "$tag ($this)"
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ override fun dump(pw: PrintWriter, args: Array<String>) {
pw.println("mNotificationShadeVisible=$notificationShadeVisible")
pw.println("shouldPauseAuth()=" + shouldPauseAuth())
pw.println("isPauseAuth=" + view.isPauseAuth)
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
index 63b2b201c498..2ac240885faa 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
@@ -376,7 +376,6 @@ public class UdfpsController implements DozeReceiver {
boolean withinSensorArea =
isWithinSensorArea(udfpsView, event.getX(), event.getY(), fromUdfpsView);
if (withinSensorArea) {
- mLatencyTracker.onActionStart(LatencyTracker.ACTION_UDFPS_ILLUMINATE);
Trace.beginAsyncSection("UdfpsController.e2e.onPointerDown", 0);
Log.v(TAG, "onTouch | action down");
// The pointer that causes ACTION_DOWN is always at index 0.
@@ -792,6 +791,7 @@ public class UdfpsController implements DozeReceiver {
+ " current: " + mOverlay.getRequestId());
return;
}
+ mLatencyTracker.onActionStart(LatencyTracker.ACTION_UDFPS_ILLUMINATE);
if (!mOnFingerDown) {
playStartHaptic();
@@ -806,11 +806,9 @@ public class UdfpsController implements DozeReceiver {
final UdfpsView view = mOverlay.getOverlayView();
if (view != null) {
- Trace.beginAsyncSection("UdfpsController.e2e.startIllumination", 0);
view.startIllumination(() -> {
mFingerprintManager.onUiReady(requestId, mSensorProps.sensorId);
mLatencyTracker.onActionEnd(LatencyTracker.ACTION_UDFPS_ILLUMINATE);
- Trace.endAsyncSection("UdfpsController.e2e.startIllumination", 0);
});
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java
index 2a945ded08ef..5d131f2a0046 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java
@@ -44,7 +44,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.time.SystemClock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -181,8 +180,8 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- super.dump(fd, pw, args);
+ public void dump(PrintWriter pw, String[] args) {
+ super.dump(pw, args);
pw.println("mShowingUdfpsBouncer=" + mShowingUdfpsBouncer);
pw.println("mFaceDetectRunning=" + mFaceDetectRunning);
pw.println("mStatusBarState=" + StatusBarState.toString(mStatusBarState));
diff --git a/packages/SystemUI/src/com/android/systemui/broadcast/ActionReceiver.kt b/packages/SystemUI/src/com/android/systemui/broadcast/ActionReceiver.kt
index 434b03d404dc..4315cb0e14d7 100644
--- a/packages/SystemUI/src/com/android/systemui/broadcast/ActionReceiver.kt
+++ b/packages/SystemUI/src/com/android/systemui/broadcast/ActionReceiver.kt
@@ -24,7 +24,6 @@ import android.util.ArraySet
import com.android.systemui.Dumpable
import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger
import com.android.systemui.util.indentIfPossible
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
import java.util.concurrent.atomic.AtomicInteger
@@ -118,7 +117,7 @@ class ActionReceiver(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.indentIfPossible {
println("Registered: $registered")
println("Receivers:")
diff --git a/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt b/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
index 199988257be0..1c27e320dd83 100644
--- a/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
+++ b/packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt
@@ -33,7 +33,6 @@ import com.android.systemui.Dumpable
import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger
import com.android.systemui.dump.DumpManager
import com.android.systemui.settings.UserTracker
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
@@ -134,7 +133,7 @@ open class BroadcastDispatcher constructor (
executor: Executor? = null,
user: UserHandle? = null,
@Context.RegisterReceiverFlags flags: Int = Context.RECEIVER_EXPORTED,
- permission: String? = null,
+ permission: String? = null
) {
checkFilter(filter)
val data = ReceiverData(
@@ -186,13 +185,13 @@ open class BroadcastDispatcher constructor (
protected open fun createUBRForUser(userId: Int) =
UserBroadcastDispatcher(context, userId, bgLooper, bgExecutor, logger)
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("Broadcast dispatcher:")
val ipw = IndentingPrintWriter(pw, " ")
ipw.increaseIndent()
for (index in 0 until receiversByUser.size()) {
ipw.println("User ${receiversByUser.keyAt(index)}")
- receiversByUser.valueAt(index).dump(fd, ipw, args)
+ receiversByUser.valueAt(index).dump(ipw, args)
}
ipw.decreaseIndent()
}
diff --git a/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt b/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt
index eb0cf5e9c016..24ce2384ab46 100644
--- a/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt
+++ b/packages/SystemUI/src/com/android/systemui/broadcast/UserBroadcastDispatcher.kt
@@ -30,7 +30,6 @@ import com.android.internal.util.Preconditions
import com.android.systemui.Dumpable
import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger
import com.android.systemui.util.indentIfPossible
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
import java.util.concurrent.atomic.AtomicInteger
@@ -171,7 +170,7 @@ open class UserBroadcastDispatcher(
logger.logReceiverUnregistered(userId, receiver)
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.indentIfPossible {
actionsToActionsReceivers.forEach { (actionFlagsPerm, actionReceiver) ->
println(
@@ -179,7 +178,7 @@ open class UserBroadcastDispatcher(
BroadcastDispatcherLogger.flagToString(actionFlagsPerm.flags) +
if (actionFlagsPerm.permission == null) "):"
else ":${actionFlagsPerm.permission}):")
- actionReceiver.dump(fd, pw, args)
+ actionReceiver.dump(pw, args)
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java
index 0a9329845b23..e28a4755bd00 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java
@@ -36,7 +36,6 @@ import com.android.systemui.dagger.qualifiers.TestHarness;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayDeque;
import java.util.ArrayList;
@@ -389,7 +388,7 @@ public class BrightLineFalsingManager implements FalsingManager {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
ipw.println("BRIGHTLINE FALSING MANAGER");
ipw.print("classifierEnabled=");
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java
index b325700954c2..56dd1e18f245 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java
@@ -309,6 +309,10 @@ class FalsingCollectorImpl implements FalsingCollector {
avoidGesture();
return;
}
+ if (ev.getActionMasked() == MotionEvent.ACTION_OUTSIDE) {
+ return;
+ }
+
// We delay processing down events to see if another component wants to process them.
// If #avoidGesture is called after a MotionEvent.ACTION_DOWN, all following motion events
// will be ignored by the collector until another MotionEvent.ACTION_DOWN is passed in.
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
index 5a24f354eaf6..609f1d6d9b89 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
@@ -32,7 +32,6 @@ import com.android.systemui.plugins.PluginListener;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.util.DeviceConfigProxy;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.concurrent.Executor;
@@ -190,8 +189,8 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
- mInternalFalsingManager.dump(fd, pw, args);
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
+ mInternalFalsingManager.dump(pw, args);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/EditTextActivity.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/EditTextActivity.java
index f710d0154060..0d8987988f0a 100644
--- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/EditTextActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/EditTextActivity.java
@@ -95,7 +95,7 @@ public class EditTextActivity extends Activity
private void share() {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
- sendIntent.putExtra(Intent.EXTRA_TEXT, mEditText.getText());
+ sendIntent.putExtra(Intent.EXTRA_TEXT, mEditText.getText().toString());
sendIntent.setType("text/plain");
Intent shareIntent = Intent.createChooser(sendIntent, null);
diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
index 7c281f942627..bf4fba89ca55 100644
--- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
+++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
@@ -32,7 +32,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.policy.ConfigurationController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
@@ -145,7 +144,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("SysuiColorExtractor:");
pw.println(" Current wallpaper colors:");
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
index 8367e1128033..bed553e6e4d6 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
@@ -47,7 +47,6 @@ import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_FILE
import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_SEEDING_COMPLETED
import com.android.systemui.util.concurrency.DelayableExecutor
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.Optional
import java.util.concurrent.TimeUnit
@@ -561,7 +560,7 @@ class ControlsControllerImpl @Inject constructor (
return uiController.getPreferredStructure(getFavorites())
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("ControlsController state:")
pw.println(" Changing users: $userChanging")
pw.println(" Current user: ${currentUser.identifier}")
diff --git a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
index b8e6d9f0f60a..2fd373105745 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
@@ -19,6 +19,7 @@ package com.android.systemui.controls.dagger
import android.content.ContentResolver
import android.content.Context
import android.database.ContentObserver
+import android.os.UserHandle
import android.provider.Settings
import com.android.systemui.controls.controller.ControlsController
import com.android.systemui.controls.management.ControlsListingController
@@ -73,10 +74,11 @@ class ControlsComponent @Inject constructor(
init {
if (featureEnabled) {
- secureSettings.registerContentObserver(
+ secureSettings.registerContentObserverForUser(
Settings.Secure.getUriFor(Settings.Secure.LOCKSCREEN_SHOW_CONTROLS),
false, /* notifyForDescendants */
- showWhileLockedObserver
+ showWhileLockedObserver,
+ UserHandle.USER_ALL
)
updateShowWhileLocked()
}
@@ -123,8 +125,8 @@ class ControlsComponent @Inject constructor(
}
private fun updateShowWhileLocked() {
- canShowWhileLockedSetting = secureSettings.getInt(
- Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, 0) != 0
+ canShowWhileLockedSetting = secureSettings.getIntForUser(
+ Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, 0, UserHandle.USER_CURRENT) != 0
}
enum class Visibility {
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
index 73faa3459c7b..44879aa9e85b 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
@@ -27,6 +27,7 @@ import android.content.pm.ResolveInfo
import android.database.ContentObserver
import android.net.Uri
import android.os.Handler
+import android.os.UserHandle
import android.os.VibrationEffect
import android.provider.Settings.Secure
import android.service.controls.Control
@@ -74,10 +75,10 @@ class ControlActionCoordinatorImpl @Inject constructor(
private var actionsInProgress = mutableSetOf<String>()
private val isLocked: Boolean
get() = !keyguardStateController.isUnlocked()
- private var mAllowTrivialControls: Boolean = secureSettings.getInt(
- Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 0) != 0
- private var mShowDeviceControlsInLockscreen: Boolean = secureSettings.getInt(
- Secure.LOCKSCREEN_SHOW_CONTROLS, 0) != 0
+ private var mAllowTrivialControls: Boolean = secureSettings.getIntForUser(
+ Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 0, UserHandle.USER_CURRENT) != 0
+ private var mShowDeviceControlsInLockscreen: Boolean = secureSettings.getIntForUser(
+ Secure.LOCKSCREEN_SHOW_CONTROLS, 0, UserHandle.USER_CURRENT) != 0
override lateinit var activityContext: Context
companion object {
@@ -95,23 +96,25 @@ class ControlActionCoordinatorImpl @Inject constructor(
super.onChange(selfChange, uri)
when (uri) {
lockScreenShowControlsUri -> {
- mAllowTrivialControls = secureSettings.getInt(
- Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 0) != 0
+ mAllowTrivialControls = secureSettings.getIntForUser(
+ Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS,
+ 0, UserHandle.USER_CURRENT) != 0
}
showControlsUri -> {
mShowDeviceControlsInLockscreen = secureSettings
- .getInt(Secure.LOCKSCREEN_SHOW_CONTROLS, 0) != 0
+ .getIntForUser(Secure.LOCKSCREEN_SHOW_CONTROLS,
+ 0, UserHandle.USER_CURRENT) != 0
}
}
}
}
- secureSettings.registerContentObserver(
+ secureSettings.registerContentObserverForUser(
lockScreenShowControlsUri,
- false /* notifyForDescendants */, controlsContentObserver
+ false /* notifyForDescendants */, controlsContentObserver, UserHandle.USER_ALL
)
- secureSettings.registerContentObserver(
+ secureSettings.registerContentObserverForUser(
showControlsUri,
- false /* notifyForDescendants */, controlsContentObserver
+ false /* notifyForDescendants */, controlsContentObserver, UserHandle.USER_ALL
)
}
@@ -311,7 +314,8 @@ class ControlActionCoordinatorImpl @Inject constructor(
MAX_NUMBER_ATTEMPTS_CONTROLS_DIALOG)
.commit()
}
- secureSettings.putInt(Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 1)
+ secureSettings.putIntForUser(Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 1,
+ UserHandle.USER_CURRENT)
true
}
.create()
@@ -325,8 +329,10 @@ class ControlActionCoordinatorImpl @Inject constructor(
MAX_NUMBER_ATTEMPTS_CONTROLS_DIALOG)
.commit()
}
- secureSettings.putInt(Secure.LOCKSCREEN_SHOW_CONTROLS, 1)
- secureSettings.putInt(Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 1)
+ secureSettings.putIntForUser(Secure.LOCKSCREEN_SHOW_CONTROLS,
+ 1, UserHandle.USER_CURRENT)
+ secureSettings.putIntForUser(Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS,
+ 1, UserHandle.USER_CURRENT)
true
}
.create()
diff --git a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt
index 4c444175eca1..ed175ef7a095 100644
--- a/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt
+++ b/packages/SystemUI/src/com/android/systemui/decor/RoundedCornerResDelegate.kt
@@ -25,7 +25,6 @@ import android.util.Size
import android.view.RoundedCorners
import com.android.systemui.Dumpable
import com.android.systemui.R
-import java.io.FileDescriptor
import java.io.PrintWriter
class RoundedCornerResDelegate(
@@ -163,7 +162,7 @@ class RoundedCornerResDelegate(
return drawable
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("RoundedCornerResDelegate state:")
pw.println(" isMultipleRadius:$isMultipleRadius")
pw.println(" roundedSize(w,h)=(${roundedSize.width},${roundedSize.height})")
diff --git a/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt b/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt
index f58d6285dc40..d537d4b51b6c 100644
--- a/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt
+++ b/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt
@@ -29,7 +29,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.policy.CallbackController
import com.android.systemui.util.Assert
import com.android.systemui.util.settings.GlobalSettings
-import java.io.FileDescriptor
import java.io.PrintWriter
/**
@@ -176,7 +175,7 @@ class DemoModeController constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("DemoModeController state -")
pw.println(" isInDemoMode=$isInDemoMode")
pw.println(" isDemoModeAllowed=$isAvailable")
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index f05fc2bb202a..19287c133651 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -28,7 +28,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.policy.DevicePostureController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -249,7 +248,7 @@ public class DozeLog implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
synchronized (DozeLog.class) {
pw.print(" Doze summary stats (for ");
TimeUtils.formatDuration(System.currentTimeMillis() - mSince, pw);
diff --git a/packages/SystemUI/src/com/android/systemui/dump/DumpHandler.kt b/packages/SystemUI/src/com/android/systemui/dump/DumpHandler.kt
index e4a7406687d2..7cc33a9d4135 100644
--- a/packages/SystemUI/src/com/android/systemui/dump/DumpHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/dump/DumpHandler.kt
@@ -25,7 +25,6 @@ import com.android.systemui.dump.DumpHandler.Companion.PRIORITY_ARG_CRITICAL
import com.android.systemui.dump.DumpHandler.Companion.PRIORITY_ARG_HIGH
import com.android.systemui.dump.DumpHandler.Companion.PRIORITY_ARG_NORMAL
import com.android.systemui.log.LogBuffer
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
import javax.inject.Provider
@@ -88,7 +87,7 @@ class DumpHandler @Inject constructor(
/**
* Dump the diagnostics! Behavior can be controlled via [args].
*/
- fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ fun dump(pw: PrintWriter, args: Array<String>) {
Trace.beginSection("DumpManager#dump()")
val start = SystemClock.uptimeMillis()
@@ -100,9 +99,9 @@ class DumpHandler @Inject constructor(
}
when (parsedArgs.dumpPriority) {
- PRIORITY_ARG_CRITICAL -> dumpCritical(fd, pw, parsedArgs)
+ PRIORITY_ARG_CRITICAL -> dumpCritical(pw, parsedArgs)
PRIORITY_ARG_NORMAL -> dumpNormal(pw, parsedArgs)
- else -> dumpParameterized(fd, pw, parsedArgs)
+ else -> dumpParameterized(pw, parsedArgs)
}
pw.println()
@@ -110,20 +109,20 @@ class DumpHandler @Inject constructor(
Trace.endSection()
}
- private fun dumpParameterized(fd: FileDescriptor, pw: PrintWriter, args: ParsedArgs) {
+ private fun dumpParameterized(pw: PrintWriter, args: ParsedArgs) {
when (args.command) {
- "bugreport-critical" -> dumpCritical(fd, pw, args)
+ "bugreport-critical" -> dumpCritical(pw, args)
"bugreport-normal" -> dumpNormal(pw, args)
- "dumpables" -> dumpDumpables(fd, pw, args)
+ "dumpables" -> dumpDumpables(pw, args)
"buffers" -> dumpBuffers(pw, args)
"config" -> dumpConfig(pw)
"help" -> dumpHelp(pw)
- else -> dumpTargets(args.nonFlagArgs, fd, pw, args)
+ else -> dumpTargets(args.nonFlagArgs, pw, args)
}
}
- private fun dumpCritical(fd: FileDescriptor, pw: PrintWriter, args: ParsedArgs) {
- dumpManager.dumpDumpables(fd, pw, args.rawArgs)
+ private fun dumpCritical(pw: PrintWriter, args: ParsedArgs) {
+ dumpManager.dumpDumpables(pw, args.rawArgs)
dumpConfig(pw)
}
@@ -132,11 +131,11 @@ class DumpHandler @Inject constructor(
logBufferEulogizer.readEulogyIfPresent(pw)
}
- private fun dumpDumpables(fw: FileDescriptor, pw: PrintWriter, args: ParsedArgs) {
+ private fun dumpDumpables(pw: PrintWriter, args: ParsedArgs) {
if (args.listOnly) {
dumpManager.listDumpables(pw)
} else {
- dumpManager.dumpDumpables(fw, pw, args.rawArgs)
+ dumpManager.dumpDumpables(pw, args.rawArgs)
}
}
@@ -150,13 +149,12 @@ class DumpHandler @Inject constructor(
private fun dumpTargets(
targets: List<String>,
- fd: FileDescriptor,
pw: PrintWriter,
args: ParsedArgs
) {
if (targets.isNotEmpty()) {
for (target in targets) {
- dumpManager.dumpTarget(target, fd, pw, args.rawArgs, args.tailLength)
+ dumpManager.dumpTarget(target, pw, args.rawArgs, args.tailLength)
}
} else {
if (args.listOnly) {
diff --git a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt
index 21a1b75224b2..cca04da8f426 100644
--- a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt
@@ -19,7 +19,6 @@ package com.android.systemui.dump
import android.util.ArrayMap
import com.android.systemui.Dumpable
import com.android.systemui.log.LogBuffer
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
import javax.inject.Singleton
@@ -89,14 +88,13 @@ open class DumpManager @Inject constructor() {
@Synchronized
fun dumpTarget(
target: String,
- fd: FileDescriptor,
pw: PrintWriter,
args: Array<String>,
tailLength: Int
) {
for (dumpable in dumpables.values) {
if (dumpable.name.endsWith(target)) {
- dumpDumpable(dumpable, fd, pw, args)
+ dumpDumpable(dumpable, pw, args)
return
}
}
@@ -113,9 +111,9 @@ open class DumpManager @Inject constructor() {
* Dumps all registered dumpables to [pw]
*/
@Synchronized
- fun dumpDumpables(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ fun dumpDumpables(pw: PrintWriter, args: Array<String>) {
for (module in dumpables.values) {
- dumpDumpable(module, fd, pw, args)
+ dumpDumpable(module, pw, args)
}
}
@@ -165,14 +163,13 @@ open class DumpManager @Inject constructor() {
private fun dumpDumpable(
dumpable: RegisteredDumpable<Dumpable>,
- fd: FileDescriptor,
pw: PrintWriter,
args: Array<String>
) {
pw.println()
pw.println("${dumpable.name}:")
pw.println("----------------------------------------------------------------------------")
- dumpable.dumpable.dump(fd, pw, args)
+ dumpable.dumpable.dump(pw, args)
}
private fun dumpBuffer(
diff --git a/packages/SystemUI/src/com/android/systemui/dump/SystemUIAuxiliaryDumpService.java b/packages/SystemUI/src/com/android/systemui/dump/SystemUIAuxiliaryDumpService.java
index da983ab03a1d..0a41a56b5ecb 100644
--- a/packages/SystemUI/src/com/android/systemui/dump/SystemUIAuxiliaryDumpService.java
+++ b/packages/SystemUI/src/com/android/systemui/dump/SystemUIAuxiliaryDumpService.java
@@ -51,7 +51,6 @@ public class SystemUIAuxiliaryDumpService extends Service {
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
// Simulate the NORMAL priority arg being passed to us
mDumpHandler.dump(
- fd,
pw,
new String[] { DumpHandler.PRIORITY_ARG, DumpHandler.PRIORITY_ARG_NORMAL });
}
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
index 3335c8d62f46..aaa4d9eefd29 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java
@@ -31,6 +31,7 @@ import android.content.IntentFilter;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -43,7 +44,6 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.settings.SecureSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Map;
@@ -210,7 +210,8 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable {
Log.w(TAG, "Failed to set id " + id + " to " + value);
return;
}
- mSecureSettings.putString(mFlagManager.idToSettingsKey(id), data);
+ mSecureSettings.putStringForUser(mFlagManager.idToSettingsKey(id), data,
+ UserHandle.USER_CURRENT);
Log.i(TAG, "Set id " + id + " to " + value);
removeFromCache(id);
mFlagManager.dispatchListenersAndMaybeRestart(id, this::restartSystemUI);
@@ -238,7 +239,8 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable {
/** Works just like {@link #eraseFlag(int)} except that it doesn't restart SystemUI. */
private void eraseInternal(int id) {
// We can't actually "erase" things from sysprops, but we can set them to empty!
- mSecureSettings.putString(mFlagManager.idToSettingsKey(id), "");
+ mSecureSettings.putStringForUser(mFlagManager.idToSettingsKey(id), "",
+ UserHandle.USER_CURRENT);
Log.i(TAG, "Erase id " + id);
}
@@ -378,7 +380,7 @@ public class FeatureFlagsDebug implements FeatureFlags, Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("can override: true");
pw.println("booleans: " + mBooleanFlagCache.size());
mBooleanFlagCache.forEach((key, value) -> pw.println(" sysui_flag_" + key + ": " + value));
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java
index 1023b11e8a5f..cacef161a862 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java
@@ -29,7 +29,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Map;
@@ -119,7 +118,7 @@ public class FeatureFlagsRelease implements FeatureFlags, Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("can override: false");
Map<Integer, Flag<?>> knownFlags = Flags.collectFlags();
for (Map.Entry<Integer, Flag<?>> idToFlag : knownFlags.entrySet()) {
diff --git a/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java b/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java
index 2a5e653dd051..fe945fb2fa28 100644
--- a/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java
+++ b/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java
@@ -27,7 +27,6 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.statusbar.policy.ConfigurationController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -123,10 +122,10 @@ public class FragmentService implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("Dumping fragments:");
for (FragmentHostState state : mHosts.values()) {
- state.mFragmentHostManager.getFragmentManager().dump(" ", fd, pw, args);
+ state.mFragmentHostManager.getFragmentManager().dump(" ", null, pw, args);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelper.java b/packages/SystemUI/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelper.java
index 1f58112c5dc6..1f61647b713f 100644
--- a/packages/SystemUI/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelper.java
@@ -16,6 +16,7 @@
package com.android.systemui.hdmi;
+import android.os.UserHandle;
import android.provider.Settings;
import com.android.internal.app.LocalePicker;
@@ -50,8 +51,8 @@ public class HdmiCecSetMenuLanguageHelper {
SecureSettings secureSettings) {
mBackgroundExecutor = executor;
mSecureSettings = secureSettings;
- String denylist = mSecureSettings.getString(
- Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST);
+ String denylist = mSecureSettings.getStringForUser(
+ Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, UserHandle.USER_CURRENT);
mDenylist = new HashSet<>(denylist == null
? Collections.EMPTY_SET
: Arrays.asList(denylist.split(SEPARATOR)));
@@ -91,7 +92,7 @@ public class HdmiCecSetMenuLanguageHelper {
*/
public void declineLocale() {
mDenylist.add(mLocale.toLanguageTag());
- mSecureSettings.putString(Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST,
- String.join(SEPARATOR, mDenylist));
+ mSecureSettings.putStringForUser(Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST,
+ String.join(SEPARATOR, mDenylist), UserHandle.USER_CURRENT);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java
index 6f7e73fd5190..9e2b7c748631 100644
--- a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java
+++ b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java
@@ -54,7 +54,6 @@ import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collection;
@@ -141,7 +140,7 @@ public class KeyboardUI extends CoreStartable implements InputManager.OnTabletMo
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyboardUI:");
pw.println(" mEnabled=" + mEnabled);
pw.println(" mBootCompleted=" + mEnabled);
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
index 0ad2807bed55..5aedbdc20b31 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
@@ -31,7 +31,6 @@ import com.android.systemui.statusbar.phone.KeyguardIndicationTextView;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.concurrency.DelayableExecutor;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -347,7 +346,7 @@ public class KeyguardIndicationRotateTextViewController extends
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardIndicationRotatingTextViewController:");
pw.println(" currentMessage=" + mView.getText());
pw.println(" dozing:" + mIsDozing);
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 47763170d1ea..a5618568d6c7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -135,7 +135,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.util.DeviceConfigProxy;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.concurrent.Executor;
@@ -2894,7 +2893,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable,
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print(" mSystemReady: "); pw.println(mSystemReady);
pw.print(" mBootCompleted: "); pw.println(mBootCompleted);
pw.print(" mBootSendUserPresent: "); pw.println(mBootSendUserPresent);
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
index e71aa854e94a..b3481219a85d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
@@ -23,7 +23,6 @@ import androidx.annotation.NonNull;
import com.android.systemui.Dumpable;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -77,7 +76,7 @@ public class ScreenLifecycle extends Lifecycle<ScreenLifecycle.Observer> impleme
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("ScreenLifecycle:");
pw.println(" mScreenState=" + mScreenState);
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
index 474a81b9ce44..017b65acd1d2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
@@ -34,7 +34,6 @@ import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -170,7 +169,7 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("WakefulnessLifecycle:");
pw.println(" mWakefulness=" + mWakefulness);
}
diff --git a/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java b/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java
index 0656f5efbe80..8f9357abbba8 100644
--- a/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java
+++ b/packages/SystemUI/src/com/android/systemui/log/SessionTracker.java
@@ -37,7 +37,6 @@ import com.android.systemui.biometrics.AuthController;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.KeyguardStateController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
@@ -180,7 +179,7 @@ public class SessionTracker extends CoreStartable {
};
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
for (int session : ALL_SESSIONS) {
pw.println(" " + getString(session)
+ " instanceId=" + mSessionToInstanceId.get(session));
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
index d674b2b85db4..542bd56d0429 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
@@ -32,7 +32,6 @@ import com.android.systemui.util.animation.UniqueObjectHostView
import com.android.systemui.util.animation.requiresRemeasuring
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.TreeMap
import javax.inject.Inject
@@ -877,7 +876,7 @@ class MediaCarouselController @Inject constructor(
mediaManager.onSwipeToDismiss()
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.apply {
println("keysNeedRemoval: $keysNeedRemoval")
println("playerKeys: ${MediaPlayerData.playerKeys()}")
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
index 3a727ba7b70c..aac28d1570ff 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
@@ -60,6 +60,7 @@ import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.GhostedViewLaunchAnimatorController;
import com.android.systemui.broadcast.BroadcastSender;
import com.android.systemui.dagger.qualifiers.Background;
+import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.media.dialog.MediaOutputDialogFactory;
import com.android.systemui.monet.ColorScheme;
import com.android.systemui.plugins.ActivityStarter;
@@ -108,6 +109,13 @@ public class MediaControlPanel {
R.id.actionNext
);
+ // Buttons that should get hidden when we're scrubbing (they will be replaced with the views
+ // showing scrubbing time)
+ private static final List<Integer> SEMANTIC_ACTIONS_HIDE_WHEN_SCRUBBING = List.of(
+ R.id.actionPrev,
+ R.id.actionNext
+ );
+
// Buttons to show in small player when using semantic actions
private static final List<Integer> SEMANTIC_ACTIONS_ALL = List.of(
R.id.actionPlayPause,
@@ -120,6 +128,7 @@ public class MediaControlPanel {
private final SeekBarViewModel mSeekBarViewModel;
private SeekBarObserver mSeekBarObserver;
protected final Executor mBackgroundExecutor;
+ private final Executor mMainExecutor;
private final ActivityStarter mActivityStarter;
private final BroadcastSender mBroadcastSender;
@@ -127,6 +136,7 @@ public class MediaControlPanel {
private MediaViewHolder mMediaViewHolder;
private RecommendationViewHolder mRecommendationViewHolder;
private String mKey;
+ private MediaData mMediaData;
private MediaViewController mMediaViewController;
private MediaSession.Token mToken;
private MediaController mController;
@@ -147,14 +157,23 @@ public class MediaControlPanel {
protected int mSmartspaceId = -1;
private String mPackageName;
+ private boolean mIsScrubbing = false;
+
+ private final SeekBarViewModel.ScrubbingChangeListener mScrubbingChangeListener =
+ this::setIsScrubbing;
+
/**
* Initialize a new control panel
*
* @param backgroundExecutor background executor, used for processing artwork
+ * @param mainExecutor main thread executor, used if we receive callbacks on the background
+ * thread that then trigger UI changes.
* @param activityStarter activity starter
*/
@Inject
- public MediaControlPanel(Context context, @Background Executor backgroundExecutor,
+ public MediaControlPanel(Context context,
+ @Background Executor backgroundExecutor,
+ @Main Executor mainExecutor,
ActivityStarter activityStarter, BroadcastSender broadcastSender,
MediaViewController mediaViewController, SeekBarViewModel seekBarViewModel,
Lazy<MediaDataManager> lazyMediaDataManager,
@@ -163,6 +182,7 @@ public class MediaControlPanel {
FalsingManager falsingManager, SystemClock systemClock, MediaUiEventLogger logger) {
mContext = context;
mBackgroundExecutor = backgroundExecutor;
+ mMainExecutor = mainExecutor;
mActivityStarter = activityStarter;
mBroadcastSender = broadcastSender;
mSeekBarViewModel = seekBarViewModel;
@@ -186,6 +206,7 @@ public class MediaControlPanel {
public void onDestroy() {
if (mSeekBarObserver != null) {
mSeekBarViewModel.getProgress().removeObserver(mSeekBarObserver);
+ mSeekBarViewModel.removeScrubbingChangeListener(mScrubbingChangeListener);
}
mSeekBarViewModel.onDestroy();
mMediaViewController.onDestroy();
@@ -232,6 +253,19 @@ public class MediaControlPanel {
mSeekBarViewModel.setListening(listening);
}
+ /** Sets whether the user is touching the seek bar to change the track position. */
+ public void setIsScrubbing(boolean isScrubbing) {
+ if (mMediaData == null || mMediaData.getSemanticActions() == null) {
+ return;
+ }
+ if (isScrubbing == this.mIsScrubbing) {
+ return;
+ }
+ this.mIsScrubbing = isScrubbing;
+ mMainExecutor.execute(() ->
+ updateDisplayForScrubbingChange(mMediaData.getSemanticActions()));
+ }
+
/**
* Get the context
*
@@ -249,6 +283,7 @@ public class MediaControlPanel {
mSeekBarObserver = new SeekBarObserver(vh);
mSeekBarViewModel.getProgress().observeForever(mSeekBarObserver);
mSeekBarViewModel.attachTouchHandlers(vh.getSeekBar());
+ mSeekBarViewModel.setScrubbingChangeListener(mScrubbingChangeListener);
mMediaViewController.attach(player, MediaViewController.TYPE.PLAYER);
vh.getPlayer().setOnLongClickListener(v -> {
@@ -307,6 +342,7 @@ public class MediaControlPanel {
return;
}
mKey = key;
+ mMediaData = data;
MediaSession.Token token = data.getToken();
mPackageName = data.getPackageName();
mUid = data.getAppUid();
@@ -361,6 +397,7 @@ public class MediaControlPanel {
bindOutputSwitcherChip(data);
bindLongPressMenu(data);
bindActionButtons(data);
+ bindScrubbingTime(data);
bindArtworkAndColors(data);
// TODO: We don't need to refresh this state constantly, only if the state actually changed
@@ -544,6 +581,8 @@ public class MediaControlPanel {
seekbar.getThumb().setTintList(textColorList);
seekbar.setProgressTintList(textColorList);
seekbar.setProgressBackgroundTintList(ColorStateList.valueOf(textTertiary));
+ mMediaViewHolder.getScrubbingElapsedTimeView().setTextColor(textColorList);
+ mMediaViewHolder.getScrubbingTotalTimeView().setTextColor(textColorList);
// Action buttons
mMediaViewHolder.getActionPlayPause().setBackgroundTintList(accentColorList);
@@ -589,10 +628,9 @@ public class MediaControlPanel {
}
for (int id : SEMANTIC_ACTIONS_ALL) {
- boolean showInCompact = SEMANTIC_ACTIONS_COMPACT.contains(id);
ImageButton button = mMediaViewHolder.getAction(id);
MediaAction action = semanticActions.getActionById(id);
- setSemanticButton(button, action, collapsedSet, expandedSet, showInCompact);
+ setSemanticButton(button, action);
}
} else {
// Hide buttons that only appear for semantic actions
@@ -607,12 +645,21 @@ public class MediaControlPanel {
int i = 0;
for (; i < actions.size(); i++) {
boolean showInCompact = actionsWhenCollapsed.contains(i);
- setSemanticButton(genericButtons[i], actions.get(i), collapsedSet,
- expandedSet, showInCompact);
+ setGenericButton(
+ genericButtons[i],
+ actions.get(i),
+ collapsedSet,
+ expandedSet,
+ showInCompact);
}
for (; i < 5; i++) {
// Hide any unused buttons
- setSemanticButton(genericButtons[i], null, collapsedSet, expandedSet, false);
+ setGenericButton(
+ genericButtons[i],
+ /* mediaAction= */ null,
+ collapsedSet,
+ expandedSet,
+ /* showInCompact= */ false);
}
}
expandedSet.setVisibility(R.id.media_progress_bar, getSeekBarVisibility());
@@ -640,8 +687,19 @@ public class MediaControlPanel {
return false;
}
- private void setSemanticButton(final ImageButton button, MediaAction mediaAction,
- ConstraintSet collapsedSet, ConstraintSet expandedSet, boolean showInCompact) {
+ private void setGenericButton(
+ final ImageButton button,
+ @Nullable MediaAction mediaAction,
+ ConstraintSet collapsedSet,
+ ConstraintSet expandedSet,
+ boolean showInCompact) {
+ bindButtonCommon(button, mediaAction);
+ boolean visible = mediaAction != null;
+ setVisibleAndAlpha(expandedSet, button.getId(), visible);
+ setVisibleAndAlpha(collapsedSet, button.getId(), visible && showInCompact);
+ }
+
+ private void setSemanticButton(final ImageButton button, @Nullable MediaAction mediaAction) {
AnimationBindHandler animHandler;
if (button.getTag() == null) {
animHandler = new AnimationBindHandler();
@@ -651,59 +709,105 @@ public class MediaControlPanel {
}
animHandler.tryExecute(() -> {
- bindSemanticButton(animHandler, button, mediaAction,
- collapsedSet, expandedSet, showInCompact);
+ bindButtonWithAnimations(button, mediaAction, animHandler);
+ setSemanticButtonVisibleAndAlpha(button.getId(), mediaAction);
});
}
- private void bindSemanticButton(final AnimationBindHandler animHandler,
- final ImageButton button, MediaAction mediaAction, ConstraintSet collapsedSet,
- ConstraintSet expandedSet, boolean showInCompact) {
-
+ private void bindButtonWithAnimations(
+ final ImageButton button,
+ @Nullable MediaAction mediaAction,
+ @NonNull AnimationBindHandler animHandler) {
if (mediaAction != null) {
if (animHandler.updateRebindId(mediaAction.getRebindId())) {
animHandler.unregisterAll();
+ animHandler.tryRegister(mediaAction.getIcon());
+ animHandler.tryRegister(mediaAction.getBackground());
+ bindButtonCommon(button, mediaAction);
+ }
+ } else {
+ animHandler.unregisterAll();
+ clearButton(button);
+ }
+ }
- final Drawable icon = mediaAction.getIcon();
- button.setImageDrawable(icon);
- button.setContentDescription(mediaAction.getContentDescription());
- final Drawable bgDrawable = mediaAction.getBackground();
- button.setBackground(bgDrawable);
-
- animHandler.tryRegister(icon);
- animHandler.tryRegister(bgDrawable);
-
- Runnable action = mediaAction.getAction();
- if (action == null) {
- button.setEnabled(false);
- } else {
- button.setEnabled(true);
- button.setOnClickListener(v -> {
- if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
- mLogger.logTapAction(button.getId(), mUid, mPackageName, mInstanceId);
- logSmartspaceCardReported(SMARTSPACE_CARD_CLICK_EVENT);
- action.run();
-
- if (icon instanceof Animatable) {
- ((Animatable) icon).start();
- }
- if (bgDrawable instanceof Animatable) {
- ((Animatable) bgDrawable).start();
- }
+ private void bindButtonCommon(final ImageButton button, @Nullable MediaAction mediaAction) {
+ if (mediaAction != null) {
+ final Drawable icon = mediaAction.getIcon();
+ button.setImageDrawable(icon);
+ button.setContentDescription(mediaAction.getContentDescription());
+ final Drawable bgDrawable = mediaAction.getBackground();
+ button.setBackground(bgDrawable);
+
+ Runnable action = mediaAction.getAction();
+ if (action == null) {
+ button.setEnabled(false);
+ } else {
+ button.setEnabled(true);
+ button.setOnClickListener(v -> {
+ if (!mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
+ mLogger.logTapAction(button.getId(), mUid, mPackageName, mInstanceId);
+ logSmartspaceCardReported(SMARTSPACE_CARD_CLICK_EVENT);
+ action.run();
+
+ if (icon instanceof Animatable) {
+ ((Animatable) icon).start();
}
- });
- }
+ if (bgDrawable instanceof Animatable) {
+ ((Animatable) bgDrawable).start();
+ }
+ }
+ });
}
} else {
- animHandler.unregisterAll();
- button.setImageDrawable(null);
- button.setContentDescription(null);
- button.setEnabled(false);
- button.setBackground(null);
+ clearButton(button);
}
+ }
+
+ private void clearButton(final ImageButton button) {
+ button.setImageDrawable(null);
+ button.setContentDescription(null);
+ button.setEnabled(false);
+ button.setBackground(null);
+ }
- setVisibleAndAlpha(collapsedSet, button.getId(), mediaAction != null && showInCompact);
- setVisibleAndAlpha(expandedSet, button.getId(), mediaAction != null);
+ private void setSemanticButtonVisibleAndAlpha(
+ int buttonId,
+ MediaAction mediaAction) {
+ ConstraintSet collapsedSet = mMediaViewController.getCollapsedLayout();
+ ConstraintSet expandedSet = mMediaViewController.getExpandedLayout();
+ boolean showInCompact = SEMANTIC_ACTIONS_COMPACT.contains(buttonId);
+ boolean hideWhenScrubbing = SEMANTIC_ACTIONS_HIDE_WHEN_SCRUBBING.contains(buttonId);
+ boolean shouldBeHiddenDueToScrubbing = hideWhenScrubbing && mIsScrubbing;
+ boolean visible = mediaAction != null && !shouldBeHiddenDueToScrubbing;
+
+ setVisibleAndAlpha(expandedSet, buttonId, visible);
+ setVisibleAndAlpha(collapsedSet, buttonId, visible && showInCompact);
+ }
+
+ /** Updates all the views that might change due to a scrubbing state change. */
+ // TODO(b/209656742): Handle scenarios where actionPrev and/or actionNext aren't active.
+ private void updateDisplayForScrubbingChange(@NonNull MediaButton semanticActions) {
+ // Update visibilities of the scrubbing time views and the scrubbing-dependent buttons.
+ bindScrubbingTime(mMediaData);
+ SEMANTIC_ACTIONS_HIDE_WHEN_SCRUBBING.forEach((id) ->
+ setSemanticButtonVisibleAndAlpha(id, semanticActions.getActionById(id)));
+ // Trigger a state refresh so that we immediately update visibilities.
+ mMediaViewController.refreshState();
+ }
+
+ private void bindScrubbingTime(MediaData data) {
+ ConstraintSet expandedSet = mMediaViewController.getExpandedLayout();
+ ConstraintSet collapsedSet = mMediaViewController.getCollapsedLayout();
+ int elapsedTimeId = mMediaViewHolder.getScrubbingElapsedTimeView().getId();
+ int totalTimeId = mMediaViewHolder.getScrubbingTotalTimeView().getId();
+
+ boolean visible = data.getSemanticActions() != null && mIsScrubbing;
+ setVisibleAndAlpha(expandedSet, elapsedTimeId, visible);
+ setVisibleAndAlpha(expandedSet, totalTimeId, visible);
+ // Never show in collapsed
+ setVisibleAndAlpha(collapsedSet, elapsedTimeId, false);
+ setVisibleAndAlpha(collapsedSet, totalTimeId, false);
}
// AnimationBindHandler is responsible for tracking the bound animation state and preventing
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
index 57c93bae3bbf..ad93855f3345 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
@@ -65,7 +65,6 @@ import com.android.systemui.util.Assert
import com.android.systemui.util.Utils
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.IOException
import java.io.PrintWriter
import java.util.concurrent.Executor
@@ -1218,7 +1217,7 @@ class MediaDataManager(
return null
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.apply {
println("internalListeners: $internalListeners")
println("externalListeners: ${mediaDataFilter.listeners}")
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
index d6231911244f..f85078c24603 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
@@ -30,7 +30,6 @@ import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManager
import com.android.systemui.media.muteawait.MediaMuteAwaitConnectionManagerFactory
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -116,13 +115,13 @@ class MediaDeviceManager @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ override fun dump(pw: PrintWriter, args: Array<String>) {
with(pw) {
println("MediaDeviceManager state:")
entries.forEach {
key, entry ->
println(" key=$key")
- entry.dump(fd, pw, args)
+ entry.dump(pw, args)
}
}
}
@@ -186,7 +185,7 @@ class MediaDeviceManager @Inject constructor(
muteAwaitConnectionManager?.stopListening()
}
- fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ fun dump(pw: PrintWriter, args: Array<String>) {
val routingSession = controller?.let {
mr2manager.getRoutingSessionForMediaController(it)
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt b/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt
index 61d0b41e9bb6..7f25642be5ee 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt
@@ -36,7 +36,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.tuner.TunerService
import com.android.systemui.util.Utils
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.ConcurrentLinkedQueue
import java.util.concurrent.Executor
@@ -293,7 +292,7 @@ class MediaResumeListener @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.apply {
println("resumeComponents: $resumeComponents")
}
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaViewHolder.kt b/packages/SystemUI/src/com/android/systemui/media/MediaViewHolder.kt
index e9c88861eeae..34a77f26122c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaViewHolder.kt
@@ -50,8 +50,11 @@ class MediaViewHolder constructor(itemView: View) {
// Seekbar views
val seekBar = itemView.requireViewById<SeekBar>(R.id.media_progress_bar)
- open val elapsedTimeView: TextView? = null
- open val totalTimeView: TextView? = null
+ // These views are only shown while the user is actively scrubbing
+ val scrubbingElapsedTimeView: TextView =
+ itemView.requireViewById(R.id.media_scrubbing_elapsed_time)
+ val scrubbingTotalTimeView: TextView =
+ itemView.requireViewById(R.id.media_scrubbing_total_time)
// Settings screen
val longPressText = itemView.requireViewById<TextView>(R.id.remove_text)
@@ -165,7 +168,9 @@ class MediaViewHolder constructor(itemView: View) {
R.id.action2,
R.id.action3,
R.id.action4,
- R.id.icon
+ R.id.icon,
+ R.id.media_scrubbing_elapsed_time,
+ R.id.media_scrubbing_total_time
)
val gutsIds = setOf(
R.id.remove_text,
diff --git a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
index 4e35d16457e8..75fa2f181d7c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
@@ -40,7 +40,6 @@ import android.util.Log;
import com.android.systemui.CoreStartable;
import com.android.systemui.dagger.SysUISingleton;
-import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
@@ -248,7 +247,7 @@ public class RingtonePlayer extends CoreStartable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("Clients:");
synchronized (mClients) {
for (Client client : mClients.values()) {
diff --git a/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt b/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt
index b76f6bb305fe..612a7f92fc33 100644
--- a/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/SeekBarObserver.kt
@@ -70,9 +70,9 @@ class SeekBarObserver(
progressDrawable?.animate = false
holder.seekBar.thumb.alpha = 0
holder.seekBar.progress = 0
- holder.elapsedTimeView?.text = ""
- holder.totalTimeView?.text = ""
holder.seekBar.contentDescription = ""
+ holder.scrubbingElapsedTimeView.text = ""
+ holder.scrubbingTotalTimeView.text = ""
return
}
@@ -88,13 +88,13 @@ class SeekBarObserver(
holder.seekBar.setMax(data.duration)
val totalTimeString = DateUtils.formatElapsedTime(
data.duration / DateUtils.SECOND_IN_MILLIS)
- holder.totalTimeView?.setText(totalTimeString)
+ holder.scrubbingTotalTimeView.text = totalTimeString
data.elapsedTime?.let {
holder.seekBar.setProgress(it)
val elapsedTimeString = DateUtils.formatElapsedTime(
it / DateUtils.SECOND_IN_MILLIS)
- holder.elapsedTimeView?.setText(elapsedTimeString)
+ holder.scrubbingElapsedTimeView.text = elapsedTimeString
holder.seekBar.contentDescription = holder.seekBar.context.getString(
R.string.controls_media_seekbar_description,
diff --git a/packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt
index 8c1845ac1ae0..5218492ec4bf 100644
--- a/packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt
@@ -121,12 +121,15 @@ class SeekBarViewModel @Inject constructor(
}
}
+ private var scrubbingChangeListener: ScrubbingChangeListener? = null
+
/** Set to true when the user is touching the seek bar to change the position. */
private var scrubbing = false
set(value) {
if (field != value) {
field = value
checkIfPollingNeeded()
+ scrubbingChangeListener?.onScrubbingChanged(value)
_data = _data.copy(scrubbing = value)
}
}
@@ -228,6 +231,7 @@ class SeekBarViewModel @Inject constructor(
playbackState = null
cancel?.run()
cancel = null
+ scrubbingChangeListener = null
}
@WorkerThread
@@ -265,6 +269,21 @@ class SeekBarViewModel @Inject constructor(
bar.setOnTouchListener(SeekBarTouchListener(this, bar))
}
+ fun setScrubbingChangeListener(listener: ScrubbingChangeListener) {
+ scrubbingChangeListener = listener
+ }
+
+ fun removeScrubbingChangeListener(listener: ScrubbingChangeListener) {
+ if (listener == scrubbingChangeListener) {
+ scrubbingChangeListener = null
+ }
+ }
+
+ /** Listener interface to be notified when the user starts or stops scrubbing. */
+ interface ScrubbingChangeListener {
+ fun onScrubbingChanged(scrubbing: Boolean)
+ }
+
private class SeekBarChangeListener(
val viewModel: SeekBarViewModel
) : SeekBar.OnSeekBarChangeListener {
diff --git a/packages/SystemUI/src/com/android/systemui/model/SysUiState.java b/packages/SystemUI/src/com/android/systemui/model/SysUiState.java
index 5dce09386c7d..3ecf15471c31 100644
--- a/packages/SystemUI/src/com/android/systemui/model/SysUiState.java
+++ b/packages/SystemUI/src/com/android/systemui/model/SysUiState.java
@@ -25,7 +25,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.QuickStepContract;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -106,7 +105,7 @@ public class SysUiState implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("SysUiState state:");
pw.print(" mSysUiStateFlags="); pw.println(mFlags);
pw.println(" " + QuickStepContract.getSystemUiStateString(mFlags));
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java
index df820a722e28..779292c43340 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavBarHelper.java
@@ -52,7 +52,6 @@ import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.statusbar.phone.CentralSurfaces;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -327,7 +326,7 @@ public final class NavBarHelper implements
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("NavbarTaskbarFriendster");
pw.println(" longPressHomeEnabled=" + mLongPressHomeEnabled);
pw.println(" mAssistantTouchGestureEnabled=" + mAssistantTouchGestureEnabled);
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
index 20d811932363..15182c1100ec 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
@@ -64,7 +64,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.wm.shell.back.BackAnimation;
import com.android.wm.shell.pip.Pip;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Optional;
@@ -443,7 +442,7 @@ public class NavigationBarController implements
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
for (int i = 0; i < mNavigationBars.size(); i++) {
if (i > 0) {
pw.println();
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java
index 6920ffb7b2e8..63276fee811b 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java
@@ -41,7 +41,6 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.concurrent.Executor;
@@ -191,7 +190,7 @@ public class NavigationModeController implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("NavigationModeController:");
pw.println(" mode=" + getCurrentInteractionMode(mCurrentUserContext));
String defaultOverlays = "";
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
index be147b9fd585..35aea5c5d636 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java
@@ -73,7 +73,6 @@ import com.android.systemui.statusbar.phone.LightBarTransitionsController;
import com.android.wm.shell.back.BackAnimation;
import com.android.wm.shell.pip.Pip;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Optional;
import java.util.function.Consumer;
@@ -487,7 +486,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("TaskbarDelegate (displayId=" + mDisplayId + "):");
pw.println(" mNavigationIconHints=" + mNavigationIconHints);
pw.println(" mNavigationMode=" + mNavigationMode);
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
index 61b434d6a28f..623bb12be5b0 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
@@ -49,7 +49,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.CentralSurfaces;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Optional;
@@ -613,7 +612,7 @@ public class PowerUI extends CoreStartable implements CommandQueue.Callbacks {
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print("mLowBatteryAlertCloseLevel=");
pw.println(mLowBatteryAlertCloseLevel);
pw.print("mLowBatteryReminderLevels=");
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
index e072b4a3646c..dbdb9d268aab 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
@@ -37,7 +37,6 @@ import com.android.systemui.settings.UserTracker
import com.android.systemui.util.DeviceConfigProxy
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.lang.ref.WeakReference
import java.util.concurrent.Executor
@@ -348,7 +347,7 @@ class PrivacyItemController @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("PrivacyItemController state:")
pw.println(" Listening: $listening")
pw.println(" Current user ids: $currentUserIds")
diff --git a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.kt b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.kt
index 7ffa9d931ff0..b48ea23dbf27 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.kt
@@ -38,7 +38,6 @@ import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.util.UserAwareController
import com.android.systemui.util.settings.SecureSettings
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -249,7 +248,7 @@ class AutoAddTracker @VisibleForTesting constructor(
return current?.split(",") ?: emptySet()
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("Current user: $userId")
pw.println("Added tiles: $autoAdded")
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt b/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt
index 2ffbf5418583..e63912870a7a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/FgsManagerController.kt
@@ -55,7 +55,6 @@ import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.util.DeviceConfigProxy
import com.android.systemui.util.indentIfPossible
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.Objects
import java.util.concurrent.Executor
@@ -520,7 +519,7 @@ class FgsManagerController @Inject constructor(
NORMAL, HIDE_BUTTON, HIDE_ENTRY
}
- override fun dump(fd: FileDescriptor, printwriter: PrintWriter, args: Array<out String>) {
+ override fun dump(printwriter: PrintWriter, args: Array<out String>) {
val pw = IndentingPrintWriter(printwriter)
synchronized(lock) {
pw.println("changesSinceDialog=$changesSinceDialog")
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index 66584414e291..7d3df6ef6b07 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -30,7 +30,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.qs.customize.QSCustomizer;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -273,7 +272,7 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(getClass().getSimpleName() + " updateClippingPath: top("
+ mFancyClippingTop + ") bottom(" + mFancyClippingBottom + ") mClippingEnabled("
+ mClippingEnabled + ")");
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
index 4fa05c833f53..f87f81e40e2c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
@@ -59,7 +59,6 @@ import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.util.LifecycleFragment;
import com.android.systemui.util.Utils;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.function.Consumer;
@@ -825,7 +824,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
IndentingPrintWriter indentingPw = new IndentingPrintWriter(pw, /* singleIndent= */ " ");
indentingPw.println("QSFragment:");
indentingPw.increaseIndent();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
index 9c8fc4761f98..93f245b9698a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
@@ -41,7 +41,6 @@ import com.android.systemui.util.LargeScreenUtils;
import com.android.systemui.util.ViewController;
import com.android.systemui.util.animation.DisappearParameters;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
@@ -387,12 +386,12 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(getClass().getSimpleName() + ":");
pw.println(" Tile records:");
for (QSPanelControllerBase.TileRecord record : mRecords) {
if (record.tile instanceof Dumpable) {
- pw.print(" "); ((Dumpable) record.tile).dump(fd, pw, args);
+ pw.print(" "); ((Dumpable) record.tile).dump(pw, args);
pw.print(" "); pw.println(record.tileView.toString());
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
index 47af7de9118d..fbdabc74aba4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
@@ -60,7 +60,6 @@ import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.util.leak.GarbageMonitor;
import com.android.systemui.util.settings.SecureSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -564,9 +563,9 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("QSTileHost:");
mTiles.values().stream().filter(obj -> obj instanceof Dumpable)
- .forEach(o -> ((Dumpable) o).dump(fd, pw, args));
+ .forEach(o -> ((Dumpable) o).dump(pw, args));
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java
index 8755bc90c0a8..a47bd5c738c6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java
@@ -69,7 +69,6 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SideLabelTileLayout;
import com.android.systemui.qs.logging.QSLogger;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -735,7 +734,7 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy
* This may be used for CTS testing of tiles.
*/
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(this.getClass().getSimpleName() + ":");
pw.print(" "); pw.println(getState().toString());
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
index cd7021eb20aa..e040ad08513f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java
@@ -61,7 +61,6 @@ import com.android.systemui.statusbar.connectivity.SignalCallback;
import com.android.systemui.statusbar.connectivity.WifiIcons;
import com.android.systemui.statusbar.connectivity.WifiIndicators;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -592,7 +591,7 @@ public class InternetTile extends QSTileImpl<SignalState> {
* Dumps the state of this tile along with its name.
*/
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(this.getClass().getSimpleName() + ":");
pw.print(" "); pw.println(getState().toString());
pw.print(" "); pw.println("mLastTileState=" + mLastTileState);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
index 5ed9ab9c4f65..772e9faf6feb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
@@ -25,6 +25,7 @@ import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
+import android.os.UserHandle;
import android.service.quickaccesswallet.GetWalletCardsError;
import android.service.quickaccesswallet.GetWalletCardsResponse;
import android.service.quickaccesswallet.QuickAccessWalletClient;
@@ -182,7 +183,8 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> {
public boolean isAvailable() {
return mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)
&& !mPackageManager.hasSystemFeature(FEATURE_CHROME_OS)
- && mSecureSettings.getString(NFC_PAYMENT_DEFAULT_COMPONENT) != null;
+ && mSecureSettings.getStringForUser(NFC_PAYMENT_DEFAULT_COMPONENT,
+ UserHandle.USER_CURRENT) != null;
}
@Nullable
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
index cfb32d3c8a45..c723fbb9a6e1 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
@@ -114,7 +114,6 @@ import com.android.wm.shell.splitscreen.SplitScreen;
import com.android.wm.shell.startingsurface.StartingSurface;
import com.android.wm.shell.transition.ShellTransitions;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -1015,7 +1014,7 @@ public class OverviewProxyService extends CurrentUserTracker implements
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(TAG_OPS + " state:");
pw.print(" isConnected="); pw.println(mOverviewProxy != null);
pw.print(" mIsEnabled="); pw.println(isEnabled());
@@ -1032,7 +1031,7 @@ public class OverviewProxyService extends CurrentUserTracker implements
pw.print(" mNavBarButtonAlpha="); pw.println(mNavBarButtonAlpha);
pw.print(" mActiveNavBarRegion="); pw.println(mActiveNavBarRegion);
pw.print(" mNavBarMode="); pw.println(mNavBarMode);
- mSysUiState.dump(fd, pw, args);
+ mSysUiState.dump(pw, args);
}
public interface OverviewProxyListener {
diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
index b7a44a43f4b7..9b3b843c9848 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
@@ -24,7 +24,6 @@ import android.provider.Settings;
import com.android.systemui.CoreStartable;
import com.android.systemui.statusbar.CommandQueue;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -129,7 +128,7 @@ public class Recents extends CoreStartable implements CommandQueue.Callbacks {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
mImpl.dump(pw);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
index 049685f3dda4..3a6248b793d0 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt
@@ -31,7 +31,6 @@ import androidx.annotation.WorkerThread
import com.android.systemui.Dumpable
import com.android.systemui.dump.DumpManager
import com.android.systemui.util.Assert
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.lang.IllegalStateException
import java.lang.ref.WeakReference
@@ -199,7 +198,7 @@ class UserTrackerImpl internal constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("Initialized: $initialized")
if (initialized) {
pw.println("userId: $userId")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/AbstractLockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/AbstractLockscreenShadeTransitionController.kt
index 189f38422dcb..5b24af038b6b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/AbstractLockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/AbstractLockscreenShadeTransitionController.kt
@@ -7,7 +7,6 @@ import com.android.systemui.Dumpable
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.LargeScreenUtils
-import java.io.FileDescriptor
import java.io.PrintWriter
/** An abstract implementation of a class that controls the lockscreen to shade transition. */
@@ -53,7 +52,7 @@ abstract class AbstractLockscreenShadeTransitionController(
protected abstract fun onDragDownAmountChanged(dragDownAmount: Float)
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
dump(IndentingPrintWriter(pw, /* singleIndent= */ " "))
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt b/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
index cf2328f5af97..fbb51aef06f0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
@@ -16,14 +16,13 @@
package com.android.systemui.statusbar
-import android.view.CrossWindowBlurListeners.CROSS_WINDOW_BLUR_SUPPORTED
-
import android.app.ActivityManager
import android.content.res.Resources
import android.os.SystemProperties
import android.util.IndentingPrintWriter
import android.util.MathUtils
import android.view.CrossWindowBlurListeners
+import android.view.CrossWindowBlurListeners.CROSS_WINDOW_BLUR_SUPPORTED
import android.view.SurfaceControl
import android.view.ViewRootImpl
import androidx.annotation.VisibleForTesting
@@ -32,7 +31,6 @@ import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -116,7 +114,7 @@ open class BlurUtils @Inject constructor(
!SystemProperties.getBoolean("persist.sysui.disableBlur", false)
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
IndentingPrintWriter(pw, " ").let {
it.println("BlurUtils:")
it.increaseIndent()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/GestureRecorder.java b/packages/SystemUI/src/com/android/systemui/statusbar/GestureRecorder.java
index f2adaf042b2f..a49af47f4803 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/GestureRecorder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/GestureRecorder.java
@@ -23,7 +23,6 @@ import android.util.Log;
import android.view.MotionEvent;
import java.io.BufferedWriter;
-import java.io.FileDescriptor;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
@@ -246,7 +245,7 @@ public class GestureRecorder {
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
save();
if (mLastSaveLen >= 0) {
pw.println(String.valueOf(mLastSaveLen) + " gestures written to " + mLogfile);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index b07a898e356b..61f49e044b99 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -90,7 +90,6 @@ import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.wakelock.SettableWakeLock;
import com.android.systemui.util.wakelock.WakeLock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.text.NumberFormat;
@@ -919,7 +918,7 @@ public class KeyguardIndicationController {
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardIndicationController:");
pw.println(" mInitialTextColorState: " + mInitialTextColorState);
pw.println(" mPowerPluggedInWired: " + mPowerPluggedInWired);
@@ -937,7 +936,7 @@ public class KeyguardIndicationController {
mTopIndicationView == null ? null : mTopIndicationView.getText()));
pw.println(" computePowerIndication(): " + computePowerIndication());
pw.println(" trustGrantedIndication: " + getTrustGrantedIndication());
- mRotateTextViewController.dump(fd, pw, args);
+ mRotateTextViewController.dump(pw, args);
}
protected class BaseKeyguardCallback extends KeyguardUpdateMonitorCallback {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
index b7d82c3e8f89..f15df8ec2816 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -40,7 +40,6 @@ import com.android.systemui.statusbar.phone.LSShadeTransitionLogger
import com.android.systemui.statusbar.phone.NotificationPanelViewController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.LargeScreenUtils
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -696,7 +695,7 @@ class LockscreenShadeTransitionController @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
IndentingPrintWriter(pw, " ").let {
it.println("LSShadeTransitionController:")
it.increaseIndent()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index 27586b4f5caa..56e09f03aa6b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -62,7 +62,6 @@ import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.settings.SecureSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -691,7 +690,7 @@ public class NotificationLockscreenUserManagerImpl implements
// }
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("NotificationLockscreenUserManager state:");
pw.print(" mCurrentUserId=");
pw.println(mCurrentUserId);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java
index 1df40915a52c..241a745b92e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java
@@ -75,7 +75,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.Utils;
import com.android.systemui.util.concurrency.DelayableExecutor;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -526,7 +525,7 @@ public class NotificationMediaManager implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.print(" mMediaNotificationKey=");
pw.println(mMediaNotificationKey);
pw.print(" mMediaController=");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
index 66c1d87fb812..d71dec8ff396 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
@@ -69,7 +69,6 @@ import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.statusbar.policy.RemoteInputView;
import com.android.systemui.util.DumpUtilsKt;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -654,7 +653,7 @@ public class NotificationRemoteInputManager implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pwOriginal, String[] args) {
+ public void dump(PrintWriter pwOriginal, String[] args) {
IndentingPrintWriter pw = DumpUtilsKt.asIndenting(pwOriginal);
if (mRemoteInputController != null) {
pw.println("mRemoteInputController: " + mRemoteInputController);
@@ -665,7 +664,7 @@ public class NotificationRemoteInputManager implements Dumpable {
if (mRemoteInputListener instanceof Dumpable) {
pw.println("mRemoteInputListener: " + mRemoteInputListener.getClass().getSimpleName());
pw.increaseIndent();
- ((Dumpable) mRemoteInputListener).dump(fd, pw, args);
+ ((Dumpable) mRemoteInputListener).dump(pw, args);
pw.decreaseIndent();
}
}
@@ -920,7 +919,7 @@ public class NotificationRemoteInputManager implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw,
+ public void dump(@NonNull PrintWriter pw,
@NonNull String[] args) {
pw.println("LegacyRemoteInputLifetimeExtender:");
pw.print(" mKeysKeptForRemoteInputHistory: ");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index a0388de5150c..621916434396 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -43,7 +43,6 @@ import com.android.systemui.statusbar.phone.ScrimController
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionListener
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.WallpaperController
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
import kotlin.math.max
@@ -435,7 +434,7 @@ class NotificationShadeDepthController @Inject constructor(
!keyguardStateController.isKeyguardFadingAway
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
IndentingPrintWriter(pw, " ").let {
it.println("StatusBarWindowBlurController:")
it.increaseIndent()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
index f0e01a33fc99..6302ef11cfe7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
@@ -46,7 +46,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.policy.ConfigurationController
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
import kotlin.math.max
@@ -333,7 +332,7 @@ constructor(
mPulsing = pulsing
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
IndentingPrintWriter(pw, " ").let {
it.println("PulseExpansionHandler:")
it.increaseIndent()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SmartReplyController.java b/packages/SystemUI/src/com/android/systemui/statusbar/SmartReplyController.java
index 058edda20971..d640874524ba 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SmartReplyController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SmartReplyController.java
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.dagger.CentralSurfacesModule;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Set;
@@ -116,7 +115,7 @@ public class SmartReplyController implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("mSendingKeys: " + mSendingKeys.size());
for (String key : mSendingKeys) {
pw.println(" * " + key);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
index e026c1973197..333815f6b11a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
@@ -56,7 +56,6 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController.StateList
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.policy.CallbackController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
@@ -533,7 +532,7 @@ public class StatusBarStateControllerImpl implements
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("StatusBarStateController: ");
pw.println(" mState=" + mState + " (" + describe(mState) + ")");
pw.println(" mLastState=" + mLastState + " (" + describe(mLastState) + ")");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java
index 4c11307543e5..dea429f6c617 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/NetworkControllerImpl.java
@@ -85,7 +85,6 @@ import com.android.systemui.statusbar.policy.EncryptionHelper;
import com.android.systemui.telephony.TelephonyListenerManager;
import com.android.systemui.util.CarrierConfigTracker;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -1145,7 +1144,7 @@ public class NetworkControllerImpl extends BroadcastReceiver
}
/** */
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("NetworkController state:");
pw.println(" mUserSetup=" + mUserSetup);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
index 36233e4e3eab..1e7fc93cb9fa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt
@@ -25,7 +25,6 @@ import android.provider.DeviceConfig
import android.util.Log
import android.view.animation.PathInterpolator
import com.android.systemui.Dumpable
-
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
@@ -34,10 +33,7 @@ import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.util.Assert
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.PrintWriter
-import java.lang.IllegalStateException
-
import javax.inject.Inject
/**
@@ -299,7 +295,7 @@ class SystemStatusAnimationScheduler @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("Scheduled event: $scheduledEvent")
pw.println("Has persistent privacy dot: $hasPersistentDot")
pw.println("Animation state: $animationState")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index ac5beece880e..c86bf93628dd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -65,7 +65,6 @@ import com.android.systemui.util.Assert;
import com.android.systemui.util.Compile;
import com.android.systemui.util.leak.LeakDetector;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
@@ -183,7 +182,7 @@ public class NotificationEntryManager implements
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("NotificationEntryManager state:");
pw.println(" mAllNotifications=");
if (mAllNotifications.size() == 0) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
index 9be032dc1240..292b911e1f7d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
@@ -92,7 +92,6 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.Ra
import com.android.systemui.util.Assert;
import com.android.systemui.util.time.SystemClock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -811,7 +810,7 @@ public class NotifCollection implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, PrintWriter pw, @NonNull String[] args) {
+ public void dump(PrintWriter pw, @NonNull String[] args) {
final List<NotificationEntry> entries = new ArrayList<>(getAllNotifs());
pw.println("\t" + TAG + " unsorted/unfiltered notifications:");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
index 477db3fb2e3a..1155fe214426 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
@@ -35,6 +35,7 @@ import static java.util.Objects.requireNonNull;
import android.annotation.MainThread;
import android.annotation.Nullable;
import android.os.Trace;
+import android.service.notification.StatusBarNotification;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -66,7 +67,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationPriorityBuc
import com.android.systemui.util.Assert;
import com.android.systemui.util.time.SystemClock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
@@ -704,13 +704,17 @@ public class ShadeListBuilder implements Dumpable {
// having its summary promoted, regardless of how many children it has
Set<String> groupsWithChildrenLostToStability =
getGroupsWithChildrenLostToStability(shadeList);
- // Like groups which lost a child to stability, any group which lost a child to promotion
- // is exempt from having its summary promoted when it has no attached children.
- Set<String> groupsWithChildrenLostToPromotionOrStability =
- getGroupsWithChildrenLostToPromotion(shadeList);
- groupsWithChildrenLostToPromotionOrStability.addAll(groupsWithChildrenLostToStability);
-
- for (int i = 0; i < shadeList.size(); i++) {
+ // Groups with children lost to stability are exempt from summary promotion.
+ ArraySet<String> groupsExemptFromSummaryPromotion =
+ new ArraySet<>(groupsWithChildrenLostToStability);
+ // Any group which lost a child to filtering or promotion is exempt from having its summary
+ // promoted when it has no attached children.
+ getGroupsWithChildrenLostToFiltering(groupsExemptFromSummaryPromotion);
+ getGroupsWithChildrenLostToPromotion(shadeList, groupsExemptFromSummaryPromotion);
+
+ // Iterate backwards, so that we can remove elements without affecting indices of
+ // yet-to-be-accessed entries.
+ for (int i = shadeList.size() - 1; i >= 0; i--) {
final ListEntry tle = shadeList.get(i);
if (tle instanceof GroupEntry) {
@@ -719,7 +723,7 @@ public class ShadeListBuilder implements Dumpable {
final boolean hasSummary = group.getSummary() != null;
if (hasSummary && children.size() == 0) {
- if (groupsWithChildrenLostToPromotionOrStability.contains(group.getKey())) {
+ if (groupsExemptFromSummaryPromotion.contains(group.getKey())) {
// This group lost a child on this run to promotion or stability, so it is
// exempt from having its summary promoted to the top level, so prune it.
// It has no children, so it will just vanish.
@@ -728,14 +732,10 @@ public class ShadeListBuilder implements Dumpable {
// For any other summary with no children, promote the summary.
pruneGroupAtIndexAndPromoteSummary(shadeList, group, i);
}
-
- i--; // The node we visited is gone, so be sure to visit this index again.
} else if (!hasSummary) {
// If the group doesn't provide a summary, ignore it and add
// any children it may have directly to top-level.
pruneGroupAtIndexAndPromoteAnyChildren(shadeList, group, i);
-
- i--; // The node we visited is gone, so be sure to visit this index again.
} else if (children.size() < MIN_CHILDREN_FOR_GROUP) {
// This group has a summary and insufficient, but nonzero children.
checkState(hasSummary, "group must have summary at this point");
@@ -760,8 +760,6 @@ public class ShadeListBuilder implements Dumpable {
// The group is too small, ignore it and add
// its children (if any) directly to top-level.
pruneGroupAtIndexAndPromoteAnyChildren(shadeList, group, i);
-
- i--; // The node we visited is gone, so be sure to visit this index again.
}
}
}
@@ -867,18 +865,32 @@ public class ShadeListBuilder implements Dumpable {
*
* These groups will be exempt from appearing without any children.
*/
- @NonNull
- private Set<String> getGroupsWithChildrenLostToPromotion(List<ListEntry> shadeList) {
- ArraySet<String> groupsWithChildrenLostToPromotion = new ArraySet<>();
+ private void getGroupsWithChildrenLostToPromotion(List<ListEntry> shadeList, Set<String> out) {
for (int i = 0; i < shadeList.size(); i++) {
final ListEntry tle = shadeList.get(i);
if (tle.getAttachState().getPromoter() != null) {
// This top-level-entry was part of a group, but was promoted out of it.
final String groupKey = tle.getRepresentativeEntry().getSbn().getGroupKey();
- groupsWithChildrenLostToPromotion.add(groupKey);
+ out.add(groupKey);
+ }
+ }
+ }
+
+ /**
+ * Collect the keys of any groups which have already lost a child to a {@link NotifFilter}
+ * this run.
+ *
+ * These groups will be exempt from appearing without any children.
+ */
+ private void getGroupsWithChildrenLostToFiltering(Set<String> out) {
+ for (ListEntry tle : mAllEntries) {
+ StatusBarNotification sbn = tle.getRepresentativeEntry().getSbn();
+ if (sbn.isGroup()
+ && !sbn.getNotification().isGroupSummary()
+ && tle.getAttachState().getExcludingFilter() != null) {
+ out.add(sbn.getGroup());
}
}
- return groupsWithChildrenLostToPromotion;
}
/**
@@ -1350,7 +1362,7 @@ public class ShadeListBuilder implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, PrintWriter pw, @NonNull String[] args) {
+ public void dump(PrintWriter pw, @NonNull String[] args) {
pw.println("\t" + TAG + " shade notifications:");
if (getShadeList().size() == 0) {
pw.println("\t\t None");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescer.java
index 87e531c01a5f..050b4c113231 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coalescer/GroupCoalescer.java
@@ -35,7 +35,6 @@ import com.android.systemui.statusbar.NotificationListener.NotificationHandler;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.time.SystemClock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
@@ -289,7 +288,7 @@ public class GroupCoalescer implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
long now = mClock.uptimeMillis();
int eventCount = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt
index ac00581c7c8b..9a93abd463c7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/GutsCoordinator.kt
@@ -28,7 +28,6 @@ import com.android.systemui.statusbar.notification.collection.render.NotifGutsVi
import com.android.systemui.statusbar.notification.collection.render.NotifGutsViewManager
import com.android.systemui.statusbar.notification.row.NotificationGuts
import com.android.systemui.statusbar.notification.row.NotificationGutsManager
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -63,7 +62,7 @@ class GutsCoordinator @Inject constructor(
pipeline.addNotificationLifetimeExtender(mLifetimeExtender)
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ override fun dump(pw: PrintWriter, args: Array<String>) {
pw.println(" notifsWithOpenGuts: ${notifsWithOpenGuts.size}")
for (key in notifsWithOpenGuts) {
pw.println(" * $key")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
index 985914acb2a2..3516625cc471 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.kt
@@ -21,7 +21,6 @@ import com.android.systemui.statusbar.notification.NotifPipelineFlags
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSectioner
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -130,7 +129,7 @@ class NotifCoordinatorsImpl @Inject constructor(
pipeline.setSections(mOrderedSections)
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
+ override fun dump(pw: PrintWriter, args: Array<String>) {
pw.println()
pw.println("$TAG:")
for (c in mCoordinators) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt
index 2608c30e33c5..918bf083f9fe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RemoteInputCoordinator.kt
@@ -32,11 +32,10 @@ import com.android.systemui.statusbar.SmartReplyController
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.coordinator.dagger.CoordinatorScope
-import com.android.systemui.statusbar.notification.collection.notifcollection.SelfTrackingLifetimeExtender
import com.android.systemui.statusbar.notification.collection.notifcollection.InternalNotifUpdater
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender
-import java.io.FileDescriptor
+import com.android.systemui.statusbar.notification.collection.notifcollection.SelfTrackingLifetimeExtender
import java.io.PrintWriter
import javax.inject.Inject
@@ -121,8 +120,8 @@ class RemoteInputCoordinator @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
- mRemoteInputLifetimeExtenders.forEach { it.dump(fd, pw, args) }
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
+ mRemoteInputLifetimeExtenders.forEach { it.dump(pw, args) }
}
override fun onRemoteInputSent(entry: NotificationEntry) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
index acc493d4b992..085ce859de87 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java
@@ -36,7 +36,6 @@ import com.android.systemui.statusbar.phone.NotifPanelEvents;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.util.concurrency.DelayableExecutor;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.HashSet;
@@ -253,7 +252,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable,
};
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("pipelineRunAllowed: " + mPipelineRunAllowed);
pw.println(" notifPanelCollapsing: " + mNotifPanelCollapsing);
pw.println(" launchingNotifActivity: " + mNotifPanelLaunchingActivity);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java
index f9358eb2df33..70b11569f50b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java
@@ -35,7 +35,6 @@ import com.android.systemui.statusbar.notification.collection.render.RenderStage
import com.android.systemui.statusbar.notification.collection.render.ShadeViewManagerFactory;
import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -115,9 +114,9 @@ public class NotifPipelineInitializer implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- mNotifPluggableCoordinators.dump(fd, pw, args);
- mGroupCoalescer.dump(fd, pw, args);
+ public void dump(PrintWriter pw, String[] args) {
+ mNotifPluggableCoordinators.dump(pw, args);
+ mGroupCoalescer.dump(pw, args);
}
private static final String TAG = "NotifPipeline";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java
index 7c4e4499dca6..b8da9a83da3f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java
@@ -43,7 +43,6 @@ import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.util.Compile;
import com.android.wm.shell.bubbles.Bubbles;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
@@ -875,7 +874,7 @@ public class NotificationGroupManagerLegacy implements
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("GroupManagerLegacy state:");
pw.println(" number of groups: " + mGroupMap.size());
for (Map.Entry<String, NotificationGroup> entry : mGroupMap.entrySet()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/VisualStabilityManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/VisualStabilityManager.java
index e921ea181f2e..456bf5148f7c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/VisualStabilityManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/VisualStabilityManager.java
@@ -36,7 +36,6 @@ import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -294,7 +293,7 @@ public class VisualStabilityManager implements OnHeadsUpChangedListener, Dumpabl
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("VisualStabilityManager state:");
pw.print(" mIsTemporaryReorderingAllowed="); pw.println(mIsTemporaryReorderingAllowed);
pw.print(" mTemporaryReorderingStart="); pw.println(mTemporaryReorderingStart);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt
index 51dab7246b28..febc011043a0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/SelfTrackingLifetimeExtender.kt
@@ -5,7 +5,6 @@ import android.util.ArrayMap
import android.util.Log
import com.android.systemui.Dumpable
import com.android.systemui.statusbar.notification.collection.NotificationEntry
-import java.io.FileDescriptor
import java.io.PrintWriter
/**
@@ -105,7 +104,7 @@ abstract class SelfTrackingLifetimeExtender(
mCallback = callback
}
- final override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ final override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("LifetimeExtender: $name:")
pw.println(" mEntriesExtended: ${mEntriesExtended.size}")
mEntriesExtended.forEach { pw.println(" * ${it.key}") }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt
index ab777de21e34..0f4772feac8d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/DebugModeFilterProvider.kt
@@ -29,7 +29,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.util.Assert
import com.android.systemui.util.ListenerSet
import com.android.systemui.util.isNotEmpty
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -93,7 +92,7 @@ class DebugModeFilterProvider @Inject constructor(
return entry.sbn.packageName !in allowedPackages
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("initialized: ${listeners.isNotEmpty()}")
pw.println("allowedPackages: ${allowedPackages.size}")
allowedPackages.forEachIndexed { i, pkg ->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java
index 86d263af88ea..a2cb9509a621 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/GroupExpansionManagerImpl.java
@@ -23,7 +23,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.coordinator.Coordinator;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
@@ -98,7 +97,7 @@ public class GroupExpansionManagerImpl implements GroupExpansionManager, Coordin
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("NotificationEntryExpansion state:");
pw.println(" # expanded groups: " + mExpandedGroups.size());
for (NotificationEntry entry : mExpandedGroups) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
index 18abfcaab0e0..3dcd3cbff0b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
@@ -23,7 +23,6 @@ import com.android.systemui.statusbar.notification.NotificationActivityStarter
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl
import com.android.systemui.statusbar.notification.collection.render.NotifStackController
import com.android.systemui.statusbar.notification.stack.NotificationListContainer
-import java.io.FileDescriptor
import java.io.PrintWriter
/**
@@ -45,5 +44,5 @@ interface NotificationsController {
fun resetUserExpandedStates()
fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption)
fun getActiveNotificationsCount(): Int
- fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>, dumpTruck: Boolean)
+ fun dump(pw: PrintWriter, args: Array<String>, dumpTruck: Boolean)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
index 98f45fa070c9..11ffde625798 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
@@ -43,14 +43,13 @@ import com.android.systemui.statusbar.notification.interruption.HeadsUpControlle
import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder
import com.android.systemui.statusbar.notification.row.NotifBindPipelineInitializer
import com.android.systemui.statusbar.notification.stack.NotificationListContainer
-import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper
import com.android.systemui.statusbar.phone.CentralSurfaces
+import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.HeadsUpManager
import com.android.systemui.statusbar.policy.RemoteInputUriController
import com.android.wm.shell.bubbles.Bubbles
import dagger.Lazy
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.Optional
import javax.inject.Inject
@@ -88,7 +87,7 @@ class NotificationsControllerImpl @Inject constructor(
private val clickerBuilder: NotificationClicker.Builder,
private val animatedImageNotificationManager: AnimatedImageNotificationManager,
private val peopleSpaceWidgetManager: PeopleSpaceWidgetManager,
- private val bubblesOptional: Optional<Bubbles>,
+ private val bubblesOptional: Optional<Bubbles>
) : NotificationsController {
override fun initialize(
@@ -109,7 +108,8 @@ class NotificationsControllerImpl @Inject constructor(
notificationRowBinder.setNotificationClicker(
clickerBuilder.build(
- Optional.of(centralSurfaces.get()), bubblesOptional, notificationActivityStarter))
+ Optional.of(
+ centralSurfaces.get()), bubblesOptional, notificationActivityStarter))
notificationRowBinder.setUpWithPresenter(
presenter,
listContainer,
@@ -150,7 +150,6 @@ class NotificationsControllerImpl @Inject constructor(
}
override fun dump(
- fd: FileDescriptor,
pw: PrintWriter,
args: Array<String>,
dumpTruck: Boolean
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
index 66701d1e37f1..10da0d229118 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
@@ -24,7 +24,6 @@ import com.android.systemui.statusbar.notification.NotificationActivityStarter
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl
import com.android.systemui.statusbar.notification.collection.render.NotifStackController
import com.android.systemui.statusbar.notification.stack.NotificationListContainer
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -61,7 +60,6 @@ class NotificationsControllerStub @Inject constructor(
}
override fun dump(
- fd: FileDescriptor,
pw: PrintWriter,
args: Array<String>,
dumpTruck: Boolean
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
index e436ccfd66c6..5646545dcd23 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt
@@ -200,7 +200,8 @@ private class KeyguardNotificationVisibilityProviderImpl @Inject constructor(
private fun readShowSilentNotificationSetting() {
val showSilentNotifs =
- secureSettings.getBool(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, true)
+ secureSettings.getBoolForUser(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS,
+ true, UserHandle.USER_CURRENT)
hideSilentNotificationsOnLockscreen = !showSilentNotifs
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index e479509247d3..5bf75c796fc9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -121,7 +121,6 @@ import com.android.systemui.util.Compile;
import com.android.systemui.util.DumpUtilsKt;
import com.android.systemui.wmshell.BubblesManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -3474,7 +3473,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pwOriginal, String[] args) {
+ public void dump(PrintWriter pwOriginal, String[] args) {
IndentingPrintWriter pw = DumpUtilsKt.asIndenting(pwOriginal);
// Skip super call; dump viewState ourselves
pw.println("Notification: " + mEntry.getKey());
@@ -3487,10 +3486,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
NotificationContentView showingLayout = getShowingLayout();
pw.print(", privateShowing: " + (showingLayout == mPrivateLayout));
pw.println();
- showingLayout.dump(fd, pw, args);
+ showingLayout.dump(pw, args);
if (getViewState() != null) {
- getViewState().dump(fd, pw, args);
+ getViewState().dump(pw, args);
pw.println();
} else {
pw.println("no viewState!!!");
@@ -3509,7 +3508,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
pw.increaseIndent();
for (ExpandableNotificationRow child : notificationChildren) {
pw.println();
- child.dump(fd, pw, args);
+ child.dump(pw, args);
}
pw.decreaseIndent();
pw.println("}");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
index 8ffdb69c13d9..22a6b0a4bae4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
@@ -39,7 +39,6 @@ import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.util.DumpUtilsKt;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -806,7 +805,7 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pwOriginal, String[] args) {
+ public void dump(PrintWriter pwOriginal, String[] args) {
IndentingPrintWriter pw = DumpUtilsKt.asIndenting(pwOriginal);
pw.println(getClass().getSimpleName());
DumpUtilsKt.withIncreasedIndent(pw, () -> {
@@ -814,7 +813,7 @@ public abstract class ExpandableView extends FrameLayout implements Dumpable {
if (viewState == null) {
pw.println("no viewState!!!");
} else {
- viewState.dump(fd, pw, args);
+ viewState.dump(pw, args);
pw.println();
}
});
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
index 7d035a78450a..e43ecf70a308 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
@@ -28,7 +28,6 @@ import com.android.systemui.statusbar.notification.stack.ExpandableViewState;
import com.android.systemui.statusbar.notification.stack.ViewState;
import com.android.systemui.util.DumpUtilsKt;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
public class FooterView extends StackScrollerDecorView {
@@ -54,9 +53,9 @@ public class FooterView extends StackScrollerDecorView {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pwOriginal, String[] args) {
+ public void dump(PrintWriter pwOriginal, String[] args) {
IndentingPrintWriter pw = DumpUtilsKt.asIndenting(pwOriginal);
- super.dump(fd, pw, args);
+ super.dump(pw, args);
DumpUtilsKt.withIncreasedIndent(pw, () -> {
pw.println("visibility: " + DumpUtilsKt.visibilityString(getVisibility()));
pw.println("manageButton showHistory: " + mShowHistory);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java
index c640ab6c3a90..7d0f00abcc98 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java
@@ -270,8 +270,8 @@ public class NotificationBackgroundView extends View {
/** Set the current expand animation size. */
public void setExpandAnimationSize(int width, int height) {
- mExpandAnimationHeight = width;
- mExpandAnimationWidth = height;
+ mExpandAnimationHeight = height;
+ mExpandAnimationWidth = width;
invalidate();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
index b9c7113206df..ba26cfaa30b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
@@ -63,7 +63,6 @@ import com.android.systemui.statusbar.policy.dagger.RemoteInputViewSubcomponent;
import com.android.systemui.util.Compile;
import com.android.systemui.wmshell.BubblesManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
@@ -1995,7 +1994,7 @@ public class NotificationContentView extends FrameLayout implements Notification
}
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print("contentView visibility: " + getVisibility());
pw.print(", alpha: " + getAlpha());
pw.print(", clipBounds: " + getClipBounds());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
index ebe6f03c44e1..8a7155ac72d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
@@ -75,7 +75,6 @@ import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.wmshell.BubblesManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Optional;
@@ -704,7 +703,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("NotificationGutsManager state:");
pw.print(" mKeyToRemoveOnGutsClosed (legacy): ");
pw.println(mKeyToRemoveOnGutsClosed);
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 8271a8894014..15a93c871c80 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
@@ -111,7 +111,6 @@ import com.android.systemui.util.Assert;
import com.android.systemui.util.DumpUtilsKt;
import com.android.systemui.util.LargeScreenUtils;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.util.ArrayList;
@@ -5022,7 +5021,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
}
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
- public void dump(FileDescriptor fd, PrintWriter pwOriginal, String[] args) {
+ public void dump(PrintWriter pwOriginal, String[] args) {
IndentingPrintWriter pw = DumpUtilsKt.asIndenting(pwOriginal);
StringBuilder sb = new StringBuilder("[")
.append(this.getClass().getSimpleName()).append(":")
@@ -5049,20 +5048,20 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable
for (int i = 0; i < childCount; i++) {
ExpandableView child = (ExpandableView) getChildAt(i);
- child.dump(fd, pw, args);
+ child.dump(pw, args);
pw.println();
}
int transientViewCount = getTransientViewCount();
pw.println("Transient Views: " + transientViewCount);
for (int i = 0; i < transientViewCount; i++) {
ExpandableView child = (ExpandableView) getTransientView(i);
- child.dump(fd, pw, args);
+ child.dump(pw, args);
}
View swipedView = mSwipeHelper.getSwipedView();
pw.println("Swiped view: " + swipedView);
if (swipedView instanceof ExpandableView) {
ExpandableView expandableView = (ExpandableView) swipedView;
- expandableView.dump(fd, pw, args);
+ expandableView.dump(pw, args);
}
});
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
index 6d7c95f96de6..440bea638231 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
@@ -182,6 +182,7 @@ public class NotificationStackScrollLayoutController {
private final NotificationStackSizeCalculator mNotificationStackSizeCalculator;
private final StackStateLogger mStackStateLogger;
private final NotificationStackScrollLogger mLogger;
+ private final GroupExpansionManager mGroupExpansionManager;
private NotificationStackScrollLayout mView;
private boolean mFadeNotificationsOnDismiss;
@@ -307,6 +308,9 @@ public class NotificationStackScrollLayoutController {
public void onStateChanged(int newState) {
mBarState = newState;
mView.setStatusBarState(mBarState);
+ if (newState == KEYGUARD) {
+ mGroupExpansionManager.collapseGroups();
+ }
}
@Override
@@ -679,8 +683,7 @@ public class NotificationStackScrollLayoutController {
mScrimController = scrimController;
mJankMonitor = jankMonitor;
mNotificationStackSizeCalculator = notificationStackSizeCalculator;
- groupManager.registerGroupExpansionChangeListener(
- (changedRow, expanded) -> mView.onGroupExpandChanged(changedRow, expanded));
+ mGroupExpansionManager = groupManager;
legacyGroupManager.registerGroupChangeListener(new OnGroupChangeListener() {
@Override
public void onGroupsChanged() {
@@ -813,6 +816,9 @@ public class NotificationStackScrollLayoutController {
}
mView.addOnAttachStateChangeListener(mOnAttachStateChangeListener);
mSilentHeaderController.setOnClearSectionClickListener(v -> clearSilentNotifications());
+
+ mGroupExpansionManager.registerGroupExpansionChangeListener(
+ (changedRow, expanded) -> mView.onGroupExpandChanged(changedRow, expanded));
}
private boolean isInVisibleLocation(NotificationEntry entry) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java
index 83bea84c8d33..786de29a5819 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ViewState.java
@@ -34,7 +34,6 @@ import com.android.systemui.statusbar.notification.PropertyAnimator;
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.policy.HeadsUpUtil;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -734,7 +733,7 @@ public class ViewState implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
StringBuilder result = new StringBuilder();
result.append("ViewState { ");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
index f95093ef8ba4..c1869e0575ed 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
@@ -63,7 +63,6 @@ import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.KeyguardStateController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -767,7 +766,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(" BiometricUnlockController:");
pw.print(" mMode="); pw.println(mMode);
pw.print(" mWakeLock="); pw.println(mWakeLock);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
index 1625d9b7f486..7ceeb46ca57d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java
@@ -248,7 +248,6 @@ import com.android.wm.shell.bubbles.Bubbles;
import com.android.wm.shell.startingsurface.SplashscreenContentDrawer;
import com.android.wm.shell.startingsurface.StartingSurface;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
@@ -2263,7 +2262,7 @@ public class CentralSurfaces extends CoreStartable implements
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pwOriginal, String[] args) {
+ public void dump(PrintWriter pwOriginal, String[] args) {
IndentingPrintWriter pw = DumpUtilsKt.asIndenting(pwOriginal);
synchronized (mQueueLock) {
pw.println("Current Status Bar state:");
@@ -2285,13 +2284,13 @@ public class CentralSurfaces extends CoreStartable implements
pw.println(" ShadeWindowView: ");
if (mNotificationShadeWindowViewController != null) {
- mNotificationShadeWindowViewController.dump(fd, pw, args);
+ mNotificationShadeWindowViewController.dump(pw, args);
dumpBarTransitions(pw, "PhoneStatusBarTransitions", mStatusBarTransitions);
}
pw.println(" mMediaManager: ");
if (mMediaManager != null) {
- mMediaManager.dump(fd, pw, args);
+ mMediaManager.dump(pw, args);
}
pw.println(" Panels: ");
@@ -2300,14 +2299,14 @@ public class CentralSurfaces extends CoreStartable implements
+ mNotificationPanelViewController.getView() + " params="
+ mNotificationPanelViewController.getView().getLayoutParams().debug(""));
pw.print (" ");
- mNotificationPanelViewController.dump(fd, pw, args);
+ mNotificationPanelViewController.dump(pw, args);
}
pw.println(" mStackScroller: ");
if (mStackScroller != null) {
// Double indent until we rewrite the rest of this dump()
pw.increaseIndent();
pw.increaseIndent();
- mStackScroller.dump(fd, pw, args);
+ mStackScroller.dump(pw, args);
pw.decreaseIndent();
pw.decreaseIndent();
}
@@ -2322,11 +2321,11 @@ public class CentralSurfaces extends CoreStartable implements
pw.println(" light wallpaper theme: " + lightWpTheme);
if (mKeyguardIndicationController != null) {
- mKeyguardIndicationController.dump(fd, pw, args);
+ mKeyguardIndicationController.dump(pw, args);
}
if (mScrimController != null) {
- mScrimController.dump(fd, pw, args);
+ mScrimController.dump(pw, args);
}
if (mLightRevealScrim != null) {
@@ -2340,27 +2339,27 @@ public class CentralSurfaces extends CoreStartable implements
mStatusBarKeyguardViewManager.dump(pw);
}
- mNotificationsController.dump(fd, pw, args, DUMPTRUCK);
+ mNotificationsController.dump(pw, args, DUMPTRUCK);
if (DEBUG_GESTURES) {
pw.print(" status bar gestures: ");
- mGestureRec.dump(fd, pw, args);
+ mGestureRec.dump(pw, args);
}
if (mHeadsUpManager != null) {
- mHeadsUpManager.dump(fd, pw, args);
+ mHeadsUpManager.dump(pw, args);
} else {
pw.println(" mHeadsUpManager: null");
}
if (mStatusBarTouchableRegionManager != null) {
- mStatusBarTouchableRegionManager.dump(fd, pw, args);
+ mStatusBarTouchableRegionManager.dump(pw, args);
} else {
pw.println(" mStatusBarTouchableRegionManager: null");
}
if (mLightBarController != null) {
- mLightBarController.dump(fd, pw, args);
+ mLightBarController.dump(pw, args);
}
pw.println("SharedPreferences:");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
index 150da1687b39..7aa87e3e2971 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
@@ -28,7 +28,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.CommandQueue;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -130,7 +129,7 @@ public class DarkIconDispatcherImpl implements SysuiDarkIconDispatcher,
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("DarkIconDispatcher: ");
pw.println(" mIconTint: 0x" + Integer.toHexString(mIconTint));
pw.println(" mDarkIntensity: " + mDarkIntensity + "f");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 8b25c2bc20b9..829cd3ad0aad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -54,7 +54,6 @@ import com.android.systemui.tuner.TunerService;
import com.android.systemui.unfold.FoldAodAnimationController;
import com.android.systemui.unfold.SysUIUnfoldComponent;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Optional;
@@ -447,7 +446,7 @@ public class DozeParameters implements
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.print("getAlwaysOn(): "); pw.println(getAlwaysOn());
pw.print("getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java
index 2a76418b1f03..415bd90ed23a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java
@@ -42,7 +42,6 @@ import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.HeadsUpManagerLogger;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
@@ -321,9 +320,9 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
// Dumpable overrides:
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("HeadsUpManagerPhone state:");
- dumpInternal(fd, pw, args);
+ dumpInternal(pw, args);
}
@Override
@@ -373,8 +372,8 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
}
@Override
- protected void dumpInternal(FileDescriptor fd, PrintWriter pw, String[] args) {
- super.dumpInternal(fd, pw, args);
+ protected void dumpInternal(PrintWriter pw, String[] args) {
+ super.dumpInternal(pw, args);
pw.print(" mBarState=");
pw.println(mStatusBarState);
pw.print(" mTouchableRegion=");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
index c0600b6d02f2..034fc589df97 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
@@ -31,7 +31,6 @@ import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.tuner.TunerService
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -216,7 +215,7 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
pendingUnlock = null
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("KeyguardBypassController:")
if (pendingUnlock != null) {
pw.println(" mPendingUnlock.pendingUnlockType: ${pendingUnlock!!.pendingUnlockType}")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt
index 280e75cc7381..7db677ab6305 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt
@@ -30,7 +30,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.util.Assert
import com.android.systemui.util.sensors.AsyncSensorManager
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -93,7 +92,7 @@ class KeyguardLiftController @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("KeyguardLiftController:")
pw.println(" pickupSensor: $pickupSensor")
pw.println(" isListening: $isListening")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
index cb332bdf59b1..673c1a66b0da 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
@@ -48,7 +48,6 @@ import com.android.systemui.animation.Interpolators;
import com.android.systemui.battery.BatteryMeterView;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -500,13 +499,13 @@ public class KeyguardStatusBarView extends RelativeLayout {
}
/** Should only be called from {@link KeyguardStatusBarViewController}. */
- void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardStatusBarView:");
pw.println(" mBatteryCharging: " + mBatteryCharging);
pw.println(" mLayoutState: " + mLayoutState);
pw.println(" mKeyguardUserSwitcherEnabled: " + mKeyguardUserSwitcherEnabled);
if (mBatteryView != null) {
- mBatteryView.dump(fd, pw, args);
+ mBatteryView.dump(pw, args);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
index 57d63487cf7a..779c6b461378 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
@@ -55,7 +55,6 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.util.ViewController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.List;
@@ -518,11 +517,11 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
}
/** */
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardStatusBarView:");
pw.println(" mBatteryListening: " + mBatteryListening);
pw.println(" mExplicitAlpha: " + mExplicitAlpha);
- mView.dump(fd, pw, args);
+ mView.dump(pw, args);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt
index a5fcea789d3a..925414ffb127 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LargeScreenShadeHeaderController.kt
@@ -33,7 +33,6 @@ import com.android.systemui.qs.carrier.QSCarrierGroupController
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope
import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.LARGE_SCREEN_BATTERY_CONTROLLER
import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.LARGE_SCREEN_SHADE_HEADER
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
import javax.inject.Named
@@ -259,7 +258,7 @@ class LargeScreenShadeHeaderController @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("visible: $visible")
pw.println("shadeExpanded: $shadeExpanded")
pw.println("shadeExpandedFraction: $shadeExpandedFraction")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
index 4082db7b6bef..2c57328174e8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
@@ -40,7 +40,6 @@ import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.statusbar.policy.BatteryController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -258,7 +257,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("LightBarController: ");
pw.print(" mAppearance="); pw.println(ViewDebug.flagsToString(
InsetsFlags.class, "appearance", mAppearance));
@@ -287,13 +286,13 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
mStatusBarIconController.getTransitionsController();
if (transitionsController != null) {
pw.println(" StatusBarTransitionsController:");
- transitionsController.dump(fd, pw, args);
+ transitionsController.dump(pw, args);
pw.println();
}
if (mNavigationBarController != null) {
pw.println(" NavigationBarTransitionsController:");
- mNavigationBarController.dump(fd, pw, args);
+ mNavigationBarController.dump(pw, args);
pw.println();
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java
index 415fb92e37ce..d11e3306a5a6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarTransitionsController.java
@@ -33,7 +33,6 @@ import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.policy.KeyguardStateController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -202,7 +201,7 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print(" mTransitionDeferring="); pw.print(mTransitionDeferring);
if (mTransitionDeferring) {
pw.println();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
index e565a44e7e1e..8793a57e4ef8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
@@ -49,7 +49,6 @@ import com.android.systemui.statusbar.NotificationMediaManager;
import libcore.io.IoUtils;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Objects;
@@ -230,7 +229,7 @@ public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implemen
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println(getClass().getSimpleName() + ":");
IndentingPrintWriter iPw = new IndentingPrintWriter(pw, " ").increaseIndent();
iPw.println("mCached=" + mCached);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 600732373cae..8deaa3444bb0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -194,7 +194,6 @@ import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.wallet.controller.QuickAccessWalletController;
import com.android.wm.shell.animation.FlingAnimationUtils;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
@@ -405,7 +404,7 @@ public class NotificationPanelViewController extends PanelViewController {
* Determines if QS should be already expanded when expanding shade.
* Used for split shade, two finger gesture as well as accessibility shortcut to QS.
*/
- private boolean mQsExpandImmediate;
+ @VisibleForTesting boolean mQsExpandImmediate;
private boolean mTwoFingerQsExpandPossible;
private String mHeaderDebugInfo;
@@ -430,7 +429,6 @@ public class NotificationPanelViewController extends PanelViewController {
private boolean mExpandingFromHeadsUp;
private boolean mCollapsedOnDown;
private int mPositionMinSideMargin;
- private int mLastOrientation = -1;
private boolean mClosingWithAlphaFadeOut;
private boolean mHeadsUpAnimatingAway;
private boolean mLaunchingAffordance;
@@ -955,7 +953,6 @@ public class NotificationPanelViewController extends PanelViewController {
mKeyguardBottomArea = mView.findViewById(R.id.keyguard_bottom_area);
mPreviewContainer = mView.findViewById(R.id.preview_container);
mKeyguardBottomArea.setPreviewContainer(mPreviewContainer);
- mLastOrientation = mResources.getConfiguration().orientation;
initBottomArea();
@@ -1994,9 +1991,6 @@ public class NotificationPanelViewController extends PanelViewController {
if (!isFullyCollapsed()) {
return;
}
- if (mShouldUseSplitNotificationShade) {
- mQsExpandImmediate = true;
- }
mExpectingSynthesizedDown = true;
onTrackingStarted();
updatePanelExpanded();
@@ -3172,6 +3166,9 @@ public class NotificationPanelViewController extends PanelViewController {
mFalsingCollector.onTrackingStarted(!mKeyguardStateController.canDismissLockScreen());
super.onTrackingStarted();
mScrimController.onTrackingStarted();
+ if (mShouldUseSplitNotificationShade) {
+ mQsExpandImmediate = true;
+ }
if (mQsFullyExpanded) {
mQsExpandImmediate = true;
setShowShelfOnly(true);
@@ -3817,14 +3814,14 @@ public class NotificationPanelViewController extends PanelViewController {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- super.dump(fd, pw, args);
+ public void dump(PrintWriter pw, String[] args) {
+ super.dump(pw, args);
pw.println(" gestureExclusionRect: " + calculateGestureExclusionRect()
+ " applyQSClippingImmediately: top(" + mQsClipTop + ") bottom(" + mQsClipBottom
+ ") qsVisible(" + mQsVisible
);
if (mKeyguardStatusBarViewController != null) {
- mKeyguardStatusBarViewController.dump(fd, pw, args);
+ mKeyguardStatusBarViewController.dump(pw, args);
}
}
@@ -4876,7 +4873,6 @@ public class NotificationPanelViewController extends PanelViewController {
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mAffordanceHelper.onConfigurationChanged();
- mLastOrientation = newConfig.orientation;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
index 67b4dbbe3307..56c74bf98e6b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
@@ -61,7 +61,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.statusbar.policy.KeyguardStateController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
@@ -765,7 +764,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(TAG + ":");
pw.println(" mKeyguardMaxRefreshRate=" + mKeyguardMaxRefreshRate);
pw.println(" mKeyguardPreferredRefreshRate=" + mKeyguardPreferredRefreshRate);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
index 787c4c0324d6..2f11b16f9383 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
@@ -51,7 +51,6 @@ import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManage
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
import com.android.systemui.tuner.TunerService;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Optional;
@@ -450,7 +449,7 @@ public class NotificationShadeWindowViewController {
mAmbientState.setSwipingUp(false);
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print(" mExpandAnimationRunning=");
pw.println(mExpandAnimationRunning);
pw.print(" mTouchCancelled=");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt
index 491e9fde5c9c..1206d0540fd2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt
@@ -26,6 +26,7 @@ import com.android.systemui.util.ViewController
import com.android.systemui.util.concurrency.DelayableExecutor
import java.util.function.Consumer
import javax.inject.Inject
+import kotlin.reflect.KMutableProperty0
@VisibleForTesting
internal const val INSET_DEBOUNCE_MILLIS = 500L
@@ -54,6 +55,7 @@ class NotificationsQSContainerController @Inject constructor(
private var largeScreenShadeHeaderActive = false
private var notificationsBottomMargin = 0
private var scrimShadeBottomMargin = 0
+ private var footerActionsOffset = 0
private var bottomStableInsets = 0
private var bottomCutoutInsets = 0
private var panelMarginHorizontal = 0
@@ -132,18 +134,17 @@ class NotificationsQSContainerController @Inject constructor(
resources.getDimensionPixelSize(R.dimen.notification_panel_margin_top)
}
updateConstraints()
- if (splitShadeEnabledChanged) {
- // Let's do it at the end when all margins/paddings were already applied.
- // We need to updateBottomSpacing() in case device configuration changed while showing
- // QS details/customizer
- updateBottomSpacing()
- }
- val previousScrimShadeBottomMargin = scrimShadeBottomMargin
- scrimShadeBottomMargin = resources.getDimensionPixelSize(
- R.dimen.split_shade_notifications_scrim_margin_bottom
+
+ val scrimMarginChanged = ::scrimShadeBottomMargin.setAndReportChange(
+ resources.getDimensionPixelSize(R.dimen.split_shade_notifications_scrim_margin_bottom)
+ )
+ val footerOffsetChanged = ::footerActionsOffset.setAndReportChange(
+ resources.getDimensionPixelSize(R.dimen.qs_footer_action_inset) +
+ resources.getDimensionPixelSize(R.dimen.qs_footer_actions_bottom_padding)
)
+ val dimensChanged = scrimMarginChanged || footerOffsetChanged
- if (previousScrimShadeBottomMargin != scrimShadeBottomMargin) {
+ if (splitShadeEnabledChanged || dimensChanged) {
updateBottomSpacing()
}
}
@@ -166,22 +167,13 @@ class NotificationsQSContainerController @Inject constructor(
}
private fun updateBottomSpacing() {
- val (containerPadding, notificationsMargin) = calculateBottomSpacing()
- var qsScrollPaddingBottom = 0
- if (!(isQSCustomizing || isQSDetailShowing)) {
- // With the new footer, we also want this padding in the bottom in these cases
- qsScrollPaddingBottom = if (splitShadeEnabled) {
- notificationsMargin - scrimShadeBottomMargin
- } else {
- bottomStableInsets
- }
- }
+ val (containerPadding, notificationsMargin, qsContainerPadding) = calculateBottomSpacing()
mView.setPadding(0, 0, 0, containerPadding)
mView.setNotificationsMarginBottom(notificationsMargin)
- mView.setQSContainerPaddingBottom(qsScrollPaddingBottom)
+ mView.setQSContainerPaddingBottom(qsContainerPadding)
}
- private fun calculateBottomSpacing(): Pair<Int, Int> {
+ private fun calculateBottomSpacing(): Paddings {
val containerPadding: Int
var stackScrollMargin = notificationsBottomMargin
if (splitShadeEnabled) {
@@ -210,7 +202,17 @@ class NotificationsQSContainerController @Inject constructor(
containerPadding = 0
}
}
- return containerPadding to stackScrollMargin
+ val qsContainerPadding = if (!(isQSCustomizing || isQSDetailShowing)) {
+ // We also want this padding in the bottom in these cases
+ if (splitShadeEnabled) {
+ stackScrollMargin - scrimShadeBottomMargin - footerActionsOffset
+ } else {
+ bottomStableInsets
+ }
+ } else {
+ 0
+ }
+ return Paddings(containerPadding, stackScrollMargin, qsContainerPadding)
}
fun updateConstraints() {
@@ -275,3 +277,15 @@ class NotificationsQSContainerController @Inject constructor(
}
}
}
+
+private data class Paddings(
+ val containerPadding: Int,
+ val notificationsMargin: Int,
+ val qsContainerPadding: Int
+)
+
+private fun KMutableProperty0<Int>.setAndReportChange(newValue: Int): Boolean {
+ val oldValue = get()
+ set(newValue)
+ return oldValue != newValue
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java
index 71f199f330a5..518a9181ec98 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java
@@ -66,7 +66,6 @@ import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManage
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.wm.shell.animation.FlingAnimationUtils;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
public abstract class PanelViewController {
@@ -1144,7 +1143,7 @@ public abstract class PanelViewController {
protected abstract boolean isDozing();
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(String.format("[PanelView(%s): expandedHeight=%f maxPanelHeight=%d closing=%s"
+ " tracking=%s timeAnim=%s%s "
+ "touchDisabled=%s" + "]",
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
index d7abf7430cac..26ffdf25318d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -672,7 +672,7 @@ public class PhoneStatusBarPolicy
if (item == null /* b/124234367 */) {
Log.e(TAG, "updatePrivacyItems - null item found");
StringWriter out = new StringWriter();
- mPrivacyItemController.dump(null, new PrintWriter(out), null);
+ mPrivacyItemController.dump(new PrintWriter(out), null);
// Throw so we can look into this
throw new NullPointerException(out.toString());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 28f2e61bd8c6..fd6503a53208 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -62,7 +62,6 @@ import com.android.systemui.util.AlarmTimeout;
import com.android.systemui.util.wakelock.DelayedWakeLock;
import com.android.systemui.util.wakelock.WakeLock;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -1391,7 +1390,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(" ScrimController: ");
pw.print(" state: ");
pw.println(mState);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
index b7988bcc6f45..67de4e3b3c39 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarContentInsetsProvider.kt
@@ -23,9 +23,7 @@ import android.graphics.Rect
import android.util.LruCache
import android.util.Pair
import android.view.DisplayCutout
-
import androidx.annotation.VisibleForTesting
-
import com.android.internal.policy.SystemBarUtils
import com.android.systemui.Dumpable
import com.android.systemui.R
@@ -41,10 +39,8 @@ import com.android.systemui.util.leak.RotationUtils.Rotation
import com.android.systemui.util.leak.RotationUtils.getExactRotation
import com.android.systemui.util.leak.RotationUtils.getResourcesForRotation
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.lang.Math.max
-
import javax.inject.Inject
/**
@@ -263,7 +259,7 @@ class StatusBarContentInsetsProvider @Inject constructor(
return res.getDimensionPixelSize(R.dimen.status_bar_padding_top)
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
insetsCache.snapshot().forEach { (key, rect) ->
pw.println("$key -> $rect")
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHideIconsForBouncerManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHideIconsForBouncerManager.kt
index 17516e07400b..51131914363d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHideIconsForBouncerManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHideIconsForBouncerManager.kt
@@ -8,7 +8,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.window.StatusBarWindowStateController
import com.android.systemui.util.concurrency.DelayableExecutor
-import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -123,7 +122,7 @@ class StatusBarHideIconsForBouncerManager @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("---- State variables set externally ----")
pw.println("panelExpanded=$panelExpanded")
pw.println("isOccluded=$isOccluded")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
index 623ec5e2b762..a94c2b73d1f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
@@ -43,7 +43,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController.Configurati
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
@@ -425,7 +424,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
/** */
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(TAG + " state:");
for (IconManager manager : mIconGroups) {
if (manager.shouldLog()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
index 95667cc0b972..4e9090080c99 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
@@ -39,7 +39,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -127,7 +126,7 @@ public final class StatusBarTouchableRegionManager implements Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("StatusBarTouchableRegionManager state:");
pw.print(" mTouchableRegion=");
pw.println(mTouchableRegion);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialogManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialogManager.java
index 204f710b633a..36e705a31a10 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialogManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/SystemUIDialogManager.java
@@ -22,7 +22,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Set;
@@ -96,7 +95,7 @@ public class SystemUIDialogManager implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("listeners:");
for (Listener listener : mListeners) {
pw.println("\t" + listener);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
index 9e48b763f4f6..597c949168d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java
@@ -31,6 +31,7 @@ import android.app.Fragment;
import android.database.ContentObserver;
import android.os.Bundle;
import android.os.Parcelable;
+import android.os.UserHandle;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
import android.util.SparseArray;
@@ -254,7 +255,10 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
R.array.config_collapsed_statusbar_icon_blocklist));
String vibrateIconSlot = getString(com.android.internal.R.string.status_bar_volume);
boolean showVibrateIcon =
- mSecureSettings.getInt(Settings.Secure.STATUS_BAR_SHOW_VIBRATE_ICON, 0) == 0;
+ mSecureSettings.getIntForUser(
+ Settings.Secure.STATUS_BAR_SHOW_VIBRATE_ICON,
+ 0,
+ UserHandle.USER_CURRENT) == 0;
// Filter out vibrate icon from the blocklist if the setting is on
for (int i = 0; i < blockList.size(); i++) {
@@ -291,10 +295,11 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
initOngoingCallChip();
mAnimationScheduler.addCallback(this);
- mSecureSettings.registerContentObserver(
+ mSecureSettings.registerContentObserverForUser(
Settings.Secure.getUriFor(Settings.Secure.STATUS_BAR_SHOW_VIBRATE_ICON),
false,
- mVolumeSettingObserver);
+ mVolumeSettingObserver,
+ UserHandle.USER_ALL);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
index ec44f18c8eb2..dfa68383bd03 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
@@ -42,9 +42,8 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.No
import com.android.systemui.statusbar.policy.CallbackController
import com.android.systemui.statusbar.window.StatusBarWindowController
import com.android.systemui.util.time.SystemClock
-import java.io.FileDescriptor
import java.io.PrintWriter
-import java.util.*
+import java.util.Optional
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -64,7 +63,7 @@ class OngoingCallController @Inject constructor(
private val dumpManager: DumpManager,
private val statusBarWindowController: Optional<StatusBarWindowController>,
private val swipeStatusBarAwayGestureHandler: Optional<SwipeStatusBarAwayGestureHandler>,
- private val statusBarStateController: StatusBarStateController,
+ private val statusBarStateController: StatusBarStateController
) : CallbackController<OngoingCallListener>, Dumpable {
private var isFullscreen: Boolean = false
/** Non-null if there's an active call notification. */
@@ -242,9 +241,9 @@ class OngoingCallController @Inject constructor(
}
private fun updateGestureListening() {
- if (callNotificationInfo == null
- || callNotificationInfo?.statusBarSwipedAway == true
- || !isFullscreen) {
+ if (callNotificationInfo == null ||
+ callNotificationInfo?.statusBarSwipedAway == true ||
+ !isFullscreen) {
swipeStatusBarAwayGestureHandler.ifPresent { it.removeOnGestureDetectedCallback(TAG) }
} else {
swipeStatusBarAwayGestureHandler.ifPresent {
@@ -270,7 +269,7 @@ class OngoingCallController @Inject constructor(
return this.findViewById(R.id.ongoing_call_chip_time)
}
- /**
+ /**
* If there's an active ongoing call, then we will force the status bar to always show, even if
* the user is in immersive mode. However, we also want to give users the ability to swipe away
* the status bar if they need to access the area under the status bar.
@@ -278,16 +277,16 @@ class OngoingCallController @Inject constructor(
* This method updates the status bar window appropriately when the swipe away gesture is
* detected.
*/
- private fun onSwipeAwayGestureDetected() {
- if (DEBUG) { Log.d(TAG, "Swipe away gesture detected") }
- callNotificationInfo = callNotificationInfo?.copy(statusBarSwipedAway = true)
- statusBarWindowController.ifPresent {
- it.setOngoingProcessRequiresStatusBarVisible(false)
- }
- swipeStatusBarAwayGestureHandler.ifPresent {
- it.removeOnGestureDetectedCallback(TAG)
- }
- }
+ private fun onSwipeAwayGestureDetected() {
+ if (DEBUG) { Log.d(TAG, "Swipe away gesture detected") }
+ callNotificationInfo = callNotificationInfo?.copy(statusBarSwipedAway = true)
+ statusBarWindowController.ifPresent {
+ it.setOngoingProcessRequiresStatusBarVisible(false)
+ }
+ swipeStatusBarAwayGestureHandler.ifPresent {
+ it.removeOnGestureDetectedCallback(TAG)
+ }
+ }
private val statusBarStateListener = object : StatusBarStateController.StateListener {
override fun onFullscreenStateChanged(isFullscreen: Boolean) {
@@ -314,7 +313,7 @@ class OngoingCallController @Inject constructor(
fun hasValidStartTime(): Boolean = callStartTime > 0
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("Active call notification: $callNotificationInfo")
pw.println("Call app visible: ${uidObserver.isCallAppVisible}")
}
@@ -334,7 +333,6 @@ class OngoingCallController @Inject constructor(
*/
private var isRegistered = false
-
/** Register this observer with the activity manager and the given [uid]. */
fun registerWithUid(uid: Int) {
if (callAppUid == uid) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt
index b0f762994c0f..f6b8cb0782cd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/userswitcher/StatusBarUserInfoTracker.kt
@@ -18,7 +18,6 @@ package com.android.systemui.statusbar.phone.userswitcher
import android.graphics.drawable.Drawable
import android.os.UserManager
-
import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
@@ -27,11 +26,8 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.policy.CallbackController
import com.android.systemui.statusbar.policy.UserInfoController
import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener
-
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
-
import javax.inject.Inject
/**
@@ -124,7 +120,7 @@ class StatusBarUserInfoTracker @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println(" userSwitcherEnabled=$userSwitcherEnabled")
pw.println(" listening=$listening")
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
index ecaa28b0d4eb..a89c128dd584 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
@@ -23,7 +23,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
@@ -32,7 +31,7 @@ public interface BatteryController extends DemoMode, Dumpable,
/**
* Prints the current state of the {@link BatteryController} to the given {@link PrintWriter}.
*/
- void dump(FileDescriptor fd, PrintWriter pw, String[] args);
+ void dump(PrintWriter pw, String[] args);
/**
* Sets if the current device is in power save mode.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
index 1e71dea29eba..917a5e0b9374 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar.policy;
import static android.os.BatteryManager.EXTRA_PRESENT;
+import android.annotation.WorkerThread;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -43,8 +44,8 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.power.EnhancedEstimates;
+import com.android.systemui.util.Assert;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -134,11 +135,11 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
}
mDemoModeController.addCallback(this);
updatePowerSave();
- updateEstimate();
+ updateEstimateInBackground();
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("BatteryController state:");
pw.print(" mLevel="); pw.println(mLevel);
pw.print(" mPluggedIn="); pw.println(mPluggedIn);
@@ -339,7 +340,9 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
}
}
+ @WorkerThread
private void updateEstimate() {
+ Assert.isNotMainThread();
// if the estimate has been cached we can just use that, otherwise get a new one and
// throw it in the cache.
mEstimate = Estimate.getCachedEstimateIfAvailable(mContext);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
index 2b79733f886b..e7fa6d239012 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -42,7 +42,6 @@ import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -110,7 +109,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
UserHandle.of(mCurrentUser));
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("BluetoothController state:");
pw.print(" mLocalBluetoothManager="); pw.println(mLocalBluetoothManager);
if (mLocalBluetoothManager == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
index 7bde31592965..7290a1a82070 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
@@ -40,7 +40,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.Utils;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -82,7 +81,7 @@ public class CastControllerImpl implements CastController {
if (DEBUG) Log.d(TAG, "new CastController()");
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("CastController state:");
pw.print(" mDiscovering="); pw.println(mDiscovering);
pw.print(" mCallbackRegistered="); pw.println(mCallbackRegistered);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
index 9e1e87b9856f..4c43734836c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
@@ -31,6 +31,7 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
import android.text.format.DateFormat;
import android.text.style.CharacterStyle;
import android.text.style.RelativeSizeSpan;
@@ -291,7 +292,13 @@ public class Clock extends TextView implements
final void updateClock() {
if (mDemoMode) return;
mCalendar.setTimeInMillis(System.currentTimeMillis());
- setText(getSmallTime());
+ CharSequence smallTime = getSmallTime();
+ // Setting text actually triggers a layout pass (because the text view is set to
+ // wrap_content width and TextView always relayouts for this). Avoid needless
+ // relayout if the text didn't actually change.
+ if (!TextUtils.equals(smallTime, getText())) {
+ setText(smallTime);
+ }
setContentDescription(mContentDescriptionFormat.format(mCalendar.getTime()));
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.kt
index acc12141796e..a6b7d9c56900 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.kt
@@ -36,7 +36,6 @@ import com.android.systemui.dump.DumpManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.util.settings.GlobalSettings
import com.android.systemui.util.settings.SecureSettings
-import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.concurrent.Executor
import java.util.concurrent.atomic.AtomicBoolean
@@ -220,7 +219,7 @@ open class DeviceProvisionedControllerImpl @Inject constructor(
}
}
- override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+ override fun dump(pw: PrintWriter, args: Array<out String>) {
pw.println("Device provisioned: ${deviceProvisioned.get()}")
synchronized(lock) {
pw.println("User setup complete: $userSetupComplete")
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
index 01fe8657fe47..4cf1d2b3f91d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
@@ -36,7 +36,6 @@ import androidx.annotation.NonNull;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -269,7 +268,7 @@ public class FlashlightControllerImpl implements FlashlightController {
}
};
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("FlashlightController state:");
pw.print(" mCameraId=");
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
index 784a54681484..bce5a159f79c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java
@@ -39,7 +39,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
import com.android.systemui.util.ListenerSet;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
@@ -275,13 +274,12 @@ public abstract class HeadsUpManager extends AlertingNotificationManager {
mUser = user;
}
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("HeadsUpManager state:");
- dumpInternal(fd, pw, args);
+ dumpInternal(pw, args);
}
- protected void dumpInternal(
- @NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ protected void dumpInternal(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.print(" mTouchAcceptanceDelay="); pw.println(mTouchAcceptanceDelay);
pw.print(" mSnoozeLengthMs="); pw.println(mSnoozeLengthMs);
pw.print(" now="); pw.println(mClock.currentTimeMillis());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
index f364e49bb757..bd2123a251c3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
@@ -38,7 +38,6 @@ import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -121,7 +120,7 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof
&& UserManager.get(mContext).isUserAdmin(ActivityManager.getCurrentUser());
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("HotspotController state:");
pw.print(" available="); pw.println(isHotspotSupported());
pw.print(" mHotspotState="); pw.println(stateToString(mHotspotState));
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
index 189dca6c6e03..2f565765158c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
@@ -37,7 +37,6 @@ import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Objects;
@@ -366,7 +365,7 @@ public class KeyguardStateControllerImpl implements KeyguardStateController, Dum
* @param pw Where to dump.
*/
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("KeyguardStateController:");
pw.println(" mSecure: " + mSecure);
pw.println(" mCanDismissLockScreen: " + mCanDismissLockScreen);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
index 3e50acb75401..f26176c15451 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
@@ -119,8 +119,8 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
};
// Register to listen for changes in Settings.Secure settings.
- mSecureSettings.registerContentObserver(
- Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, mContentObserver);
+ mSecureSettings.registerContentObserverForUser(
+ Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, mContentObserver, UserHandle.USER_ALL);
// Register to listen for changes in DeviceConfig settings.
mDeviceConfigProxy.addOnPropertiesChangedListener(
@@ -230,7 +230,8 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
}
private boolean getShowSystemSetting() {
- return mSecureSettings.getInt(Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, 0) == 1;
+ return mSecureSettings.getIntForUser(Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, 0,
+ UserHandle.USER_CURRENT) == 1;
}
private boolean getExperimentStarted() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
index 2d47c8f0b577..b234e9c4e746 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
@@ -30,7 +30,6 @@ import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
@@ -66,7 +65,7 @@ public class NextAlarmControllerImpl extends BroadcastReceiver
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print("mNextAlarm=");
if (mNextAlarm != null) {
pw.println(new Date(mNextAlarm.getTriggerTime()));
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
index 7c13173a7ec4..cc241d924d45 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
@@ -60,7 +60,6 @@ import com.android.systemui.settings.CurrentUserTracker;
import org.xmlpull.v1.XmlPullParserException;
-import java.io.FileDescriptor;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -138,7 +137,7 @@ public class SecurityControllerImpl extends CurrentUserTracker implements Securi
startTracking();
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("SecurityController state:");
pw.print(" mCurrentVpns={");
for (int i = 0 ; i < mCurrentVpns.size(); i++) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index 217a6134fbde..846e07fa0bad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -86,7 +86,6 @@ import com.android.systemui.telephony.TelephonyListenerManager;
import com.android.systemui.user.CreateUserActivity;
import com.android.systemui.util.settings.SecureSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -692,7 +691,7 @@ public class UserSwitcherController implements Dumpable {
};
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("UserSwitcherController state:");
pw.println(" mLastNonGuestUser=" + mLastNonGuestUser);
pw.print(" mUsers.size="); pw.println(mUsers.size());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
index b5ee62df890b..9866389a39d7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
@@ -50,7 +50,6 @@ import com.android.systemui.settings.CurrentUserTracker;
import com.android.systemui.util.Utils;
import com.android.systemui.util.settings.GlobalSettings;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Objects;
@@ -306,7 +305,7 @@ public class ZenModeControllerImpl extends CurrentUserTracker
};
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println("ZenModeControllerImpl:");
pw.println(" mZenMode=" + mZenMode);
pw.println(" mConfig=" + mConfig);
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java
index 31407b1d5cb2..d795d81e44bf 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java
@@ -36,7 +36,6 @@ import com.android.systemui.dump.DumpManager;
import com.google.android.collect.Lists;
import com.google.android.collect.Sets;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashSet;
@@ -278,7 +277,7 @@ public class ThemeOverlayApplier implements Dumpable {
* @inherit
*/
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("mTargetPackageToCategories=" + mTargetPackageToCategories);
pw.println("mCategoryToTargetPackage=" + mCategoryToTargetPackage);
}
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
index c06b8e67c2f8..7920d388c670 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -77,7 +77,6 @@ import com.android.systemui.util.settings.SecureSettings;
import org.json.JSONException;
import org.json.JSONObject;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.HashSet;
@@ -306,8 +305,9 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
Log.d(TAG, "Updating theme setting from "
+ overlayPackageJson + " to " + jsonObject.toString());
}
- mSecureSettings.putString(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
- jsonObject.toString());
+ mSecureSettings.putStringForUser(
+ Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
+ jsonObject.toString(), UserHandle.USER_CURRENT);
}
} catch (JSONException e) {
Log.i(TAG, "Failed to parse THEME_CUSTOMIZATION_OVERLAY_PACKAGES.", e);
@@ -657,7 +657,7 @@ public class ThemeOverlayController extends CoreStartable implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("mSystemColors=" + mCurrentColors);
pw.println("mMainWallpaperColor=" + Integer.toHexString(mMainWallpaperColor));
pw.println("mSecondaryOverlay=" + mSecondaryOverlay);
diff --git a/packages/SystemUI/src/com/android/systemui/toast/ToastFactory.java b/packages/SystemUI/src/com/android/systemui/toast/ToastFactory.java
index 148bffa0000e..26cc6ba38178 100644
--- a/packages/SystemUI/src/com/android/systemui/toast/ToastFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/toast/ToastFactory.java
@@ -28,7 +28,6 @@ import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.ToastPlugin;
import com.android.systemui.shared.plugins.PluginManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -84,7 +83,7 @@ public class ToastFactory implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("ToastFactory:");
pw.println(" mAttachedPlugin=" + mPlugin);
}
diff --git a/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java b/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java
index 98b2ccada4e6..b54d1566eba3 100644
--- a/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java
+++ b/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java
@@ -37,7 +37,6 @@ import com.android.systemui.tracing.nano.SystemUiTraceProto;
import com.google.protobuf.nano.MessageNano;
import java.io.File;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Queue;
@@ -141,7 +140,7 @@ public class ProtoTracer implements
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
pw.println("ProtoTracer:");
pw.print(" "); pw.println("enabled: " + mProtoTracer.isEnabled());
pw.print(" "); pw.println("usagePct: " + mProtoTracer.getBufferUsagePct());
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
index 9fed158563d3..e910f725a4a6 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
@@ -63,7 +63,6 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.concurrency.MessageRouter;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -271,7 +270,7 @@ public class GarbageMonitor implements Dumpable {
}
@Override
- public void dump(@Nullable FileDescriptor fd, PrintWriter pw, @Nullable String[] args) {
+ public void dump(PrintWriter pw, @Nullable String[] args) {
pw.println("GarbageMonitor params:");
pw.println(String.format(" mHeapLimit=%d KB", mHeapLimit));
pw.println(String.format(" GARBAGE_INSPECTION_INTERVAL=%d (%.1f mins)",
@@ -290,7 +289,7 @@ public class GarbageMonitor implements Dumpable {
for (long pid : mPids) {
final ProcessMemInfo pmi = mData.get(pid);
if (pmi != null) {
- pmi.dump(fd, pw, args);
+ pmi.dump(pw, args);
}
}
}
@@ -545,7 +544,7 @@ public class GarbageMonitor implements Dumpable {
}
@Override
- public void dump(@Nullable FileDescriptor fd, PrintWriter pw, @Nullable String[] args) {
+ public void dump(PrintWriter pw, @Nullable String[] args) {
pw.print("{ \"pid\": ");
pw.print(pid);
pw.print(", \"name\": \"");
@@ -589,8 +588,8 @@ public class GarbageMonitor implements Dumpable {
}
@Override
- public void dump(@Nullable FileDescriptor fd, PrintWriter pw, @Nullable String[] args) {
- if (mGarbageMonitor != null) mGarbageMonitor.dump(fd, pw, args);
+ public void dump(PrintWriter pw, @Nullable String[] args) {
+ if (mGarbageMonitor != null) mGarbageMonitor.dump(pw, args);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/LeakDetector.java b/packages/SystemUI/src/com/android/systemui/util/leak/LeakDetector.java
index f215082584a8..95e8273beded 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/LeakDetector.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/LeakDetector.java
@@ -23,7 +23,6 @@ import com.android.internal.util.IndentingPrintWriter;
import com.android.systemui.Dumpable;
import com.android.systemui.dump.DumpManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Collection;
@@ -105,7 +104,7 @@ public class LeakDetector implements Dumpable {
}
@Override
- public void dump(FileDescriptor df, PrintWriter w, String[] args) {
+ public void dump(PrintWriter w, String[] args) {
IndentingPrintWriter pw = new IndentingPrintWriter(w, " ");
pw.println("SYSUI LEAK DETECTOR");
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
index f0a4195beebe..4351afe68339 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
@@ -87,7 +87,7 @@ public class LeakReporter {
w.print("Build: "); w.println(SystemProperties.get("ro.build.description"));
w.println();
w.flush();
- mLeakDetector.dump(fos.getFD(), w, new String[0]);
+ mLeakDetector.dump(w, new String[0]);
w.close();
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeComponent.java
index e8c5db74f494..a002090e7221 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeComponent.java
@@ -20,12 +20,11 @@ import android.content.res.Configuration;
import com.android.systemui.demomode.DemoMode;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
public interface VolumeComponent extends DemoMode {
void dismissNow();
void onConfigurationChanged(Configuration newConfig);
- void dump(FileDescriptor fd, PrintWriter pw, String[] args);
+ void dump(PrintWriter pw, String[] args);
void register();
}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
index 955d616f6729..190e655ae403 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
@@ -38,7 +38,6 @@ import com.android.systemui.qs.tiles.DndTile;
import com.android.systemui.statusbar.policy.ExtensionController;
import com.android.systemui.tuner.TunerService;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -187,7 +186,7 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
}
private void startSettings(Intent intent) {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
index e4c83a543d89..59aa4d6fcb8b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
@@ -71,7 +71,6 @@ import com.android.systemui.util.RingerModeLiveData;
import com.android.systemui.util.RingerModeTracker;
import com.android.systemui.util.concurrency.ThreadFactory;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
@@ -271,7 +270,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
return new MediaSessions(context, looper, callbacks);
}
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.println(VolumeDialogControllerImpl.class.getSimpleName() + " state:");
pw.print(" mDestroyed: "); pw.println(mDestroyed);
pw.print(" mVolumePolicy: "); pw.println(mVolumePolicy);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
index 8007ed3b866a..87fb2a692682 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -26,7 +26,6 @@ import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.qs.tiles.DndTile;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -67,10 +66,10 @@ public class VolumeUI extends CoreStartable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
pw.print("mEnabled="); pw.println(mEnabled);
if (!mEnabled) return;
- mVolumeComponent.dump(fd, pw, args);
+ mVolumeComponent.dump(pw, args);
}
private void setDefaultVolumeController() {
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java
index de25ca981a65..acff8712e92e 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java
@@ -24,6 +24,7 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
+import android.os.UserHandle;
import android.provider.Settings;
import android.service.quickaccesswallet.GetWalletCardsRequest;
import android.service.quickaccesswallet.QuickAccessWalletClient;
@@ -275,10 +276,11 @@ public class QuickAccessWalletController {
}
};
- mSecureSettings.registerContentObserver(
+ mSecureSettings.registerContentObserverForUser(
Settings.Secure.getUriFor(Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT),
false /* notifyForDescendants */,
- mDefaultPaymentAppObserver);
+ mDefaultPaymentAppObserver,
+ UserHandle.USER_ALL);
}
mDefaultPaymentAppChangeEvents++;
}
@@ -294,10 +296,11 @@ public class QuickAccessWalletController {
}
};
- mSecureSettings.registerContentObserver(
+ mSecureSettings.registerContentObserverForUser(
Settings.Secure.getUriFor(QuickAccessWalletClientImpl.SETTING_KEY),
false /* notifyForDescendants */,
- mWalletPreferenceObserver);
+ mWalletPreferenceObserver,
+ UserHandle.USER_ALL);
}
mWalletPreferenceChangeEvents++;
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
index 89c31009a58e..e3cd98996a41 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java
@@ -152,8 +152,7 @@ public class WalletActivity extends LifecycleActivity implements
Log.w(TAG, "Unable to create wallet app intent.");
return;
}
- if (!mKeyguardStateController.isUnlocked()
- && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
+ if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return;
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java
index 77fd2e830873..b7c8b4900e87 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java
@@ -82,6 +82,12 @@ public class WalletCardCarousel extends RecyclerView {
interface OnSelectionListener {
/**
+ * A non-centered card was clicked.
+ * @param position
+ */
+ void onUncenteredClick(int position);
+
+ /**
* The card was moved to the center, thus selecting it.
*/
void onCardSelected(@NonNull WalletCardViewInfo card);
@@ -403,7 +409,7 @@ public class WalletCardCarousel extends RecyclerView {
viewHolder.mCardView.setOnClickListener(
v -> {
if (position != mCenteredAdapterPosition) {
- smoothScrollToPosition(position);
+ mSelectionListener.onUncenteredClick(position);
} else {
mSelectionListener.onCardClicked(cardViewInfo);
}
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
index ba9b638fac99..a062e7b2db50 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
+++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java
@@ -181,6 +181,14 @@ public class WalletScreenController implements
}
@Override
+ public void onUncenteredClick(int position) {
+ if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
+ return;
+ }
+ mCardCarousel.smoothScrollToPosition(position);
+ }
+
+ @Override
public void onCardSelected(@NonNull WalletCardViewInfo card) {
if (mIsDismissed) {
return;
@@ -208,8 +216,7 @@ public class WalletScreenController implements
@Override
public void onCardClicked(@NonNull WalletCardViewInfo cardInfo) {
- if (!mKeyguardStateController.isUnlocked()
- && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
+ if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) {
return;
}
if (!(cardInfo instanceof QAWalletCardViewInfo)
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
index b70220d09749..542a53701529 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java
@@ -85,7 +85,6 @@ import com.android.wm.shell.bubbles.Bubble;
import com.android.wm.shell.bubbles.BubbleEntry;
import com.android.wm.shell.bubbles.Bubbles;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
@@ -797,8 +796,8 @@ public class BubblesManager implements Dumpable {
}
@Override
- public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
- mBubbles.dump(fd, pw, args);
+ public void dump(@NonNull PrintWriter pw, @NonNull String[] args) {
+ mBubbles.dump(pw, args);
}
/** Checks whether bubbles are enabled for this user, handles negative userIds. */
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
index 60567c49bfdf..cddfd4498cfb 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java
@@ -68,7 +68,6 @@ import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.protolog.ShellProtoLogImpl;
import com.android.wm.shell.splitscreen.SplitScreen;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Optional;
@@ -399,7 +398,7 @@ public final class WMShell extends CoreStartable
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
// Handle commands if provided
if (mShellCommandHandler.isPresent()
&& mShellCommandHandler.get().handleCommand(args, pw)) {
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
index 3e1b4d63f36a..fe9e75c4ce00 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
@@ -30,6 +31,7 @@ import static org.mockito.Mockito.when;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.net.Uri;
+import android.os.UserHandle;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import android.view.View;
@@ -250,13 +252,14 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase {
@Test
public void testChangeToDoubleLineClockSetsSmallClock() {
- when(mSecureSettings.getInt(Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1))
+ when(mSecureSettings.getIntForUser(Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1,
+ UserHandle.USER_CURRENT))
.thenReturn(0);
ArgumentCaptor<ContentObserver> observerCaptor =
ArgumentCaptor.forClass(ContentObserver.class);
mController.init();
- verify(mSecureSettings).registerContentObserver(any(Uri.class),
- anyBoolean(), observerCaptor.capture());
+ verify(mSecureSettings).registerContentObserverForUser(any(Uri.class),
+ anyBoolean(), observerCaptor.capture(), eq(UserHandle.USER_ALL));
ContentObserver observer = observerCaptor.getValue();
mExecutor.runAllReady();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt
index 98d57a3c5da8..23129d247ad5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ViewHierarchyAnimatorTest.kt
@@ -21,7 +21,8 @@ import org.junit.runner.RunWith
@SmallTest
@RunWith(AndroidTestingRunner::class)
@TestableLooper.RunWithLooper
-class ViewHierarchyAnimatorTest : SysuiTestCase() {
+class
+ViewHierarchyAnimatorTest : SysuiTestCase() {
companion object {
private const val TEST_DURATION = 1000L
private val TEST_INTERPOLATOR = Interpolators.LINEAR
@@ -522,6 +523,38 @@ class ViewHierarchyAnimatorTest : SysuiTestCase() {
}
@Test
+ fun cleansUpListenersCorrectly() {
+ val firstChild = View(mContext)
+ firstChild.layoutParams = LinearLayout.LayoutParams(50 /* width */, 100 /* height */)
+ rootView.addView(firstChild)
+ val secondChild = View(mContext)
+ secondChild.layoutParams = LinearLayout.LayoutParams(50 /* width */, 100 /* height */)
+ rootView.addView(secondChild)
+ rootView.measure(
+ View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY),
+ View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY)
+ )
+ rootView.layout(0 /* l */, 0 /* t */, 100 /* r */, 100 /* b */)
+
+ val success = ViewHierarchyAnimator.animateNextUpdate(rootView)
+ // Change all bounds.
+ rootView.measure(
+ View.MeasureSpec.makeMeasureSpec(150, View.MeasureSpec.EXACTLY),
+ View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.EXACTLY)
+ )
+ rootView.layout(0 /* l */, 0 /* t */, 150 /* r */, 100 /* b */)
+
+ assertTrue(success)
+ assertNotNull(rootView.getTag(R.id.tag_layout_listener))
+ assertNotNull(firstChild.getTag(R.id.tag_layout_listener))
+ assertNotNull(secondChild.getTag(R.id.tag_layout_listener))
+ endAnimation(rootView)
+ assertNull(rootView.getTag(R.id.tag_layout_listener))
+ assertNull(firstChild.getTag(R.id.tag_layout_listener))
+ assertNull(secondChild.getTag(R.id.tag_layout_listener))
+ }
+
+ @Test
fun doesNotAnimateInvisibleViews() {
rootView.layout(10 /* l */, 10 /* t */, 50 /* r */, 50 /* b */)
@@ -625,27 +658,6 @@ class ViewHierarchyAnimatorTest : SysuiTestCase() {
}
@Test
- fun doesNotAnimateExcludedBounds() {
- rootView.layout(10 /* l */, 10 /* t */, 50 /* r */, 50 /* b */)
-
- val success = ViewHierarchyAnimator.animate(
- rootView,
- bounds = setOf(ViewHierarchyAnimator.Bound.LEFT, ViewHierarchyAnimator.Bound.TOP),
- interpolator = TEST_INTERPOLATOR
- )
- // Change all bounds.
- rootView.layout(0 /* l */, 20 /* t */, 70 /* r */, 80 /* b */)
-
- assertTrue(success)
- assertNotNull(rootView.getTag(R.id.tag_animator))
- advanceAnimation(rootView, 0.5f)
- checkBounds(rootView, l = 5, t = 15, r = 70, b = 80)
- endAnimation(rootView)
- assertNull(rootView.getTag(R.id.tag_animator))
- checkBounds(rootView, l = 0, t = 20, r = 70, b = 80)
- }
-
- @Test
fun stopsAnimatingAfterSingleLayout() {
rootView.layout(10 /* l */, 10 /* t */, 50 /* r */, 50 /* b */)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
index d99a5531d353..acb5622c9790 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
@@ -199,6 +199,20 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
}
@Test
+ public void testIgnoreActionOutside() {
+ MotionEvent outside = MotionEvent.obtain(0, 0, MotionEvent.ACTION_OUTSIDE, 0, 0, 0);
+ MotionEvent up = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0);
+
+ // Nothing passed initially. The outside event will be completely ignored.
+ mFalsingCollector.onTouchEvent(outside);
+ verify(mFalsingDataProvider, never()).onMotionEvent(any(MotionEvent.class));
+
+ // Up event flushes, and the outside event isn't passed through.
+ mFalsingCollector.onTouchEvent(up);
+ verify(mFalsingDataProvider).onMotionEvent(up);
+ }
+
+ @Test
public void testAvoidUnlocked() {
MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0);
MotionEvent up = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java
index 87d1b6b8cb30..48b5c62da38f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java
@@ -23,7 +23,6 @@ import android.net.Uri;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.plugins.FalsingManager;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@@ -132,7 +131,7 @@ public class FalsingManagerFake implements FalsingManager {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
}
@Override
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt
index bbae5dca10c1..4ed5649c9c50 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlActionCoordinatorImplTest.kt
@@ -21,6 +21,7 @@ import android.content.SharedPreferences
import android.database.ContentObserver
import android.net.Uri
import android.os.Handler
+import android.os.UserHandle
import android.provider.Settings
import android.test.suitebuilder.annotation.SmallTest
import android.testing.AndroidTestingRunner
@@ -40,6 +41,7 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Answers
+import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.`when`
@@ -97,7 +99,8 @@ class ControlActionCoordinatorImplTest : SysuiTestCase() {
`when`(secureSettings.getUriFor(Settings.Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS))
.thenReturn(Settings.Secure
.getUriFor(Settings.Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS))
- `when`(secureSettings.getInt(Settings.Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS, 0))
+ `when`(secureSettings.getIntForUser(Settings.Secure.LOCKSCREEN_ALLOW_TRIVIAL_CONTROLS,
+ 0, UserHandle.USER_CURRENT))
.thenReturn(1)
coordinator = spy(ControlActionCoordinatorImpl(
@@ -125,8 +128,8 @@ class ControlActionCoordinatorImplTest : SysuiTestCase() {
`when`(pref.getInt(DeviceControlsControllerImpl.PREFS_SETTINGS_DIALOG_ATTEMPTS, 0))
.thenReturn(2)
- verify(secureSettings).registerContentObserver(any(Uri::class.java),
- anyBoolean(), any(ContentObserver::class.java))
+ verify(secureSettings).registerContentObserverForUser(any(Uri::class.java),
+ anyBoolean(), any(ContentObserver::class.java), anyInt())
`when`(cvh.cws.ci.controlId).thenReturn(ID)
`when`(cvh.cws.control?.isAuthRequired()).thenReturn(true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
index c415c1fabdf3..77f451f61c3c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
@@ -137,7 +137,8 @@ class ControlsComponentTest : SysuiTestCase() {
`when`(lockPatternUtils.getStrongAuthForUser(anyInt()))
.thenReturn(STRONG_AUTH_NOT_REQUIRED)
`when`(keyguardStateController.isUnlocked()).thenReturn(false)
- `when`(secureSettings.getInt(eq(Settings.Secure.LOCKSCREEN_SHOW_CONTROLS), anyInt()))
+ `when`(secureSettings.getIntForUser(eq(Settings.Secure.LOCKSCREEN_SHOW_CONTROLS),
+ anyInt(), anyInt()))
.thenReturn(1)
val component = setupComponent(true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/dump/DumpHandlerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/dump/DumpHandlerTest.kt
index 57fbbc95efba..871c3a839c7a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/dump/DumpHandlerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/dump/DumpHandlerTest.kt
@@ -28,7 +28,6 @@ import org.mockito.Mockito.anyInt
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
-import java.io.FileDescriptor
import java.io.PrintWriter
@SmallTest
@@ -40,8 +39,6 @@ class DumpHandlerTest : SysuiTestCase() {
private lateinit var logBufferEulogizer: LogBufferEulogizer
@Mock
- private lateinit var fd: FileDescriptor
- @Mock
private lateinit var pw: PrintWriter
@Mock
@@ -76,15 +73,14 @@ class DumpHandlerTest : SysuiTestCase() {
// WHEN some of them are dumped explicitly
val args = arrayOf("dumpable1", "dumpable3", "buffer2")
- dumpHandler.dump(fd, pw, args)
+ dumpHandler.dump(pw, args)
// THEN only the requested ones have their dump() method called
- verify(dumpable1).dump(fd, pw, args)
+ verify(dumpable1).dump(pw, args)
verify(dumpable2, never()).dump(
- any(FileDescriptor::class.java),
any(PrintWriter::class.java),
any(Array<String>::class.java))
- verify(dumpable3).dump(fd, pw, args)
+ verify(dumpable3).dump(pw, args)
verify(buffer1, never()).dump(any(PrintWriter::class.java), anyInt())
verify(buffer2).dump(pw, 0)
}
@@ -96,10 +92,10 @@ class DumpHandlerTest : SysuiTestCase() {
// WHEN that module is dumped
val args = arrayOf("dumpable1")
- dumpHandler.dump(fd, pw, args)
+ dumpHandler.dump(pw, args)
// THEN its dump() method is called
- verify(dumpable1).dump(fd, pw, args)
+ verify(dumpable1).dump(pw, args)
}
@Test
@@ -113,12 +109,12 @@ class DumpHandlerTest : SysuiTestCase() {
// WHEN a critical dump is requested
val args = arrayOf("--dump-priority", "CRITICAL")
- dumpHandler.dump(fd, pw, args)
+ dumpHandler.dump(pw, args)
// THEN all modules are dumped (but no buffers)
- verify(dumpable1).dump(fd, pw, args)
- verify(dumpable2).dump(fd, pw, args)
- verify(dumpable3).dump(fd, pw, args)
+ verify(dumpable1).dump(pw, args)
+ verify(dumpable2).dump(pw, args)
+ verify(dumpable3).dump(pw, args)
verify(buffer1, never()).dump(any(PrintWriter::class.java), anyInt())
verify(buffer2, never()).dump(any(PrintWriter::class.java), anyInt())
}
@@ -134,19 +130,16 @@ class DumpHandlerTest : SysuiTestCase() {
// WHEN a normal dump is requested
val args = arrayOf("--dump-priority", "NORMAL")
- dumpHandler.dump(fd, pw, args)
+ dumpHandler.dump(pw, args)
// THEN all buffers are dumped (but no modules)
verify(dumpable1, never()).dump(
- any(FileDescriptor::class.java),
any(PrintWriter::class.java),
any(Array<String>::class.java))
verify(dumpable2, never()).dump(
- any(FileDescriptor::class.java),
any(PrintWriter::class.java),
any(Array<String>::class.java))
verify(dumpable3, never()).dump(
- any(FileDescriptor::class.java),
any(PrintWriter::class.java),
any(Array<String>::class.java))
verify(buffer1).dump(pw, 0)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt
index 50b779cb6bf5..6626bbe69706 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt
@@ -26,7 +26,6 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.eq
-import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.settings.SecureSettings
@@ -34,6 +33,7 @@ import com.google.common.truth.Truth.assertThat
import org.junit.Assert
import org.junit.Before
import org.junit.Test
+import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.Mockito.anyBoolean
import org.mockito.Mockito.anyString
@@ -321,7 +321,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() {
inOrder(mFlagManager, mSecureSettings).apply {
verify(mFlagManager, times(numReads)).readFlagValue(eq(id), any<FlagSerializer<*>>())
verify(mFlagManager).idToSettingsKey(eq(id))
- verify(mSecureSettings).putString(eq("key-$id"), eq(data))
+ verify(mSecureSettings).putStringForUser(eq("key-$id"), eq(data), anyInt())
verify(mFlagManager).dispatchListenersAndMaybeRestart(eq(id), any())
}.verifyNoMoreInteractions()
verifyNoMoreInteractions(mFlagManager, mSecureSettings)
@@ -379,7 +379,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() {
private fun dumpToString(): String {
val sw = StringWriter()
val pw = PrintWriter(sw)
- mFeatureFlagsDebug.dump(mock(), pw, emptyArray<String>())
+ mFeatureFlagsDebug.dump(pw, emptyArray<String>())
pw.flush()
return sw.toString()
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelperTest.java
index 1171bd299c1f..eb998cc588fd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/hdmi/HdmiCecSetMenuLanguageHelperTest.java
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.os.UserHandle;
import android.provider.Settings;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -53,8 +54,9 @@ public class HdmiCecSetMenuLanguageHelperTest extends SysuiTestCase {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- when(mSecureSettings.getString(
- Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST)).thenReturn(null);
+ when(mSecureSettings.getStringForUser(
+ Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST,
+ UserHandle.USER_CURRENT)).thenReturn(null);
mHdmiCecSetMenuLanguageHelper =
new HdmiCecSetMenuLanguageHelper(mExecutor, mSecureSettings);
}
@@ -84,8 +86,9 @@ public class HdmiCecSetMenuLanguageHelperTest extends SysuiTestCase {
mHdmiCecSetMenuLanguageHelper.setLocale("de");
mHdmiCecSetMenuLanguageHelper.declineLocale();
assertThat(mHdmiCecSetMenuLanguageHelper.isLocaleDenylisted()).isEqualTo(true);
- verify(mSecureSettings).putString(
- Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, "de");
+ verify(mSecureSettings).putStringForUser(
+ Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, "de",
+ UserHandle.USER_CURRENT);
}
@Test
@@ -93,12 +96,14 @@ public class HdmiCecSetMenuLanguageHelperTest extends SysuiTestCase {
mHdmiCecSetMenuLanguageHelper.setLocale("de");
mHdmiCecSetMenuLanguageHelper.declineLocale();
assertThat(mHdmiCecSetMenuLanguageHelper.isLocaleDenylisted()).isEqualTo(true);
- verify(mSecureSettings).putString(
- Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, "de");
+ verify(mSecureSettings).putStringForUser(
+ Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, "de",
+ UserHandle.USER_CURRENT);
mHdmiCecSetMenuLanguageHelper.setLocale("pl");
mHdmiCecSetMenuLanguageHelper.declineLocale();
assertThat(mHdmiCecSetMenuLanguageHelper.isLocaleDenylisted()).isEqualTo(true);
- verify(mSecureSettings).putString(
- Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, "de,pl");
+ verify(mSecureSettings).putStringForUser(
+ Settings.Secure.HDMI_CEC_SET_MENU_LANGUAGE_DENYLIST, "de,pl",
+ UserHandle.USER_CURRENT);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ScreenLifecycleTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ScreenLifecycleTest.java
index 53d0dd8f0631..f46d58d679b5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ScreenLifecycleTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ScreenLifecycleTest.java
@@ -96,6 +96,6 @@ public class ScreenLifecycleTest extends SysuiTestCase {
@Test
public void dump() throws Exception {
- mScreen.dump(null, new PrintWriter(new ByteArrayOutputStream()), new String[0]);
+ mScreen.dump(new PrintWriter(new ByteArrayOutputStream()), new String[0]);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java
index fd282ccd2a74..f32d76bb601e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java
@@ -127,7 +127,7 @@ public class WakefulnessLifecycleTest extends SysuiTestCase {
@Test
public void dump() throws Exception {
- mWakefulness.dump(null, new PrintWriter(new ByteArrayOutputStream()), new String[0]);
+ mWakefulness.dump(new PrintWriter(new ByteArrayOutputStream()), new String[0]);
}
@Test(expected = NullPointerException.class)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
index 538a9c763438..dc48eb041c07 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
@@ -53,6 +53,7 @@ import com.android.systemui.util.animation.TransitionLayout
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.KotlinArgumentCaptor
import com.android.systemui.util.mockito.eq
+import com.android.systemui.util.mockito.withArgCaptor
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import dagger.Lazy
@@ -68,6 +69,7 @@ import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
+import org.mockito.Mockito.reset
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
@@ -91,6 +93,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
private lateinit var player: MediaControlPanel
private lateinit var bgExecutor: FakeExecutor
+ private lateinit var mainExecutor: FakeExecutor
@Mock private lateinit var activityStarter: ActivityStarter
@Mock private lateinit var broadcastSender: BroadcastSender
@@ -116,8 +119,6 @@ public class MediaControlPanelTest : SysuiTestCase() {
private lateinit var seamlessIcon: ImageView
private lateinit var seamlessText: TextView
private lateinit var seekBar: SeekBar
- private lateinit var elapsedTimeView: TextView
- private lateinit var totalTimeView: TextView
private lateinit var action0: ImageButton
private lateinit var action1: ImageButton
private lateinit var action2: ImageButton
@@ -126,6 +127,8 @@ public class MediaControlPanelTest : SysuiTestCase() {
private lateinit var actionPlayPause: ImageButton
private lateinit var actionNext: ImageButton
private lateinit var actionPrev: ImageButton
+ private lateinit var scrubbingElapsedTimeView: TextView
+ private lateinit var scrubbingTotalTimeView: TextView
private lateinit var actionsTopBarrier: Barrier
@Mock private lateinit var longPressText: TextView
@Mock private lateinit var handler: Handler
@@ -148,12 +151,25 @@ public class MediaControlPanelTest : SysuiTestCase() {
@Before
fun setUp() {
bgExecutor = FakeExecutor(FakeSystemClock())
+ mainExecutor = FakeExecutor(FakeSystemClock())
whenever(mediaViewController.expandedLayout).thenReturn(expandedSet)
whenever(mediaViewController.collapsedLayout).thenReturn(collapsedSet)
- player = MediaControlPanel(context, bgExecutor, activityStarter, broadcastSender,
- mediaViewController, seekBarViewModel, Lazy { mediaDataManager },
- mediaOutputDialogFactory, mediaCarouselController, falsingManager, clock, logger)
+ player = MediaControlPanel(
+ context,
+ bgExecutor,
+ mainExecutor,
+ activityStarter,
+ broadcastSender,
+ mediaViewController,
+ seekBarViewModel,
+ Lazy { mediaDataManager },
+ mediaOutputDialogFactory,
+ mediaCarouselController,
+ falsingManager,
+ clock,
+ logger
+ )
whenever(seekBarViewModel.progress).thenReturn(seekBarData)
// Set up mock views for the players
@@ -167,8 +183,6 @@ public class MediaControlPanelTest : SysuiTestCase() {
seamlessIcon = ImageView(context)
seamlessText = TextView(context)
seekBar = SeekBar(context)
- elapsedTimeView = TextView(context)
- totalTimeView = TextView(context)
settings = ImageButton(context)
cancel = View(context)
cancelText = TextView(context)
@@ -184,6 +198,10 @@ public class MediaControlPanelTest : SysuiTestCase() {
actionPlayPause = ImageButton(context).also { it.setId(R.id.actionPlayPause) }
actionPrev = ImageButton(context).also { it.setId(R.id.actionPrev) }
actionNext = ImageButton(context).also { it.setId(R.id.actionNext) }
+ scrubbingElapsedTimeView =
+ TextView(context).also { it.setId(R.id.media_scrubbing_elapsed_time) }
+ scrubbingTotalTimeView =
+ TextView(context).also { it.setId(R.id.media_scrubbing_total_time) }
actionsTopBarrier =
Barrier(context).also {
@@ -242,6 +260,8 @@ public class MediaControlPanelTest : SysuiTestCase() {
whenever(viewHolder.seamlessIcon).thenReturn(seamlessIcon)
whenever(viewHolder.seamlessText).thenReturn(seamlessText)
whenever(viewHolder.seekBar).thenReturn(seekBar)
+ whenever(viewHolder.scrubbingElapsedTimeView).thenReturn(scrubbingElapsedTimeView)
+ whenever(viewHolder.scrubbingTotalTimeView).thenReturn(scrubbingTotalTimeView)
// Transition View
whenever(view.parent).thenReturn(transitionParent)
@@ -366,6 +386,86 @@ public class MediaControlPanelTest : SysuiTestCase() {
}
@Test
+ fun bind_notScrubbing_scrubbingViewsGone() {
+ val icon = context.getDrawable(android.R.drawable.ic_media_play)
+ val semanticActions = MediaButton(
+ prevOrCustom = MediaAction(icon, {}, "prev", null),
+ nextOrCustom = MediaAction(icon, {}, "next", null),
+ )
+ val state = mediaData.copy(semanticActions = semanticActions)
+
+ player.attachPlayer(viewHolder)
+ player.bindPlayer(state, PACKAGE)
+
+ verify(expandedSet).setVisibility(R.id.media_scrubbing_elapsed_time, ConstraintSet.GONE)
+ verify(expandedSet).setVisibility(R.id.media_scrubbing_total_time, ConstraintSet.GONE)
+ }
+
+ @Test
+ fun setIsScrubbing_noSemanticActions_viewsNotChanged() {
+ val state = mediaData.copy(semanticActions = null)
+ player.attachPlayer(viewHolder)
+ player.bindPlayer(state, PACKAGE)
+ reset(expandedSet)
+
+ val listener = getScrubbingChangeListener()
+
+ listener.onScrubbingChanged(true)
+ mainExecutor.runAllReady()
+
+ verify(expandedSet, never()).setVisibility(eq(R.id.media_scrubbing_elapsed_time), anyInt())
+ verify(expandedSet, never()).setVisibility(eq(R.id.media_scrubbing_total_time), anyInt())
+ }
+
+ @Test
+ fun setIsScrubbing_true_scrubbingViewsShownAndPrevNextHiddenOnlyInExpanded() {
+ val icon = context.getDrawable(android.R.drawable.ic_media_play)
+ val semanticActions = MediaButton(
+ prevOrCustom = MediaAction(icon, {}, "prev", null),
+ nextOrCustom = MediaAction(icon, {}, "next", null),
+ )
+ val state = mediaData.copy(semanticActions = semanticActions)
+ player.attachPlayer(viewHolder)
+ player.bindPlayer(state, PACKAGE)
+ reset(expandedSet)
+
+ getScrubbingChangeListener().onScrubbingChanged(true)
+ mainExecutor.runAllReady()
+
+ // Only in expanded, we should show the scrubbing times and hide prev+next
+ verify(expandedSet).setVisibility(R.id.media_scrubbing_elapsed_time, ConstraintSet.VISIBLE)
+ verify(expandedSet).setVisibility(R.id.media_scrubbing_total_time, ConstraintSet.VISIBLE)
+ verify(expandedSet).setVisibility(R.id.actionPrev, ConstraintSet.GONE)
+ verify(expandedSet).setVisibility(R.id.actionNext, ConstraintSet.GONE)
+ }
+
+ @Test
+ fun setIsScrubbing_trueThenFalse_scrubbingTimeGoneAtEnd() {
+ val icon = context.getDrawable(android.R.drawable.ic_media_play)
+ val semanticActions = MediaButton(
+ prevOrCustom = MediaAction(icon, {}, "prev", null),
+ nextOrCustom = MediaAction(icon, {}, "next", null),
+ )
+ val state = mediaData.copy(semanticActions = semanticActions)
+
+ player.attachPlayer(viewHolder)
+ player.bindPlayer(state, PACKAGE)
+
+ getScrubbingChangeListener().onScrubbingChanged(true)
+ mainExecutor.runAllReady()
+ reset(expandedSet)
+
+ getScrubbingChangeListener().onScrubbingChanged(false)
+ mainExecutor.runAllReady()
+
+ // Only in expanded, we should hide the scrubbing times and show prev+next
+ verify(expandedSet).setVisibility(R.id.media_scrubbing_elapsed_time, ConstraintSet.GONE)
+ verify(expandedSet).setVisibility(R.id.media_scrubbing_total_time, ConstraintSet.GONE)
+ verify(expandedSet).setVisibility(R.id.actionPrev, ConstraintSet.VISIBLE)
+ verify(expandedSet).setVisibility(R.id.actionNext, ConstraintSet.VISIBLE)
+ }
+
+ @Test
fun bindNotificationActions() {
val icon = context.getDrawable(android.R.drawable.ic_media_play)
val bg = context.getDrawable(R.drawable.qs_media_round_button_background)
@@ -780,4 +880,7 @@ public class MediaControlPanelTest : SysuiTestCase() {
verify(logger).logSeek(anyInt(), eq(PACKAGE), eq(instanceId))
}
+
+ private fun getScrubbingChangeListener(): SeekBarViewModel.ScrubbingChangeListener =
+ withArgCaptor { verify(seekBarViewModel).setScrubbingChangeListener(capture()) }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt
index e719e841d9a0..c48d84698b3b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarObserverTest.kt
@@ -46,8 +46,8 @@ class SeekBarObserverTest : SysuiTestCase() {
@Mock private lateinit var mockHolder: MediaViewHolder
@Mock private lateinit var mockSquigglyProgress: SquigglyProgress
private lateinit var seekBarView: SeekBar
- private lateinit var elapsedTimeView: TextView
- private lateinit var totalTimeView: TextView
+ private lateinit var scrubbingElapsedTimeView: TextView
+ private lateinit var scrubbingTotalTimeView: TextView
@JvmField @Rule val mockitoRule = MockitoJUnit.rule()
@@ -60,9 +60,11 @@ class SeekBarObserverTest : SysuiTestCase() {
seekBarView = SeekBar(context)
seekBarView.progressDrawable = mockSquigglyProgress
- elapsedTimeView = TextView(context)
- totalTimeView = TextView(context)
+ scrubbingElapsedTimeView = TextView(context)
+ scrubbingTotalTimeView = TextView(context)
whenever(mockHolder.seekBar).thenReturn(seekBarView)
+ whenever(mockHolder.scrubbingElapsedTimeView).thenReturn(scrubbingElapsedTimeView)
+ whenever(mockHolder.scrubbingTotalTimeView).thenReturn(scrubbingTotalTimeView)
observer = SeekBarObserver(mockHolder)
}
@@ -167,4 +169,24 @@ class SeekBarObserverTest : SysuiTestCase() {
// THEN progress drawable is not animating
verify(mockSquigglyProgress).animate = false
}
+
+ @Test
+ fun seekBarProgress_enabled_timeViewsHaveTime() {
+ val data = SeekBarViewModel.Progress(enabled = true, true, true, false, 3000, 120000)
+
+ observer.onChanged(data)
+
+ assertThat(scrubbingElapsedTimeView.text).isEqualTo("00:03")
+ assertThat(scrubbingTotalTimeView.text).isEqualTo("02:00")
+ }
+
+ @Test
+ fun seekBarProgress_disabled_timeViewsEmpty() {
+ val data = SeekBarViewModel.Progress(enabled = false, true, true, false, 3000, 120000)
+
+ observer.onChanged(data)
+
+ assertThat(scrubbingElapsedTimeView.text).isEqualTo("")
+ assertThat(scrubbingTotalTimeView.text).isEqualTo("")
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt
index 20f5e4c19402..afc9c81ff479 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt
@@ -324,6 +324,42 @@ public class SeekBarViewModelTest : SysuiTestCase() {
}
@Test
+ fun seekStarted_listenerNotified() {
+ var isScrubbing: Boolean? = null
+ val listener = object : SeekBarViewModel.ScrubbingChangeListener {
+ override fun onScrubbingChanged(scrubbing: Boolean) {
+ isScrubbing = scrubbing
+ }
+ }
+ viewModel.setScrubbingChangeListener(listener)
+
+ viewModel.onSeekStarting()
+ fakeExecutor.runAllReady()
+
+ assertThat(isScrubbing).isTrue()
+ }
+
+ @Test
+ fun seekEnded_listenerNotified() {
+ var isScrubbing: Boolean? = null
+ val listener = object : SeekBarViewModel.ScrubbingChangeListener {
+ override fun onScrubbingChanged(scrubbing: Boolean) {
+ isScrubbing = scrubbing
+ }
+ }
+ viewModel.setScrubbingChangeListener(listener)
+
+ // Start seeking
+ viewModel.onSeekStarting()
+ fakeExecutor.runAllReady()
+ // End seeking
+ viewModel.onSeek(15L)
+ fakeExecutor.runAllReady()
+
+ assertThat(isScrubbing).isFalse()
+ }
+
+ @Test
@Ignore
fun onProgressChangedFromUser() {
// WHEN user starts dragging the seek bar
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java
index 3f45ff321013..4dbf3d8cde1b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerBaseTest.java
@@ -24,7 +24,6 @@ import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
@@ -59,7 +58,6 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Collections;
@@ -209,16 +207,15 @@ public class QSPanelControllerBaseTest extends SysuiTestCase {
String mockTileViewString = "Mock Tile View";
String mockTileString = "Mock Tile";
doAnswer(invocation -> {
- PrintWriter pw = invocation.getArgument(1);
+ PrintWriter pw = invocation.getArgument(0);
pw.println(mockTileString);
return null;
- }).when(mQSTile).dump(any(FileDescriptor.class), any(PrintWriter.class),
- any(String[].class));
+ }).when(mQSTile).dump(any(PrintWriter.class), any(String[].class));
when(mQSTileView.toString()).thenReturn(mockTileViewString);
StringWriter w = new StringWriter();
PrintWriter pw = new PrintWriter(w);
- mController.dump(mock(FileDescriptor.class), pw, new String[]{});
+ mController.dump(pw, new String[]{});
String expected = "TestableQSPanelControllerBase:\n"
+ " Tile records:\n"
+ " " + mockTileString + "\n"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
index e67d37ac3c72..8cf3fe274848 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
@@ -77,7 +77,6 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
@@ -262,7 +261,7 @@ public class QSTileHostTest extends SysuiTestCase {
mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "spec1,spec2");
StringWriter w = new StringWriter();
PrintWriter pw = new PrintWriter(w);
- mQSTileHost.dump(mock(FileDescriptor.class), pw, new String[]{});
+ mQSTileHost.dump(pw, new String[]{});
String output = "QSTileHost:\n"
+ TestTile1.class.getSimpleName() + ":\n"
+ " " + MOCK_STATE_STRING + "\n"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
index 1e5acde8bef5..c88ceac458ee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
@@ -45,6 +45,7 @@ import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.os.Handler;
+import android.os.UserHandle;
import android.service.quickaccesswallet.GetWalletCardsError;
import android.service.quickaccesswallet.GetWalletCardsResponse;
import android.service.quickaccesswallet.QuickAccessWalletClient;
@@ -186,7 +187,8 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
public void testIsAvailable_qawFeatureAvailable() {
when(mPackageManager.hasSystemFeature(FEATURE_NFC_HOST_CARD_EMULATION)).thenReturn(true);
when(mPackageManager.hasSystemFeature("org.chromium.arc")).thenReturn(false);
- when(mSecureSettings.getString(NFC_PAYMENT_DEFAULT_COMPONENT)).thenReturn("Component");
+ when(mSecureSettings.getStringForUser(NFC_PAYMENT_DEFAULT_COMPONENT,
+ UserHandle.USER_CURRENT)).thenReturn("Component");
assertTrue(mTile.isAvailable());
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java
index ca8a20acaa83..2fe7c075bc18 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/connectivity/NetworkControllerBaseTest.java
@@ -148,7 +148,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase {
// Print out mNetworkController state if the test fails.
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
- mNetworkController.dump(null, pw, null);
+ mNetworkController.dump(pw, null);
pw.flush();
Log.d(TAG, sw.toString());
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
index dd0c7589d7a1..7638452eaf90 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
@@ -1451,6 +1451,25 @@ public class ShadeListBuilderTest extends SysuiTestCase {
}
@Test
+ public void testGroupWithChildRemovedByFilterIsPrunedWhenOtherwiseEmpty() {
+ // GIVEN a group with only one child
+ addGroupSummary(0, PACKAGE_1, GROUP_1);
+ addGroupChild(1, PACKAGE_1, GROUP_1);
+ dispatchBuild();
+ // NOTICE that the group is pruned and the child is moved to the top level
+ verifyBuiltList(
+ notif(1) // group with only one child is promoted
+ );
+
+ // WHEN the only child is filtered
+ mFinalizeFilter.mIndicesToFilter.add(1);
+ dispatchBuild();
+
+ // THEN the new list should be empty (the group summary should not be promoted)
+ verifyBuiltList();
+ }
+
+ @Test
public void testFinalizeFilteredSummaryPromotesChildren() {
// GIVEN a group with only one child was already drawn
addGroupSummary(0, PACKAGE_1, GROUP_1);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesTest.java
index 91a1d7fffafc..84edabdaa302 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesTest.java
@@ -786,7 +786,7 @@ public class CentralSurfacesTest extends SysuiTestCase {
@Test
public void testDump_DoesNotCrash() {
- mCentralSurfaces.dump(null, new PrintWriter(new ByteArrayOutputStream()), null);
+ mCentralSurfaces.dump(new PrintWriter(new ByteArrayOutputStream()), null);
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java
index 7ef656c780a6..8f3df09d913d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java
@@ -947,6 +947,15 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
verify(mKeyguardStatusBarViewController).setAlpha(statusBarAlpha);
}
+ @Test
+ public void testQsToBeImmediatelyExpandedInSplitShade() {
+ enableSplitShade(/* enabled= */ true);
+
+ mNotificationPanelViewController.onTrackingStarted();
+
+ assertThat(mNotificationPanelViewController.mQsExpandImmediate).isTrue();
+ }
+
private void triggerPositionClockAndNotifications() {
mNotificationPanelViewController.closeQs();
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt
index e2fabbd1c270..003245298fa9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt
@@ -50,6 +50,10 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
const val BUTTONS_NAVIGATION = WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON
const val NOTIFICATIONS_MARGIN = 50
const val SCRIM_MARGIN = 10
+ const val FOOTER_ACTIONS_INSET = 2
+ const val FOOTER_ACTIONS_PADDING = 2
+ const val FOOTER_ACTIONS_OFFSET = FOOTER_ACTIONS_INSET + FOOTER_ACTIONS_PADDING
+ const val QS_PADDING_OFFSET = SCRIM_MARGIN + FOOTER_ACTIONS_OFFSET
}
@Mock
@@ -95,6 +99,8 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
overrideResource(R.dimen.split_shade_notifications_scrim_margin_bottom, SCRIM_MARGIN)
overrideResource(R.dimen.notification_panel_margin_bottom, NOTIFICATIONS_MARGIN)
overrideResource(R.bool.config_use_split_notification_shade, false)
+ overrideResource(R.dimen.qs_footer_actions_bottom_padding, FOOTER_ACTIONS_PADDING)
+ overrideResource(R.dimen.qs_footer_action_inset, FOOTER_ACTIONS_INSET)
whenever(navigationModeController.addListener(navigationModeCaptor.capture()))
.thenReturn(GESTURES_NAVIGATION)
doNothing().`when`(overviewProxyService).addCallback(taskbarVisibilityCaptor.capture())
@@ -119,14 +125,14 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
insets = windowInsets().withStableBottom())
then(expectedContainerPadding = 0, // taskbar should disappear when shade is expanded
expectedNotificationsMargin = NOTIFICATIONS_MARGIN,
- expectedQsPadding = NOTIFICATIONS_MARGIN - SCRIM_MARGIN)
+ expectedQsPadding = NOTIFICATIONS_MARGIN - QS_PADDING_OFFSET)
given(taskbarVisible = true,
navigationMode = BUTTONS_NAVIGATION,
insets = windowInsets().withStableBottom())
then(expectedContainerPadding = STABLE_INSET_BOTTOM,
expectedNotificationsMargin = NOTIFICATIONS_MARGIN,
- expectedQsPadding = NOTIFICATIONS_MARGIN - SCRIM_MARGIN)
+ expectedQsPadding = NOTIFICATIONS_MARGIN - QS_PADDING_OFFSET)
}
@Test
@@ -138,14 +144,14 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
navigationMode = GESTURES_NAVIGATION,
insets = windowInsets().withStableBottom())
then(expectedContainerPadding = 0,
- expectedQsPadding = NOTIFICATIONS_MARGIN - SCRIM_MARGIN)
+ expectedQsPadding = NOTIFICATIONS_MARGIN - QS_PADDING_OFFSET)
given(taskbarVisible = false,
navigationMode = BUTTONS_NAVIGATION,
insets = windowInsets().withStableBottom())
then(expectedContainerPadding = 0, // qs goes full height as it's not obscuring nav buttons
expectedNotificationsMargin = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN,
- expectedQsPadding = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN - SCRIM_MARGIN)
+ expectedQsPadding = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN - QS_PADDING_OFFSET)
}
@Test
@@ -156,14 +162,14 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
navigationMode = GESTURES_NAVIGATION,
insets = windowInsets().withCutout())
then(expectedContainerPadding = CUTOUT_HEIGHT,
- expectedQsPadding = NOTIFICATIONS_MARGIN - SCRIM_MARGIN)
+ expectedQsPadding = NOTIFICATIONS_MARGIN - QS_PADDING_OFFSET)
given(taskbarVisible = false,
navigationMode = BUTTONS_NAVIGATION,
insets = windowInsets().withCutout().withStableBottom())
then(expectedContainerPadding = 0,
expectedNotificationsMargin = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN,
- expectedQsPadding = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN - SCRIM_MARGIN)
+ expectedQsPadding = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN - QS_PADDING_OFFSET)
}
@Test
@@ -365,7 +371,7 @@ class NotificationQSContainerControllerTest : SysuiTestCase() {
container.addView(newViewWithId(View.NO_ID))
val controller = NotificationsQSContainerController(container, navigationModeController,
overviewProxyService, featureFlags, delayableExecutor)
- controller.updateResources()
+ controller.updateConstraints()
assertThat(container.getChildAt(0).id).isEqualTo(1)
assertThat(container.getChildAt(1).id).isNotEqualTo(View.NO_ID)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
index 497f7fba2dbf..98397fb01b6b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragmentTest.java
@@ -29,6 +29,7 @@ import android.app.Fragment;
import android.app.StatusBarManager;
import android.content.Context;
import android.os.Bundle;
+import android.os.UserHandle;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
@@ -331,7 +332,8 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest {
String str = mContext.getString(com.android.internal.R.string.status_bar_volume);
// GIVEN the setting is ON
- when(mSecureSettings.getInt(Settings.Secure.STATUS_BAR_SHOW_VIBRATE_ICON, 0))
+ when(mSecureSettings.getIntForUser(Settings.Secure.STATUS_BAR_SHOW_VIBRATE_ICON, 0,
+ UserHandle.USER_CURRENT))
.thenReturn(1);
// WHEN CollapsedStatusBarFragment builds the blocklist
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java
index b714df50106e..fec2123b304a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java
@@ -67,7 +67,7 @@ public class BatteryControllerTest extends SysuiTestCase {
private MockitoSession mMockitoSession;
@Before
- public void setUp() {
+ public void setUp() throws IllegalStateException {
MockitoAnnotations.initMocks(this);
mMockitoSession = mockitoSession()
.initMocks(this)
@@ -81,6 +81,7 @@ public class BatteryControllerTest extends SysuiTestCase {
mDemoModeController,
new Handler(),
new Handler());
+ // Can throw if updateEstimate is called on the main thread
mBatteryController.init();
}
@@ -185,4 +186,14 @@ public class BatteryControllerTest extends SysuiTestCase {
Assert.assertNull(mBatteryController.getLastPowerSaverStartView());
}
+
+ @Test
+ public void testBatteryEstimateFetch_doesNotThrow() throws IllegalStateException {
+ mBatteryController.getEstimatedTimeRemainingString(
+ (String estimate) -> {
+ // don't care about the result
+ });
+ TestableLooper.get(this).processAllMessages();
+ // Should not throw an exception
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
index b8f66fc41f04..3dfc94bcd5b6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/theme/ThemeOverlayControllerTest.java
@@ -292,8 +292,9 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
USER_SYSTEM);
ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
- verify(mSecureSettings).putString(
- eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+ verify(mSecureSettings).putStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture(),
+ anyInt());
assertThat(updatedSetting.getValue().contains("android.theme.customization.accent_color"))
.isFalse();
@@ -330,8 +331,9 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
USER_SYSTEM);
ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
- verify(mSecureSettings).putString(
- eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+ verify(mSecureSettings).putStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture(),
+ anyInt());
assertThat(updatedSetting.getValue().contains(
"android.theme.customization.color_both\":\"0")).isTrue();
@@ -396,8 +398,9 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
WallpaperManager.FLAG_SYSTEM | WallpaperManager.FLAG_LOCK, USER_SYSTEM);
ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
- verify(mSecureSettings).putString(
- eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+ verify(mSecureSettings).putStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture(),
+ anyInt());
assertThat(updatedSetting.getValue().contains(
"android.theme.customization.color_both\":\"1")).isTrue();
@@ -426,8 +429,9 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
USER_SYSTEM);
ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
- verify(mSecureSettings).putString(
- eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+ verify(mSecureSettings).putStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture(),
+ anyInt());
assertThat(updatedSetting.getValue().contains(
"android.theme.customization.color_source\":\"lock_wallpaper")).isTrue();
assertThat(updatedSetting.getValue().contains("android.theme.customization.color_index"))
@@ -456,8 +460,9 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
USER_SYSTEM);
ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
- verify(mSecureSettings).putString(
- eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+ verify(mSecureSettings).putStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture(),
+ anyInt());
assertThat(updatedSetting.getValue().contains(
"android.theme.customization.color_source\":\"home_wallpaper")).isTrue();
assertThat(updatedSetting.getValue().contains("android.theme.customization.color_index"))
@@ -491,8 +496,9 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
USER_SYSTEM);
ArgumentCaptor<String> updatedSetting = ArgumentCaptor.forClass(String.class);
- verify(mSecureSettings).putString(
- eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture());
+ verify(mSecureSettings).putStringForUser(
+ eq(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES), updatedSetting.capture(),
+ anyInt());
verify(mThemeOverlayApplier)
.applyCurrentUserOverlays(any(), any(), anyInt(), any());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakDetectorTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakDetectorTest.java
index 6e42f0cc5784..3ee1a27dc69a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakDetectorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakDetectorTest.java
@@ -109,7 +109,7 @@ public class LeakDetectorTest extends SysuiTestCase {
mLeakDetector.trackGarbage(o2);
FileOutputStream fos = new FileOutputStream("/dev/null");
- mLeakDetector.dump(fos.getFD(), new PrintWriter(fos), new String[0]);
+ mLeakDetector.dump(new PrintWriter(fos), new String[0]);
}
@Test
@@ -125,6 +125,6 @@ public class LeakDetectorTest extends SysuiTestCase {
mLeakDetector.trackGarbage(o2);
FileOutputStream fos = new FileOutputStream("/dev/null");
- mLeakDetector.dump(fos.getFD(), new PrintWriter(fos), new String[0]);
+ mLeakDetector.dump(new PrintWriter(fos), new String[0]);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakReporterTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakReporterTest.java
index abec80eef3f9..d0420f790038 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakReporterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/leak/LeakReporterTest.java
@@ -63,7 +63,7 @@ public class LeakReporterTest extends SysuiTestCase {
doAnswer(invocation -> {
invocation.<PrintWriter>getArgument(1).println("test");
return null;
- }).when(mLeakDetector).dump(any(), any(), any());
+ }).when(mLeakDetector).dump(any(), any());
mLeakReporter = new LeakReporter(mContext, mLeakDetector, "test@example.com");
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java
index d94ecc09f263..8fe7f59bca67 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java
@@ -20,7 +20,6 @@ import android.testing.LeakCheck.Tracker;
import com.android.systemui.Dumpable;
import com.android.systemui.statusbar.policy.CallbackController;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
public class BaseLeakChecker<T> implements CallbackController<T>, Dumpable {
@@ -46,7 +45,7 @@ public class BaseLeakChecker<T> implements CallbackController<T>, Dumpable {
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java
index 9ca4db4c1843..eaa109d672f8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeBatteryController.java
@@ -21,7 +21,6 @@ import android.view.View;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
-import java.io.FileDescriptor;
import java.io.PrintWriter;
public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback>
@@ -38,7 +37,7 @@ public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCal
}
@Override
- public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ public void dump(PrintWriter pw, String[] args) {
}
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
index 62ba0c821f4e..b263fb377e82 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java
@@ -40,6 +40,8 @@ import android.provider.Settings;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
+import android.util.SparseIntArray;
+import android.util.SparseLongArray;
import android.view.accessibility.MagnificationAnimationCallback;
import com.android.internal.accessibility.util.AccessibilityStatsLogUtils;
@@ -97,20 +99,22 @@ public class MagnificationController implements WindowMagnificationManager.Callb
private final boolean mSupportWindowMagnification;
@GuardedBy("mLock")
- private int mActivatedMode = ACCESSIBILITY_MAGNIFICATION_MODE_NONE;
+ private final SparseIntArray mCurrentMagnificationModeArray = new SparseIntArray();
@GuardedBy("mLock")
- private int mLastActivatedMode = ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
+ private final SparseIntArray mLastMagnificationActivatedModeArray = new SparseIntArray();
// Track the active user to reset the magnification and get the associated user settings.
private @UserIdInt int mUserId = UserHandle.USER_SYSTEM;
@GuardedBy("mLock")
private final SparseBooleanArray mIsImeVisibleArray = new SparseBooleanArray();
- private long mWindowModeEnabledTime = 0;
- private long mFullScreenModeEnabledTime = 0;
+ @GuardedBy("mLock")
+ private final SparseLongArray mWindowModeEnabledTimeArray = new SparseLongArray();
+ @GuardedBy("mLock")
+ private final SparseLongArray mFullScreenModeEnabledTimeArray = new SparseLongArray();
@GuardedBy("mLock")
- @Nullable
- private WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks
- mAccessibilityCallbacksDelegate;
+ private final SparseArray<WindowManagerInternal.AccessibilityControllerInternal
+ .UiChangesForAccessibilityCallbacks> mAccessibilityCallbacksDelegateArray =
+ new SparseArray<>();
/**
* A callback to inform the magnification transition result on the given display.
@@ -333,20 +337,20 @@ public class MagnificationController implements WindowMagnificationManager.Callb
}
@GuardedBy("mLock")
- private void setActivatedModeAndSwitchDelegate(int mode) {
- mActivatedMode = mode;
- assignMagnificationWindowManagerDelegateByMode(mode);
+ private void setCurrentMagnificationModeAndSwitchDelegate(int displayId, int mode) {
+ mCurrentMagnificationModeArray.put(displayId, mode);
+ assignMagnificationWindowManagerDelegateByMode(displayId, mode);
}
- private void assignMagnificationWindowManagerDelegateByMode(int mode) {
- synchronized (mLock) {
- if (mode == ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN) {
- mAccessibilityCallbacksDelegate = getFullScreenMagnificationController();
- } else if (mode == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW) {
- mAccessibilityCallbacksDelegate = getWindowMagnificationMgr();
- } else {
- mAccessibilityCallbacksDelegate = null;
- }
+ @GuardedBy("mLock")
+ private void assignMagnificationWindowManagerDelegateByMode(int displayId, int mode) {
+ if (mode == ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN) {
+ mAccessibilityCallbacksDelegateArray.put(displayId,
+ getFullScreenMagnificationController());
+ } else if (mode == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW) {
+ mAccessibilityCallbacksDelegateArray.put(displayId, getWindowMagnificationMgr());
+ } else {
+ mAccessibilityCallbacksDelegateArray.delete(displayId);
}
}
@@ -356,7 +360,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb
WindowManagerInternal.AccessibilityControllerInternal.UiChangesForAccessibilityCallbacks
delegate;
synchronized (mLock) {
- delegate = mAccessibilityCallbacksDelegate;
+ delegate = mAccessibilityCallbacksDelegateArray.get(displayId);
}
if (delegate != null) {
delegate.onRectangleOnScreenRequested(displayId, left, top, right, bottom);
@@ -378,25 +382,26 @@ public class MagnificationController implements WindowMagnificationManager.Callb
}
}
- // TODO : supporting multi-display (b/182227245).
@Override
public void onWindowMagnificationActivationState(int displayId, boolean activated) {
if (activated) {
- mWindowModeEnabledTime = SystemClock.uptimeMillis();
-
synchronized (mLock) {
- setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
- mLastActivatedMode = mActivatedMode;
+ mWindowModeEnabledTimeArray.put(displayId, SystemClock.uptimeMillis());
+ setCurrentMagnificationModeAndSwitchDelegate(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
+ mLastMagnificationActivatedModeArray.put(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
}
logMagnificationModeWithImeOnIfNeeded(displayId);
disableFullScreenMagnificationIfNeeded(displayId);
} else {
- logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
- SystemClock.uptimeMillis() - mWindowModeEnabledTime);
-
+ long duration;
synchronized (mLock) {
- setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
+ setCurrentMagnificationModeAndSwitchDelegate(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
+ duration = SystemClock.uptimeMillis() - mWindowModeEnabledTimeArray.get(displayId);
}
+ logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, duration);
}
updateMagnificationButton(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
}
@@ -437,21 +442,24 @@ public class MagnificationController implements WindowMagnificationManager.Callb
@Override
public void onFullScreenMagnificationActivationState(int displayId, boolean activated) {
if (activated) {
- mFullScreenModeEnabledTime = SystemClock.uptimeMillis();
-
synchronized (mLock) {
- setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
- mLastActivatedMode = mActivatedMode;
+ mFullScreenModeEnabledTimeArray.put(displayId, SystemClock.uptimeMillis());
+ setCurrentMagnificationModeAndSwitchDelegate(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
+ mLastMagnificationActivatedModeArray.put(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
}
logMagnificationModeWithImeOnIfNeeded(displayId);
disableWindowMagnificationIfNeeded(displayId);
} else {
- logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
- SystemClock.uptimeMillis() - mFullScreenModeEnabledTime);
-
+ long duration;
synchronized (mLock) {
- setActivatedModeAndSwitchDelegate(ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
+ setCurrentMagnificationModeAndSwitchDelegate(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
+ duration = SystemClock.uptimeMillis()
+ - mFullScreenModeEnabledTimeArray.get(displayId);
}
+ logMagnificationUsageState(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, duration);
}
updateMagnificationButton(displayId, ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
}
@@ -477,9 +485,10 @@ public class MagnificationController implements WindowMagnificationManager.Callb
* Returns the last activated magnification mode. If there is no activated magnifier before, it
* returns fullscreen mode by default.
*/
- public int getLastActivatedMode() {
+ public int getLastMagnificationActivatedMode(int displayId) {
synchronized (mLock) {
- return mLastActivatedMode;
+ return mLastMagnificationActivatedModeArray.get(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
}
}
@@ -522,7 +531,10 @@ public class MagnificationController implements WindowMagnificationManager.Callb
synchronized (mLock) {
fullMagnificationController = mFullScreenMagnificationController;
windowMagnificationManager = mWindowMagnificationMgr;
- mLastActivatedMode = ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
+ mAccessibilityCallbacksDelegateArray.clear();
+ mCurrentMagnificationModeArray.clear();
+ mLastMagnificationActivatedModeArray.clear();
+ mIsImeVisibleArray.clear();
}
mScaleProvider.onUserChanged(userId);
@@ -547,6 +559,10 @@ public class MagnificationController implements WindowMagnificationManager.Callb
if (mWindowMagnificationMgr != null) {
mWindowMagnificationMgr.onDisplayRemoved(displayId);
}
+ mAccessibilityCallbacksDelegateArray.delete(displayId);
+ mCurrentMagnificationModeArray.delete(displayId);
+ mLastMagnificationActivatedModeArray.delete(displayId);
+ mIsImeVisibleArray.delete(displayId);
}
mScaleProvider.onDisplayRemoved(displayId);
}
@@ -587,16 +603,17 @@ public class MagnificationController implements WindowMagnificationManager.Callb
}
private void logMagnificationModeWithImeOnIfNeeded(int displayId) {
- final int mode;
+ final int currentActivateMode;
synchronized (mLock) {
+ currentActivateMode = mCurrentMagnificationModeArray.get(displayId,
+ ACCESSIBILITY_MAGNIFICATION_MODE_NONE);
if (!mIsImeVisibleArray.get(displayId, false)
- || mActivatedMode == ACCESSIBILITY_MAGNIFICATION_MODE_NONE) {
+ || currentActivateMode == ACCESSIBILITY_MAGNIFICATION_MODE_NONE) {
return;
}
- mode = mActivatedMode;
}
- logMagnificationModeWithIme(mode);
+ logMagnificationModeWithIme(currentActivateMode);
}
/**
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
index 3e07b095fd29..a356ae6799d7 100644
--- a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java
@@ -341,7 +341,8 @@ public class MagnificationProcessor {
ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN)) {
return MAGNIFICATION_MODE_FULLSCREEN;
} else {
- return (mController.getLastActivatedMode() == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW)
+ return (mController.getLastMagnificationActivatedMode(displayId)
+ == ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW)
? MAGNIFICATION_MODE_WINDOW
: MAGNIFICATION_MODE_FULLSCREEN;
}
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index f34c5062144e..06f698efde2b 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -1208,6 +1208,11 @@ public abstract class PackageManagerInternal {
public abstract SharedUserApi getSharedUserApi(int sharedUserAppId);
/**
+ * Returns if the given uid is privileged or not.
+ */
+ public abstract boolean isUidPrivileged(int uid);
+
+ /**
* Initiates a package state mutation request, returning the current state as known by
* PackageManager. This allows the later commit request to compare the initial values and
* determine if any state was changed or any packages were updated since the whole request
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index e6b7a4c287cd..b059cc7e2aa2 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -2977,19 +2977,21 @@ public class AccountManagerService
* outside of those expected to be injected by the AccountManager, e.g.
* ANDORID_PACKAGE_NAME.
*/
- String token = readCachedTokenInternal(
+ TokenCache.Value cachedToken = readCachedTokenInternal(
accounts,
account,
authTokenType,
callerPkg,
callerPkgSigDigest);
- if (token != null) {
+ if (cachedToken != null) {
logGetAuthTokenMetrics(callerPkg, account.type);
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "getAuthToken: cache hit ofr custom token authenticator.");
}
Bundle result = new Bundle();
- result.putString(AccountManager.KEY_AUTHTOKEN, token);
+ result.putString(AccountManager.KEY_AUTHTOKEN, cachedToken.token);
+ result.putLong(AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY,
+ cachedToken.expiryEpochMillis);
result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
onResult(response, result);
@@ -6121,7 +6123,7 @@ public class AccountManagerService
}
}
- protected String readCachedTokenInternal(
+ protected TokenCache.Value readCachedTokenInternal(
UserAccounts accounts,
Account account,
String tokenType,
diff --git a/services/core/java/com/android/server/accounts/TokenCache.java b/services/core/java/com/android/server/accounts/TokenCache.java
index 66e550fe3c4c..9427ee41cfdc 100644
--- a/services/core/java/com/android/server/accounts/TokenCache.java
+++ b/services/core/java/com/android/server/accounts/TokenCache.java
@@ -20,8 +20,6 @@ import android.accounts.Account;
import android.util.LruCache;
import android.util.Pair;
-import com.android.internal.util.Preconditions;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -35,7 +33,8 @@ import java.util.Objects;
private static final int MAX_CACHE_CHARS = 64000;
- private static class Value {
+ /** Package private*/
+ static class Value {
public final String token;
public final long expiryEpochMillis;
@@ -217,12 +216,12 @@ import java.util.Objects;
/**
* Gets a token from the cache if possible.
*/
- public String get(Account account, String tokenType, String packageName, byte[] sigDigest) {
+ public Value get(Account account, String tokenType, String packageName, byte[] sigDigest) {
Key k = new Key(account, tokenType, packageName, sigDigest);
Value v = mCachedTokens.get(k);
long currentTime = System.currentTimeMillis();
if (v != null && currentTime < v.expiryEpochMillis) {
- return v.token;
+ return v;
} else if (v != null) {
remove(account.type, v.token);
}
diff --git a/services/core/java/com/android/server/am/AppRestrictionController.java b/services/core/java/com/android/server/am/AppRestrictionController.java
index 6f7435943d45..798647e04325 100644
--- a/services/core/java/com/android/server/am/AppRestrictionController.java
+++ b/services/core/java/com/android/server/am/AppRestrictionController.java
@@ -2292,9 +2292,10 @@ public final class AppRestrictionController {
void postRequestBgRestrictedIfNecessary(String packageName, int uid) {
final Intent intent = new Intent(Settings.ACTION_VIEW_ADVANCED_POWER_USAGE_DETAIL);
intent.setData(Uri.fromParts(PACKAGE_SCHEME, packageName, null));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
final PendingIntent pendingIntent = PendingIntent.getActivityAsUser(mContext, 0,
- intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE, null,
+ intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE, null,
UserHandle.of(UserHandle.getUserId(uid)));
Notification.Action[] actions = null;
final boolean hasForegroundServices =
@@ -2350,13 +2351,14 @@ public final class AppRestrictionController {
intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
// Task manager runs in SystemUI, which is SYSTEM user only.
pendingIntent = PendingIntent.getBroadcastAsUser(mContext, 0,
- intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE,
+ intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE,
UserHandle.SYSTEM);
} else {
final Intent intent = new Intent(Settings.ACTION_VIEW_ADVANCED_POWER_USAGE_DETAIL);
intent.setData(Uri.fromParts(PACKAGE_SCHEME, packageName, null));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
pendingIntent = PendingIntent.getActivityAsUser(mContext, 0,
- intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE,
+ intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE,
null, UserHandle.of(UserHandle.getUserId(uid)));
}
diff --git a/services/core/java/com/android/server/am/BroadcastDispatcher.java b/services/core/java/com/android/server/am/BroadcastDispatcher.java
index 01d8109a82a0..872531a47bc9 100644
--- a/services/core/java/com/android/server/am/BroadcastDispatcher.java
+++ b/services/core/java/com/android/server/am/BroadcastDispatcher.java
@@ -580,6 +580,11 @@ public class BroadcastDispatcher {
// ----------------------------------
// BroadcastQueue operation support
void enqueueOrderedBroadcastLocked(BroadcastRecord r) {
+ if (r.receivers == null || r.receivers.isEmpty()) {
+ mOrderedBroadcasts.add(r);
+ return;
+ }
+
if (Intent.ACTION_LOCKED_BOOT_COMPLETED.equals(r.intent.getAction())) {
// Create one BroadcastRecord for each UID that can be deferred.
final SparseArray<BroadcastRecord> deferred =
diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java
index 2ee32b6abe96..5343af25fd39 100644
--- a/services/core/java/com/android/server/am/BroadcastRecord.java
+++ b/services/core/java/com/android/server/am/BroadcastRecord.java
@@ -414,6 +414,10 @@ final class BroadcastRecord extends Binder {
return ret;
}
+ if (receivers == null) {
+ return ret;
+ }
+
final String action = intent.getAction();
if (!Intent.ACTION_LOCKED_BOOT_COMPLETED.equals(action)
&& !Intent.ACTION_BOOT_COMPLETED.equals(action)) {
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 35217dba7c28..4c9b28b1bd18 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -2313,6 +2313,13 @@ public class Vpn {
"usepeerdns", "idle", "1800", "mtu", "1270", "mru", "1270",
(profile.mppe ? "+mppe" : "nomppe"),
};
+ if (profile.mppe) {
+ // Disallow PAP authentication when MPPE is requested, as MPPE cannot work
+ // with PAP anyway, and users may not expect PAP (plain text) to be used when
+ // MPPE was requested.
+ mtpd = Arrays.copyOf(mtpd, mtpd.length + 1);
+ mtpd[mtpd.length - 1] = "-pap";
+ }
break;
case VpnProfile.TYPE_L2TP_IPSEC_PSK:
case VpnProfile.TYPE_L2TP_IPSEC_RSA:
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java
index 436c434ccbca..f68d22acd6ab 100644
--- a/services/core/java/com/android/server/dreams/DreamManagerService.java
+++ b/services/core/java/com/android/server/dreams/DreamManagerService.java
@@ -92,6 +92,7 @@ public final class DreamManagerService extends SystemService {
private boolean mCurrentDreamIsDozing;
private boolean mCurrentDreamIsWaking;
private boolean mForceAmbientDisplayEnabled;
+ private boolean mDreamsOnlyEnabledForSystemUser;
private int mCurrentDreamDozeScreenState = Display.STATE_UNKNOWN;
private int mCurrentDreamDozeScreenBrightness = PowerManager.BRIGHTNESS_DEFAULT;
@@ -115,6 +116,8 @@ public final class DreamManagerService extends SystemService {
mContext.getResources().getString(R.string.config_loggable_dream_prefix));
AmbientDisplayConfiguration adc = new AmbientDisplayConfiguration(mContext);
mAmbientDisplayComponent = ComponentName.unflattenFromString(adc.ambientDisplayComponent());
+ mDreamsOnlyEnabledForSystemUser =
+ mContext.getResources().getBoolean(R.bool.config_dreamsOnlyEnabledForSystemUser);
}
@Override
@@ -156,6 +159,7 @@ public final class DreamManagerService extends SystemService {
pw.println("mCurrentDreamIsDozing=" + mCurrentDreamIsDozing);
pw.println("mCurrentDreamIsWaking=" + mCurrentDreamIsWaking);
pw.println("mForceAmbientDisplayEnabled=" + mForceAmbientDisplayEnabled);
+ pw.println("mDreamsOnlyEnabledForSystemUser=" + mDreamsOnlyEnabledForSystemUser);
pw.println("mCurrentDreamDozeScreenState="
+ Display.stateToString(mCurrentDreamDozeScreenState));
pw.println("mCurrentDreamDozeScreenBrightness=" + mCurrentDreamDozeScreenBrightness);
@@ -314,6 +318,11 @@ public final class DreamManagerService extends SystemService {
}
private ComponentName[] getDreamComponentsForUser(int userId) {
+ if (!dreamsEnabledForUser(userId)) {
+ // Don't return any dream components if the user is not allowed to dream.
+ return null;
+ }
+
String names = Settings.Secure.getStringForUser(mContext.getContentResolver(),
Settings.Secure.SCREENSAVER_COMPONENTS,
userId);
@@ -367,6 +376,10 @@ public final class DreamManagerService extends SystemService {
}
+ private boolean dreamsEnabledForUser(int userId) {
+ return !mDreamsOnlyEnabledForSystemUser || (userId == UserHandle.USER_SYSTEM);
+ }
+
private ServiceInfo getServiceInfo(ComponentName name) {
try {
return name != null ? mContext.getPackageManager().getServiceInfo(name,
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
index ccb27eef2075..576a5ff4305e 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
@@ -396,7 +396,9 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
try {
String iso3Language = new String(message.getParams(), 0, 3, "US-ASCII");
Locale currentLocale = mService.getContext().getResources().getConfiguration().locale;
- if (currentLocale.getISO3Language().equals(iso3Language)) {
+ String curIso3Language = mService.localeToMenuLanguage(currentLocale);
+ HdmiLogger.debug("handleSetMenuLanguage " + iso3Language + " cur:" + curIso3Language);
+ if (curIso3Language.equals(iso3Language)) {
// Do not switch language if the new language is the same as the current one.
// This helps avoid accidental country variant switching from en_US to en_AU
// due to the limitation of CEC. See the warning below.
@@ -408,7 +410,7 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
final List<LocaleInfo> localeInfos = LocalePicker.getAllAssetLocales(
mService.getContext(), false);
for (LocaleInfo localeInfo : localeInfos) {
- if (localeInfo.getLocale().getISO3Language().equals(iso3Language)) {
+ if (mService.localeToMenuLanguage(localeInfo.getLocale()).equals(iso3Language)) {
// WARNING: CEC adopts ISO/FDIS-2 for language code, while Android requires
// additional country variant to pinpoint the locale. This keeps the right
// locale from being chosen. 'eng' in the CEC command, for instance,
diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
index bd0e172064c0..dae2fbbc8f4c 100644
--- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java
@@ -1573,6 +1573,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
pw.println("mFixInterval=" + mFixInterval);
pw.print(mGnssMetrics.dumpGnssMetricsAsText());
if (dumpAll) {
+ pw.println("mSupportsPsds=" + mSupportsPsds);
pw.println("native internal state: ");
pw.println(" " + mGnssNative.getInternalState());
}
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
index a73c8e0c914a..0e4bbbb7a412 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
@@ -18,12 +18,14 @@ package com.android.server.locksettings;
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_PATTERN;
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;
import android.app.ActivityManager;
import android.app.admin.PasswordMetrics;
import android.content.Context;
import android.os.ShellCommand;
import android.os.SystemProperties;
+import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Slog;
@@ -48,6 +50,8 @@ class LockSettingsShellCommand extends ShellCommand {
private static final String COMMAND_REMOVE_CACHE = "remove-cache";
private static final String COMMAND_SET_ROR_PROVIDER_PACKAGE =
"set-resume-on-reboot-provider-package";
+ private static final String COMMAND_REQUIRE_STRONG_AUTH =
+ "require-strong-auth";
private static final String COMMAND_HELP = "help";
private int mCurrentUserId;
@@ -97,6 +101,9 @@ class LockSettingsShellCommand extends ShellCommand {
case COMMAND_SET_ROR_PROVIDER_PACKAGE:
runSetResumeOnRebootProviderPackage();
return 0;
+ case COMMAND_REQUIRE_STRONG_AUTH:
+ runRequireStrongAuth();
+ return 0;
case COMMAND_HELP:
onHelp();
return 0;
@@ -192,6 +199,10 @@ class LockSettingsShellCommand extends ShellCommand {
pw.println(" Sets the package name for server based resume on reboot service "
+ "provider.");
pw.println("");
+ pw.println(" require-strong-auth [--user USER_ID] <reason>");
+ pw.println(" Requires the strong authentication. The current supported reasons: "
+ + "STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN.");
+ pw.println("");
}
}
@@ -288,6 +299,24 @@ class LockSettingsShellCommand extends ShellCommand {
return true;
}
+ private boolean runRequireStrongAuth() {
+ final String reason = mNew;
+ int strongAuthReason;
+ switch (reason) {
+ case "STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN":
+ strongAuthReason = STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;
+ mCurrentUserId = UserHandle.USER_ALL;
+ break;
+ default:
+ getErrPrintWriter().println("Unsupported reason: " + reason);
+ return false;
+ }
+ mLockPatternUtils.requireStrongAuth(strongAuthReason, mCurrentUserId);
+ getOutPrintWriter().println("Require strong auth for USER_ID "
+ + mCurrentUserId + " because of " + mNew);
+ return true;
+ }
+
private boolean runClear() {
LockscreenCredential none = LockscreenCredential.createNone();
if (!isNewCredentialSufficient(none)) {
diff --git a/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java b/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java
index 8be90e0cc622..b45bfb1c2d92 100644
--- a/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java
+++ b/services/core/java/com/android/server/logcat/LogAccessDialogActivity.java
@@ -30,6 +30,7 @@ import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.logcat.ILogcatManagerService;
import android.util.Slog;
+import android.view.InflateException;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
@@ -56,33 +57,46 @@ public class LogAccessDialogActivity extends Activity implements
private String mAlertTitle;
private AlertDialog.Builder mAlertDialog;
private AlertDialog mAlert;
+ private View mAlertView;
private static final int DIALOG_TIME_OUT = Build.IS_DEBUGGABLE ? 60000 : 300000;
private static final int MSG_DISMISS_DIALOG = 0;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mContext = this;
- Intent intent = getIntent();
- mPackageName = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
- mUid = intent.getIntExtra("com.android.server.logcat.uid", 0);
- mGid = intent.getIntExtra("com.android.server.logcat.gid", 0);
- mPid = intent.getIntExtra("com.android.server.logcat.pid", 0);
- mFd = intent.getIntExtra("com.android.server.logcat.fd", 0);
- mAlertTitle = getTitleString(mContext, mPackageName, mUid);
+ try {
+ mContext = this;
+
+ // retrieve Intent extra information
+ Intent intent = getIntent();
+ getIntentInfo(intent);
- if (mAlertTitle != null) {
+ // retrieve the title string from passed intent extra
+ mAlertTitle = getTitleString(mContext, mPackageName, mUid);
+ // creaet View
+ mAlertView = createView();
+
+ // create AlertDialog
mAlertDialog = new AlertDialog.Builder(this);
- mAlertDialog.setView(createView());
+ mAlertDialog.setView(mAlertView);
+ // show Alert
mAlert = mAlertDialog.create();
mAlert.show();
+
+ // set Alert Timeout
mHandler.sendEmptyMessageDelayed(MSG_DISMISS_DIALOG, DIALOG_TIME_OUT);
+ } catch (Exception e) {
+ try {
+ Slog.e(TAG, "onCreate failed, declining the logd access", e);
+ mLogcatManagerService.decline(mUid, mGid, mPid, mFd);
+ } catch (RemoteException ex) {
+ Slog.e(TAG, "Fails to call remote functions", ex);
+ }
}
}
@@ -95,6 +109,19 @@ public class LogAccessDialogActivity extends Activity implements
mAlert = null;
}
+ private void getIntentInfo(Intent intent) throws Exception {
+
+ if (intent == null) {
+ throw new NullPointerException("Intent is null");
+ }
+
+ mPackageName = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME);
+ mUid = intent.getIntExtra("com.android.server.logcat.uid", 0);
+ mGid = intent.getIntExtra("com.android.server.logcat.gid", 0);
+ mPid = intent.getIntExtra("com.android.server.logcat.pid", 0);
+ mFd = intent.getIntExtra("com.android.server.logcat.fd", 0);
+ }
+
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
@@ -116,26 +143,41 @@ public class LogAccessDialogActivity extends Activity implements
}
};
- private String getTitleString(Context context, String callingPackage, int uid) {
+ private String getTitleString(Context context, String callingPackage, int uid)
+ throws Exception {
+
PackageManager pm = context.getPackageManager();
- try {
- return context.getString(
- com.android.internal.R.string.log_access_confirmation_title,
- pm.getApplicationInfoAsUser(callingPackage,
- PackageManager.MATCH_DIRECT_BOOT_AUTO,
- UserHandle.getUserId(uid)).loadLabel(pm));
- } catch (NameNotFoundException e) {
- Slog.e(TAG, "App name is unknown.", e);
- return null;
+ if (pm == null) {
+ throw new NullPointerException("PackageManager is null");
}
+
+ CharSequence appLabel = pm.getApplicationInfoAsUser(callingPackage,
+ PackageManager.MATCH_DIRECT_BOOT_AUTO,
+ UserHandle.getUserId(uid)).loadLabel(pm);
+ if (appLabel == null) {
+ throw new NameNotFoundException("Application Label is null");
+ }
+
+ return context.getString(com.android.internal.R.string.log_access_confirmation_title,
+ appLabel);
}
- private View createView() {
+ /**
+ * Returns the dialog view.
+ * If we cannot retrieve the package name, it returns null and we decline the full device log
+ * access
+ */
+ private View createView() throws Exception {
+
final View view = getLayoutInflater().inflate(
R.layout.log_access_user_consent_dialog_permission, null /*root*/);
+ if (view == null) {
+ throw new InflateException();
+ }
+
((TextView) view.findViewById(R.id.log_access_dialog_title))
- .setText(mAlertTitle);
+ .setText(mAlertTitle);
Button button_allow = (Button) view.findViewById(R.id.log_access_dialog_allow_button);
button_allow.setOnClickListener(this);
@@ -144,6 +186,7 @@ public class LogAccessDialogActivity extends Activity implements
button_deny.setOnClickListener(this);
return view;
+
}
@Override
diff --git a/services/core/java/com/android/server/logcat/LogcatManagerService.java b/services/core/java/com/android/server/logcat/LogcatManagerService.java
index 015bf3c5e390..4c265ad5ff88 100644
--- a/services/core/java/com/android/server/logcat/LogcatManagerService.java
+++ b/services/core/java/com/android/server/logcat/LogcatManagerService.java
@@ -102,16 +102,27 @@ public final class LogcatManagerService extends SystemService {
}
}
- private void showDialog(int uid, int gid, int pid, int fd) {
+ /**
+ * Returns the package name.
+ * If we cannot retrieve the package name, it returns null and we decline the full device log
+ * access
+ */
+ private String getPackageName(int uid, int gid, int pid, int fd) {
+
final ActivityManagerInternal activityManagerInternal =
LocalServices.getService(ActivityManagerInternal.class);
+ if (activityManagerInternal != null) {
+ String packageName = activityManagerInternal.getPackageNameByPid(pid);
+ if (packageName != null) {
+ return packageName;
+ }
+ }
PackageManager pm = mContext.getPackageManager();
- String packageName = activityManagerInternal.getPackageNameByPid(pid);
- if (packageName != null) {
- Intent mIntent = createIntent(packageName, uid, gid, pid, fd);
- mContext.startActivityAsUser(mIntent, UserHandle.SYSTEM);
- return;
+ if (pm == null) {
+ // Decline the logd access if PackageManager is null
+ Slog.e(TAG, "PackageManager is null, declining the logd access");
+ return null;
}
String[] packageNames = pm.getPackagesForUid(uid);
@@ -119,21 +130,19 @@ public final class LogcatManagerService extends SystemService {
if (ArrayUtils.isEmpty(packageNames)) {
// Decline the logd access if the app name is unknown
Slog.e(TAG, "Unknown calling package name, declining the logd access");
- declineLogdAccess(uid, gid, pid, fd);
- return;
+ return null;
}
String firstPackageName = packageNames[0];
- if (firstPackageName.isEmpty() || firstPackageName == null) {
+ if (firstPackageName == null || firstPackageName.isEmpty()) {
// Decline the logd access if the package name from uid is unknown
Slog.e(TAG, "Unknown calling package name, declining the logd access");
- declineLogdAccess(uid, gid, pid, fd);
- return;
+ return null;
}
- final Intent mIntent = createIntent(firstPackageName, uid, gid, pid, fd);
- mContext.startActivityAsUser(mIntent, UserHandle.SYSTEM);
+ return firstPackageName;
+
}
private void declineLogdAccess(int uid, int gid, int pid, int fd) {
@@ -198,16 +207,23 @@ public final class LogcatManagerService extends SystemService {
final int procState = LocalServices.getService(ActivityManagerInternal.class)
.getUidProcessState(mUid);
- // If the process is foreground, show a dialog for user consent
+ // If the process is foreground and we can retrieve the package name, show a dialog
+ // for user consent
if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) {
- showDialog(mUid, mGid, mPid, mFd);
- } else {
- /**
- * If the process is background, decline the logd access.
- **/
- declineLogdAccess(mUid, mGid, mPid, mFd);
- return;
+ String packageName = getPackageName(mUid, mGid, mPid, mFd);
+ if (packageName != null) {
+ final Intent mIntent = createIntent(packageName, mUid, mGid, mPid, mFd);
+ mContext.startActivityAsUser(mIntent, UserHandle.SYSTEM);
+ return;
+ }
}
+
+ /**
+ * If the process is background or cannot retrieve the package name,
+ * decline the logd access.
+ **/
+ declineLogdAccess(mUid, mGid, mPid, mFd);
+ return;
}
}
}
diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilterImpl.java
index 29ee28175f57..5865adb96333 100644
--- a/services/core/java/com/android/server/pm/AppsFilter.java
+++ b/services/core/java/com/android/server/pm/AppsFilterImpl.java
@@ -44,7 +44,6 @@ import android.util.ArraySet;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
-import android.util.SparseSetArray;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -64,14 +63,18 @@ import com.android.server.pm.pkg.component.ParsedMainComponent;
import com.android.server.pm.pkg.component.ParsedProvider;
import com.android.server.utils.Snappable;
import com.android.server.utils.SnapshotCache;
-import com.android.server.utils.Snapshots;
import com.android.server.utils.Watchable;
import com.android.server.utils.WatchableImpl;
+import com.android.server.utils.Watched;
+import com.android.server.utils.WatchedArrayList;
import com.android.server.utils.WatchedArrayMap;
+import com.android.server.utils.WatchedArraySet;
import com.android.server.utils.WatchedSparseBooleanMatrix;
+import com.android.server.utils.WatchedSparseSetArray;
import com.android.server.utils.Watcher;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -84,7 +87,7 @@ import java.util.concurrent.Executor;
* manifests.
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
-public class AppsFilter implements Watchable, Snappable {
+public class AppsFilterImpl implements AppsFilterSnapshot, Watchable, Snappable {
private static final String TAG = "AppsFilter";
@@ -99,32 +102,43 @@ public class AppsFilter implements Watchable, Snappable {
* application B is implicitly allowed to query for application A; regardless of any manifest
* entries.
*/
- private final SparseSetArray<Integer> mImplicitlyQueryable = new SparseSetArray<>();
+ @Watched
+ private final WatchedSparseSetArray<Integer> mImplicitlyQueryable;
+ private final SnapshotCache<WatchedSparseSetArray<Integer>> mImplicitQueryableSnapshot;
/**
* This contains a list of app UIDs that are implicitly queryable because another app explicitly
* interacted with it, but could keep across package updates. For example, if application A
* grants persistable uri permission to application B; regardless of any manifest entries.
*/
- private final SparseSetArray<Integer> mRetainedImplicitlyQueryable = new SparseSetArray<>();
+ @Watched
+ private final WatchedSparseSetArray<Integer> mRetainedImplicitlyQueryable;
+ private final SnapshotCache<WatchedSparseSetArray<Integer>>
+ mRetainedImplicitlyQueryableSnapshot;
/**
* A mapping from the set of App IDs that query other App IDs via package name to the
* list of packages that they can see.
*/
- private final SparseSetArray<Integer> mQueriesViaPackage = new SparseSetArray<>();
+ @Watched
+ private final WatchedSparseSetArray<Integer> mQueriesViaPackage;
+ private final SnapshotCache<WatchedSparseSetArray<Integer>> mQueriesViaPackageSnapshot;
/**
* A mapping from the set of App IDs that query others via component match to the list
* of packages that the they resolve to.
*/
- private final SparseSetArray<Integer> mQueriesViaComponent = new SparseSetArray<>();
+ @Watched
+ private final WatchedSparseSetArray<Integer> mQueriesViaComponent;
+ private final SnapshotCache<WatchedSparseSetArray<Integer>> mQueriesViaComponentSnapshot;
/**
* A mapping from the set of App IDs that query other App IDs via library name to the
* list of packages that they can see.
*/
- private final SparseSetArray<Integer> mQueryableViaUsesLibrary = new SparseSetArray<>();
+ @Watched
+ private final WatchedSparseSetArray<Integer> mQueryableViaUsesLibrary;
+ private final SnapshotCache<WatchedSparseSetArray<Integer>> mQueryableViaUsesLibrarySnapshot;
/**
* Executor for running reasonably short background tasks such as building the initial
@@ -144,7 +158,9 @@ public class AppsFilter implements Watchable, Snappable {
* A set of App IDs that are always queryable by any package, regardless of their manifest
* content.
*/
- private final ArraySet<Integer> mForceQueryable = new ArraySet<>();
+ @Watched
+ private final WatchedArraySet<Integer> mForceQueryable;
+ private final SnapshotCache<WatchedArraySet<Integer>> mForceQueryableSnapshot;
/**
* The set of package names provided by the device that should be force queryable regardless of
@@ -154,14 +170,15 @@ public class AppsFilter implements Watchable, Snappable {
/** True if all system apps should be made queryable by default. */
private final boolean mSystemAppsQueryable;
-
private final FeatureConfig mFeatureConfig;
private final OverlayReferenceMapper mOverlayReferenceMapper;
private final StateProvider mStateProvider;
private final PackageManagerInternal mPmInternal;
-
private SigningDetails mSystemSigningDetails;
- private Set<String> mProtectedBroadcasts = new ArraySet<>();
+
+ @Watched
+ private final WatchedArrayList<String> mProtectedBroadcasts;
+ private final SnapshotCache<WatchedArrayList<String>> mProtectedBroadcastsSnapshot;
private final Object mCacheLock = new Object();
@@ -175,19 +192,21 @@ public class AppsFilter implements Watchable, Snappable {
@GuardedBy("mCacheLock")
@NonNull
private final WatchedSparseBooleanMatrix mShouldFilterCache;
+ private final SnapshotCache<WatchedSparseBooleanMatrix> mShouldFilterCacheSnapshot;
private volatile boolean mSystemReady = false;
/**
* A cached snapshot.
*/
- private final SnapshotCache<AppsFilter> mSnapshot;
+ private final SnapshotCache<AppsFilterImpl> mSnapshot;
- private SnapshotCache<AppsFilter> makeCache() {
- return new SnapshotCache<AppsFilter>(this, this) {
+ private SnapshotCache<AppsFilterImpl> makeCache() {
+ return new SnapshotCache<AppsFilterImpl>(this, this) {
@Override
- public AppsFilter createSnapshot() {
- AppsFilter s = new AppsFilter(mSource);
+ public AppsFilterImpl createSnapshot() {
+ AppsFilterImpl s = new AppsFilterImpl(mSource);
+ s.mWatchable.seal();
return s;
}
};
@@ -197,6 +216,15 @@ public class AppsFilter implements Watchable, Snappable {
* Watchable machinery
*/
private final WatchableImpl mWatchable = new WatchableImpl();
+ /**
+ * The observer that watches for changes from array members
+ */
+ private final Watcher mObserver = new Watcher() {
+ @Override
+ public void onChange(@Nullable Watchable what) {
+ AppsFilterImpl.this.dispatchChange(what);
+ }
+ };
/**
* Ensures an observer is in the list, exactly once. The observer cannot be null. The
@@ -251,7 +279,7 @@ public class AppsFilter implements Watchable, Snappable {
}
@VisibleForTesting(visibility = PRIVATE)
- AppsFilter(StateProvider stateProvider,
+ AppsFilterImpl(StateProvider stateProvider,
FeatureConfig featureConfig,
String[] forceQueryableList,
boolean systemAppsQueryable,
@@ -267,31 +295,67 @@ public class AppsFilter implements Watchable, Snappable {
mPmInternal = pmInternal;
mBackgroundExecutor = backgroundExecutor;
mShouldFilterCache = new WatchedSparseBooleanMatrix();
+ mShouldFilterCacheSnapshot = new SnapshotCache.Auto<>(
+ mShouldFilterCache, mShouldFilterCache, "AppsFilter.mShouldFilterCache");
+ mImplicitlyQueryable = new WatchedSparseSetArray<>();
+ mImplicitQueryableSnapshot = new SnapshotCache.Auto<>(
+ mImplicitlyQueryable, mImplicitlyQueryable, "AppsFilter.mImplicitlyQueryable");
+ mRetainedImplicitlyQueryable = new WatchedSparseSetArray<>();
+ mRetainedImplicitlyQueryableSnapshot = new SnapshotCache.Auto<>(
+ mRetainedImplicitlyQueryable, mRetainedImplicitlyQueryable,
+ "AppsFilter.mRetainedImplicitlyQueryable");
+ mQueriesViaPackage = new WatchedSparseSetArray<>();
+ mQueriesViaPackageSnapshot = new SnapshotCache.Auto<>(
+ mQueriesViaPackage, mQueriesViaPackage, "AppsFilter.mQueriesViaPackage");
+ mQueriesViaComponent = new WatchedSparseSetArray<>();
+ mQueriesViaComponentSnapshot = new SnapshotCache.Auto<>(
+ mQueriesViaComponent, mQueriesViaComponent, "AppsFilter.mQueriesViaComponent");
+ mQueryableViaUsesLibrary = new WatchedSparseSetArray<>();
+ mQueryableViaUsesLibrarySnapshot = new SnapshotCache.Auto<>(
+ mQueryableViaUsesLibrary, mQueryableViaUsesLibrary,
+ "AppsFilter.mQueryableViaUsesLibrary");
+ mForceQueryable = new WatchedArraySet<>();
+ mForceQueryableSnapshot = new SnapshotCache.Auto<>(
+ mForceQueryable, mForceQueryable, "AppsFilter.mForceQueryable");
+ mProtectedBroadcasts = new WatchedArrayList<>();
+ mProtectedBroadcastsSnapshot = new SnapshotCache.Auto<>(
+ mProtectedBroadcasts, mProtectedBroadcasts, "AppsFilter.mProtectedBroadcasts");
+
+ registerObservers();
+ Watchable.verifyWatchedAttributes(this, mObserver);
mSnapshot = makeCache();
}
/**
* The copy constructor is used by PackageManagerService to construct a snapshot.
- * Attributes are not deep-copied since these are supposed to be immutable.
- * TODO: deep-copy the attributes, if necessary.
*/
- private AppsFilter(AppsFilter orig) {
- Snapshots.copy(mImplicitlyQueryable, orig.mImplicitlyQueryable);
- Snapshots.copy(mRetainedImplicitlyQueryable, orig.mRetainedImplicitlyQueryable);
- Snapshots.copy(mQueriesViaPackage, orig.mQueriesViaPackage);
- Snapshots.copy(mQueriesViaComponent, orig.mQueriesViaComponent);
- Snapshots.copy(mQueryableViaUsesLibrary, orig.mQueryableViaUsesLibrary);
+ private AppsFilterImpl(AppsFilterImpl orig) {
+ mImplicitlyQueryable = orig.mImplicitQueryableSnapshot.snapshot();
+ mImplicitQueryableSnapshot = new SnapshotCache.Sealed<>();
+ mRetainedImplicitlyQueryable = orig.mRetainedImplicitlyQueryableSnapshot.snapshot();
+ mRetainedImplicitlyQueryableSnapshot = new SnapshotCache.Sealed<>();
+ mQueriesViaPackage = orig.mQueriesViaPackageSnapshot.snapshot();
+ mQueriesViaPackageSnapshot = new SnapshotCache.Sealed<>();
+ mQueriesViaComponent = orig.mQueriesViaComponentSnapshot.snapshot();
+ mQueriesViaComponentSnapshot = new SnapshotCache.Sealed<>();
+ mQueryableViaUsesLibrary = orig.mQueryableViaUsesLibrarySnapshot.snapshot();
+ mQueryableViaUsesLibrarySnapshot = new SnapshotCache.Sealed<>();
+ mForceQueryable = orig.mForceQueryableSnapshot.snapshot();
+ mForceQueryableSnapshot = new SnapshotCache.Sealed<>();
+ mProtectedBroadcasts = orig.mProtectedBroadcastsSnapshot.snapshot();
+ mProtectedBroadcastsSnapshot = new SnapshotCache.Sealed<>();
mQueriesViaComponentRequireRecompute = orig.mQueriesViaComponentRequireRecompute;
- mForceQueryable.addAll(orig.mForceQueryable);
- mForceQueryableByDevicePackageNames = orig.mForceQueryableByDevicePackageNames;
+ mForceQueryableByDevicePackageNames =
+ Arrays.copyOf(orig.mForceQueryableByDevicePackageNames,
+ orig.mForceQueryableByDevicePackageNames.length);
mSystemAppsQueryable = orig.mSystemAppsQueryable;
mFeatureConfig = orig.mFeatureConfig;
mOverlayReferenceMapper = orig.mOverlayReferenceMapper;
mStateProvider = orig.mStateProvider;
mSystemSigningDetails = orig.mSystemSigningDetails;
- mProtectedBroadcasts = orig.mProtectedBroadcasts;
synchronized (orig.mCacheLock) {
- mShouldFilterCache = orig.mShouldFilterCache.snapshot();
+ mShouldFilterCache = orig.mShouldFilterCacheSnapshot.snapshot();
+ mShouldFilterCacheSnapshot = new SnapshotCache.Sealed<>();
}
mBackgroundExecutor = null;
@@ -300,12 +364,24 @@ public class AppsFilter implements Watchable, Snappable {
mSystemReady = true;
}
+ @SuppressWarnings("GuardedBy")
+ private void registerObservers() {
+ mImplicitlyQueryable.registerObserver(mObserver);
+ mRetainedImplicitlyQueryable.registerObserver(mObserver);
+ mQueriesViaPackage.registerObserver(mObserver);
+ mQueriesViaComponent.registerObserver(mObserver);
+ mQueryableViaUsesLibrary.registerObserver(mObserver);
+ mForceQueryable.registerObserver(mObserver);
+ mProtectedBroadcasts.registerObserver(mObserver);
+ mShouldFilterCache.registerObserver(mObserver);
+ }
+
/**
* Return a snapshot. If the cached snapshot is null, build a new one. The logic in
* the function ensures that this function returns a valid snapshot even if a race
* condition causes the cached snapshot to be cleared asynchronously to this method.
*/
- public AppsFilter snapshot() {
+ public AppsFilterSnapshot snapshot() {
return mSnapshot.snapshot();
}
@@ -366,7 +442,7 @@ public class AppsFilter implements Watchable, Snappable {
@Nullable
private SparseBooleanArray mLoggingEnabled = null;
- private AppsFilter mAppsFilter;
+ private AppsFilterImpl mAppsFilter;
private FeatureConfigImpl(
PackageManagerInternal pmInternal, PackageManagerServiceInjector injector) {
@@ -374,7 +450,7 @@ public class AppsFilter implements Watchable, Snappable {
mInjector = injector;
}
- public void setAppsFilter(AppsFilter filter) {
+ public void setAppsFilter(AppsFilterImpl filter) {
mAppsFilter = filter;
}
@@ -478,8 +554,9 @@ public class AppsFilter implements Watchable, Snappable {
@Override
public void updatePackageState(PackageStateInternal setting, boolean removed) {
- final boolean enableLogging = setting.getPkg() != null &&
- !removed && (setting.getPkg().isTestOnly() || setting.getPkg().isDebuggable());
+ final boolean enableLogging = setting.getPkg() != null
+ && !removed && (setting.getPkg().isTestOnly()
+ || setting.getPkg().isDebuggable());
enableLogging(setting.getAppId(), enableLogging);
if (removed) {
mDisabledPackages.remove(setting.getPackageName());
@@ -490,7 +567,7 @@ public class AppsFilter implements Watchable, Snappable {
}
/** Builder method for an AppsFilter */
- public static AppsFilter create(@NonNull PackageManagerServiceInjector injector,
+ public static AppsFilterImpl create(@NonNull PackageManagerServiceInjector injector,
@NonNull PackageManagerInternal pmInt) {
final boolean forceSystemAppsQueryable =
injector.getContext().getResources()
@@ -514,7 +591,7 @@ public class AppsFilter implements Watchable, Snappable {
injector.getUserManagerInternal().getUserInfos());
}
};
- AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig,
+ AppsFilterImpl appsFilter = new AppsFilterImpl(stateProvider, featureConfig,
forcedQueryablePackageNames, forceSystemAppsQueryable, null,
injector.getBackgroundExecutor(), pmInt);
featureConfig.setAppsFilter(appsFilter);
@@ -527,7 +604,7 @@ public class AppsFilter implements Watchable, Snappable {
/** Returns true if the querying package may query for the potential target package */
private static boolean canQueryViaComponents(AndroidPackage querying,
- AndroidPackage potentialTarget, Set<String> protectedBroadcasts) {
+ AndroidPackage potentialTarget, WatchedArrayList<String> protectedBroadcasts) {
if (!querying.getQueriesIntents().isEmpty()) {
for (Intent intent : querying.getQueriesIntents()) {
if (matchesPackage(intent, potentialTarget, protectedBroadcasts)) {
@@ -599,7 +676,7 @@ public class AppsFilter implements Watchable, Snappable {
}
private static boolean matchesPackage(Intent intent, AndroidPackage potentialTarget,
- Set<String> protectedBroadcasts) {
+ WatchedArrayList<String> protectedBroadcasts) {
if (matchesAnyComponents(
intent, potentialTarget.getServices(), null /*protectedBroadcasts*/)) {
return true;
@@ -620,7 +697,7 @@ public class AppsFilter implements Watchable, Snappable {
private static boolean matchesAnyComponents(Intent intent,
List<? extends ParsedMainComponent> components,
- Set<String> protectedBroadcasts) {
+ WatchedArrayList<String> protectedBroadcasts) {
for (int i = ArrayUtils.size(components) - 1; i >= 0; i--) {
ParsedMainComponent component = components.get(i);
if (!component.isExported()) {
@@ -634,7 +711,7 @@ public class AppsFilter implements Watchable, Snappable {
}
private static boolean matchesAnyFilter(Intent intent, ParsedComponent component,
- Set<String> protectedBroadcasts) {
+ WatchedArrayList<String> protectedBroadcasts) {
List<ParsedIntentInfo> intents = component.getIntents();
for (int i = ArrayUtils.size(intents) - 1; i >= 0; i--) {
IntentFilter intentFilter = intents.get(i).getIntentFilter();
@@ -646,10 +723,10 @@ public class AppsFilter implements Watchable, Snappable {
}
private static boolean matchesIntentFilter(Intent intent, IntentFilter intentFilter,
- @Nullable Set<String> protectedBroadcasts) {
+ @Nullable WatchedArrayList<String> protectedBroadcasts) {
return intentFilter.match(intent.getAction(), intent.getType(), intent.getScheme(),
- intent.getData(), intent.getCategories(), "AppsFilter", true, protectedBroadcasts)
- > 0;
+ intent.getData(), intent.getCategories(), "AppsFilter", true,
+ protectedBroadcasts != null ? protectedBroadcasts.untrackedStorage() : null) > 0;
}
/**
@@ -665,7 +742,8 @@ public class AppsFilter implements Watchable, Snappable {
if (recipientUid == visibleUid) {
return false;
}
- final boolean changed = retainOnUpdate
+ final boolean changed;
+ changed = retainOnUpdate
? mRetainedImplicitlyQueryable.add(recipientUid, visibleUid)
: mImplicitlyQueryable.add(recipientUid, visibleUid);
if (changed && DEBUG_LOGGING) {
@@ -787,7 +865,8 @@ public class AppsFilter implements Watchable, Snappable {
for (int i = existingSettings.size() - 1; i >= 0; i--) {
final PackageStateInternal existingSetting = existingSettings.valueAt(i);
- if (existingSetting.getAppId() == newPkgSetting.getAppId() || existingSetting.getPkg()
+ if (existingSetting.getAppId() == newPkgSetting.getAppId()
+ || existingSetting.getPkg()
== null) {
continue;
}
@@ -796,11 +875,13 @@ public class AppsFilter implements Watchable, Snappable {
if (!newIsForceQueryable) {
if (!mQueriesViaComponentRequireRecompute && canQueryViaComponents(existingPkg,
newPkg, mProtectedBroadcasts)) {
- mQueriesViaComponent.add(existingSetting.getAppId(), newPkgSetting.getAppId());
+ mQueriesViaComponent.add(existingSetting.getAppId(),
+ newPkgSetting.getAppId());
}
if (canQueryViaPackage(existingPkg, newPkg)
|| canQueryAsInstaller(existingSetting, newPkg)) {
- mQueriesViaPackage.add(existingSetting.getAppId(), newPkgSetting.getAppId());
+ mQueriesViaPackage.add(existingSetting.getAppId(),
+ newPkgSetting.getAppId());
}
if (canQueryViaUsesLibrary(existingPkg, newPkg)) {
mQueryableViaUsesLibrary.add(existingSetting.getAppId(),
@@ -811,11 +892,13 @@ public class AppsFilter implements Watchable, Snappable {
if (!mForceQueryable.contains(existingSetting.getAppId())) {
if (!mQueriesViaComponentRequireRecompute && canQueryViaComponents(newPkg,
existingPkg, mProtectedBroadcasts)) {
- mQueriesViaComponent.add(newPkgSetting.getAppId(), existingSetting.getAppId());
+ mQueriesViaComponent.add(newPkgSetting.getAppId(),
+ existingSetting.getAppId());
}
if (canQueryViaPackage(newPkg, existingPkg)
|| canQueryAsInstaller(newPkgSetting, existingPkg)) {
- mQueriesViaPackage.add(newPkgSetting.getAppId(), existingSetting.getAppId());
+ mQueriesViaPackage.add(newPkgSetting.getAppId(),
+ existingSetting.getAppId());
}
if (canQueryViaUsesLibrary(newPkg, existingPkg)) {
mQueryableViaUsesLibrary.add(newPkgSetting.getAppId(),
@@ -1048,10 +1131,10 @@ public class AppsFilter implements Watchable, Snappable {
&& pkgSetting.getSigningDetails().signaturesMatchExactly(sysSigningDetails);
}
- private ArraySet<String> collectProtectedBroadcasts(
+ private void collectProtectedBroadcasts(
ArrayMap<String, ? extends PackageStateInternal> existingSettings,
@Nullable String excludePackage) {
- ArraySet<String> ret = new ArraySet<>();
+ mProtectedBroadcasts.clear();
for (int i = existingSettings.size() - 1; i >= 0; i--) {
PackageStateInternal setting = existingSettings.valueAt(i);
if (setting.getPkg() == null || setting.getPkg().getPackageName().equals(
@@ -1060,10 +1143,9 @@ public class AppsFilter implements Watchable, Snappable {
}
final List<String> protectedBroadcasts = setting.getPkg().getProtectedBroadcasts();
if (!protectedBroadcasts.isEmpty()) {
- ret.addAll(protectedBroadcasts);
+ mProtectedBroadcasts.addAll(protectedBroadcasts);
}
}
- return ret;
}
/**
@@ -1097,19 +1179,9 @@ public class AppsFilter implements Watchable, Snappable {
}
/**
- * Fetches all app Ids that a given setting is currently visible to, per provided user. This
- * only includes UIDs >= {@link Process#FIRST_APPLICATION_UID} as all other UIDs can already see
- * all applications.
- *
- * If the setting is visible to all UIDs, null is returned. If an app is not visible to any
- * applications, the int array will be empty.
- *
- * @param users the set of users that should be evaluated for this calculation
- * @param existingSettings the set of all package settings that currently exist on device
- * @return a SparseArray mapping userIds to a sorted int array of appIds that may view the
- * provided setting or null if the app is visible to all and no allow list should be
- * applied.
+ * See {@link AppsFilterSnapshot#getVisibilityAllowList(PackageStateInternal, int[], ArrayMap)}
*/
+ @Override
@Nullable
public SparseArray<int[]> getVisibilityAllowList(PackageStateInternal setting, int[] users,
ArrayMap<String, ? extends PackageStateInternal> existingSettings) {
@@ -1164,7 +1236,7 @@ public class AppsFilter implements Watchable, Snappable {
* Equivalent to calling {@link #addPackage(PackageStateInternal, boolean)} with
* {@code isReplace} equal to {@code false}.
*
- * @see AppsFilter#addPackage(PackageStateInternal, boolean)
+ * @see AppsFilterImpl#addPackage(PackageStateInternal, boolean)
*/
public void addPackage(PackageStateInternal newPkgSetting) {
addPackage(newPkgSetting, false /* isReplace */);
@@ -1178,13 +1250,15 @@ public class AppsFilter implements Watchable, Snappable {
*/
public void removePackage(PackageStateInternal setting, boolean isReplace) {
mStateProvider.runWithState((settings, users) -> {
+ final ArraySet<String> additionalChangedPackages;
final int userCount = users.length;
for (int u = 0; u < userCount; u++) {
final int userId = users[u].id;
final int removingUid = UserHandle.getUid(userId, setting.getAppId());
mImplicitlyQueryable.remove(removingUid);
for (int i = mImplicitlyQueryable.size() - 1; i >= 0; i--) {
- mImplicitlyQueryable.remove(mImplicitlyQueryable.keyAt(i), removingUid);
+ mImplicitlyQueryable.remove(mImplicitlyQueryable.keyAt(i),
+ removingUid);
}
if (isReplace) {
@@ -1201,12 +1275,14 @@ public class AppsFilter implements Watchable, Snappable {
if (!mQueriesViaComponentRequireRecompute) {
mQueriesViaComponent.remove(setting.getAppId());
for (int i = mQueriesViaComponent.size() - 1; i >= 0; i--) {
- mQueriesViaComponent.remove(mQueriesViaComponent.keyAt(i), setting.getAppId());
+ mQueriesViaComponent.remove(mQueriesViaComponent.keyAt(i),
+ setting.getAppId());
}
}
mQueriesViaPackage.remove(setting.getAppId());
for (int i = mQueriesViaPackage.size() - 1; i >= 0; i--) {
- mQueriesViaPackage.remove(mQueriesViaPackage.keyAt(i), setting.getAppId());
+ mQueriesViaPackage.remove(mQueriesViaPackage.keyAt(i),
+ setting.getAppId());
}
mQueryableViaUsesLibrary.remove(setting.getAppId());
for (int i = mQueryableViaUsesLibrary.size() - 1; i >= 0; i--) {
@@ -1216,23 +1292,26 @@ public class AppsFilter implements Watchable, Snappable {
mForceQueryable.remove(setting.getAppId());
- if (setting.getPkg() != null && !setting.getPkg().getProtectedBroadcasts().isEmpty()) {
+ if (setting.getPkg() != null
+ && !setting.getPkg().getProtectedBroadcasts().isEmpty()) {
final String removingPackageName = setting.getPkg().getPackageName();
- final Set<String> protectedBroadcasts = mProtectedBroadcasts;
- mProtectedBroadcasts = collectProtectedBroadcasts(settings, removingPackageName);
+ final ArrayList<String> protectedBroadcasts = new ArrayList<>();
+ protectedBroadcasts.addAll(mProtectedBroadcasts.untrackedStorage());
+ collectProtectedBroadcasts(settings, removingPackageName);
if (!mProtectedBroadcasts.containsAll(protectedBroadcasts)) {
mQueriesViaComponentRequireRecompute = true;
}
}
- ArraySet<String> additionalChangedPackages =
- mOverlayReferenceMapper.removePkg(setting.getPackageName());
-
+ additionalChangedPackages = mOverlayReferenceMapper.removePkg(setting.getPackageName());
mFeatureConfig.updatePackageState(setting, true /*removed*/);
- // After removing all traces of the package, if it's part of a shared user, re-add other
- // shared user members to re-establish visibility between them and other packages.
- // NOTE: this must come after all removals from data structures but before we update the
+ // After removing all traces of the package, if it's part of a shared user,
+ // re-add other
+ // shared user members to re-establish visibility between them and other
+ // packages.
+ // NOTE: this must come after all removals from data structures but before we
+ // update the
// cache
if (setting.hasSharedUser()) {
final ArraySet<PackageStateInternal> sharedUserPackages =
@@ -1285,15 +1364,11 @@ public class AppsFilter implements Watchable, Snappable {
}
/**
- * Returns true if the calling package should not be able to see the target package, false if no
- * filtering should be done.
- *
- * @param callingUid the uid of the caller attempting to access a package
- * @param callingSetting the setting attempting to access a package or null if it could not be
- * found
- * @param targetPkgSetting the package being accessed
- * @param userId the user in which this access is being attempted
+ * See
+ * {@link AppsFilterSnapshot#shouldFilterApplication(int, Object, PackageStateInternal,
+ * int)}
*/
+ @Override
public boolean shouldFilterApplication(int callingUid, @Nullable Object callingSetting,
PackageStateInternal targetPkgSetting, int userId) {
if (DEBUG_TRACING) {
@@ -1610,7 +1685,11 @@ public class AppsFilter implements Watchable, Snappable {
}
}
- boolean canQueryPackage(@NonNull AndroidPackage querying, String potentialTarget) {
+ /**
+ * See {@link AppsFilterSnapshot#canQueryPackage(AndroidPackage, String)}
+ */
+ @Override
+ public boolean canQueryPackage(@NonNull AndroidPackage querying, String potentialTarget) {
int appId = UserHandle.getAppId(querying.getUid());
if (appId < Process.FIRST_APPLICATION_UID) {
return true;
@@ -1665,6 +1744,11 @@ public class AppsFilter implements Watchable, Snappable {
+ targetPkgSetting + " " + description);
}
+ /**
+ * See {@link AppsFilterSnapshot#dumpQueries(PrintWriter, Integer, DumpState, int[],
+ * QuadFunction)}
+ */
+ @Override
public void dumpQueries(
PrintWriter pw, @Nullable Integer filteringAppId, DumpState dumpState, int[] users,
QuadFunction<Integer, Integer, Integer, Boolean, String[]> getPackagesForUid) {
@@ -1699,7 +1783,8 @@ public class AppsFilter implements Watchable, Snappable {
}
}
pw.println(" system apps queryable: " + mSystemAppsQueryable);
- dumpPackageSet(pw, filteringAppId, mForceQueryable, "forceQueryable", " ", expandPackages);
+ dumpPackageSet(pw, filteringAppId, mForceQueryable.untrackedStorage(),
+ "forceQueryable", " ", expandPackages);
pw.println(" queries via package name:");
dumpQueriesMap(pw, filteringAppId, mQueriesViaPackage, " ", expandPackages);
pw.println(" queries via component:");
@@ -1715,11 +1800,12 @@ public class AppsFilter implements Watchable, Snappable {
mRetainedImplicitlyQueryable, " ", expandPackages);
}
pw.println(" queryable via uses-library:");
- dumpQueriesMap(pw, filteringAppId, mQueryableViaUsesLibrary, " ", expandPackages);
+ dumpQueriesMap(pw, filteringAppId, mQueryableViaUsesLibrary, " ",
+ expandPackages);
}
private static void dumpQueriesMap(PrintWriter pw, @Nullable Integer filteringId,
- SparseSetArray<Integer> queriesMap, String spacing,
+ WatchedSparseSetArray<Integer> queriesMap, String spacing,
@Nullable ToString<Integer> toString) {
for (int i = 0; i < queriesMap.size(); i++) {
Integer callingId = queriesMap.keyAt(i);
@@ -1748,7 +1834,7 @@ public class AppsFilter implements Watchable, Snappable {
}
private static <T> void dumpPackageSet(PrintWriter pw, @Nullable T filteringId,
- Set<T> targetPkgSet, String subTitle, String spacing,
+ ArraySet<T> targetPkgSet, String subTitle, String spacing,
@Nullable ToString<T> toString) {
if (targetPkgSet != null && targetPkgSet.size() > 0
&& (filteringId == null || targetPkgSet.contains(filteringId))) {
diff --git a/services/core/java/com/android/server/pm/AppsFilterSnapshot.java b/services/core/java/com/android/server/pm/AppsFilterSnapshot.java
new file mode 100644
index 000000000000..cb8c649ded00
--- /dev/null
+++ b/services/core/java/com/android/server/pm/AppsFilterSnapshot.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2022 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.pm;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Process;
+import android.util.ArrayMap;
+import android.util.SparseArray;
+
+import com.android.internal.util.function.QuadFunction;
+import com.android.server.pm.parsing.pkg.AndroidPackage;
+import com.android.server.pm.pkg.PackageStateInternal;
+
+import java.io.PrintWriter;
+
+/**
+ * Read-only interface used by computer and snapshots to query the visibility of packages
+ */
+public interface AppsFilterSnapshot {
+ /**
+ * Fetches all app Ids that a given setting is currently visible to, per provided user. This
+ * only includes UIDs >= {@link Process#FIRST_APPLICATION_UID} as all other UIDs can already see
+ * all applications.
+ *
+ * If the setting is visible to all UIDs, null is returned. If an app is not visible to any
+ * applications, the int array will be empty.
+ *
+ * @param users the set of users that should be evaluated for this calculation
+ * @param existingSettings the set of all package settings that currently exist on device
+ * @return a SparseArray mapping userIds to a sorted int array of appIds that may view the
+ * provided setting or null if the app is visible to all and no allow list should be
+ * applied.
+ */
+ SparseArray<int[]> getVisibilityAllowList(PackageStateInternal setting, int[] users,
+ ArrayMap<String, ? extends PackageStateInternal> existingSettings);
+
+ /**
+ * Returns true if the calling package should not be able to see the target package, false if no
+ * filtering should be done.
+ *
+ * @param callingUid the uid of the caller attempting to access a package
+ * @param callingSetting the setting attempting to access a package or null if it could not be
+ * found
+ * @param targetPkgSetting the package being accessed
+ * @param userId the user in which this access is being attempted
+ */
+ boolean shouldFilterApplication(int callingUid, @Nullable Object callingSetting,
+ PackageStateInternal targetPkgSetting, int userId);
+
+ /**
+ * Returns whether the querying package is allowed to see the target package.
+ *
+ * @param querying the querying package
+ * @param potentialTarget the package name of the target package
+ */
+ boolean canQueryPackage(@NonNull AndroidPackage querying, String potentialTarget);
+
+ /**
+ * Dump the packages that are queryable by the querying package.
+ *
+ * @param pw the output print writer
+ * @param filteringAppId the querying package's app ID
+ * @param dumpState the state of the dumping
+ * @param users the users for which the packages are installed
+ * @param getPackagesForUid the function that produces the package names for given uids
+ */
+ void dumpQueries(PrintWriter pw, @Nullable Integer filteringAppId, DumpState dumpState,
+ int[] users,
+ QuadFunction<Integer, Integer, Integer, Boolean, String[]> getPackagesForUid);
+
+}
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index df7c3ec6f260..80d61b593fd2 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -385,7 +385,7 @@ public class ComputerEngine implements Computer {
private final ResolveInfo mInstantAppInstallerInfo;
private final InstantAppRegistry mInstantAppRegistry;
private final ApplicationInfo mLocalAndroidApplication;
- private final AppsFilter mAppsFilter;
+ private final AppsFilterSnapshot mAppsFilter;
private final WatchedArrayMap<String, Integer> mFrozenPackages;
// Immutable service attribute
diff --git a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
index 2fe7913342a2..ec6443db9f0f 100644
--- a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
+++ b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
@@ -722,6 +722,11 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal {
return snapshot().getSharedUser(sharedUserAppId);
}
+ @Override
+ public boolean isUidPrivileged(int uid) {
+ return snapshot().isUidPrivileged(uid);
+ }
+
@NonNull
@Override
@Deprecated
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index f6d8d72cc382..e1af9a7ab96f 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -720,7 +720,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
}
@Watched
- final AppsFilter mAppsFilter;
+ final AppsFilterImpl mAppsFilter;
final PackageParser2.Callback mPackageParserCallback;
@@ -979,7 +979,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
public final InstantAppRegistry instantAppRegistry;
public final ApplicationInfo androidApplication;
public final String appPredictionServicePackage;
- public final AppsFilter appsFilter;
+ public final AppsFilterSnapshot appsFilter;
public final ComponentResolverApi componentResolver;
public final PackageManagerService service;
public final WatchedArrayMap<String, Integer> frozenPackages;
@@ -1431,7 +1431,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
RuntimePermissionsPersistence.createInstance(),
i.getPermissionManagerServiceInternal(),
domainVerificationService, lock),
- (i, pm) -> AppsFilter.create(i, i.getLocalService(PackageManagerInternal.class)),
+ (i, pm) -> AppsFilterImpl.create(i,
+ i.getLocalService(PackageManagerInternal.class)),
(i, pm) -> (PlatformCompat) ServiceManager.getService("platform_compat"),
(i, pm) -> SystemConfig.getInstance(),
(i, pm) -> new PackageDexOptimizer(i.getInstaller(), i.getInstallLock(),
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java b/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java
index a02237fa90ce..396994b04514 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceInjector.java
@@ -99,7 +99,7 @@ public class PackageManagerServiceInjector {
private final Singleton<UserManagerService>
mUserManagerProducer;
private final Singleton<Settings> mSettingsProducer;
- private final Singleton<AppsFilter> mAppsFilterProducer;
+ private final Singleton<AppsFilterImpl> mAppsFilterProducer;
private final Singleton<PlatformCompat>
mPlatformCompatProducer;
private final Singleton<SystemConfig> mSystemConfigProducer;
@@ -148,7 +148,7 @@ public class PackageManagerServiceInjector {
Producer<PermissionManagerServiceInternal> permissionManagerServiceProducer,
Producer<UserManagerService> userManagerProducer,
Producer<Settings> settingsProducer,
- Producer<AppsFilter> appsFilterProducer,
+ Producer<AppsFilterImpl> appsFilterProducer,
Producer<PlatformCompat> platformCompatProducer,
Producer<SystemConfig> systemConfigProducer,
Producer<PackageDexOptimizer> packageDexOptimizerProducer,
@@ -282,7 +282,7 @@ public class PackageManagerServiceInjector {
return mSettingsProducer.get(this, mPackageManager);
}
- public AppsFilter getAppsFilter() {
+ public AppsFilterImpl getAppsFilter() {
return mAppsFilterProducer.get(this, mPackageManager);
}
diff --git a/services/core/java/com/android/server/utils/WatchedArrayList.java b/services/core/java/com/android/server/utils/WatchedArrayList.java
index bb0ba1329d86..6059f9675e34 100644
--- a/services/core/java/com/android/server/utils/WatchedArrayList.java
+++ b/services/core/java/com/android/server/utils/WatchedArrayList.java
@@ -273,6 +273,13 @@ public class WatchedArrayList<E> extends WatchableImpl
}
/**
+ * Return true if all the objects in the given collection are in this array list.
+ */
+ public boolean containsAll(Collection<?> c) {
+ return mStorage.containsAll(c);
+ }
+
+ /**
* Ensure capacity.
*/
public void ensureCapacity(int min) {
diff --git a/services/core/java/com/android/server/utils/WatchedSparseBooleanMatrix.java b/services/core/java/com/android/server/utils/WatchedSparseBooleanMatrix.java
index 25ae00004b3e..c43e7f9babe6 100644
--- a/services/core/java/com/android/server/utils/WatchedSparseBooleanMatrix.java
+++ b/services/core/java/com/android/server/utils/WatchedSparseBooleanMatrix.java
@@ -18,6 +18,7 @@ package com.android.server.utils;
import static com.android.internal.annotations.VisibleForTesting.Visibility.PRIVATE;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Size;
@@ -168,12 +169,19 @@ public class WatchedSparseBooleanMatrix extends WatchableImpl implements Snappab
* A copy constructor that can be used for snapshotting.
*/
private WatchedSparseBooleanMatrix(WatchedSparseBooleanMatrix r) {
- mOrder = r.mOrder;
- mSize = r.mSize;
- mKeys = r.mKeys.clone();
- mMap = r.mMap.clone();
- mInUse = r.mInUse.clone();
- mValues = r.mValues.clone();
+ copyFrom(r);
+ }
+
+ /**
+ * Copy from src to this.
+ */
+ public void copyFrom(@NonNull WatchedSparseBooleanMatrix src) {
+ mOrder = src.mOrder;
+ mSize = src.mSize;
+ mKeys = src.mKeys.clone();
+ mMap = src.mMap.clone();
+ mInUse = src.mInUse.clone();
+ mValues = src.mValues.clone();
}
/**
diff --git a/services/core/java/com/android/server/utils/WatchedSparseSetArray.java b/services/core/java/com/android/server/utils/WatchedSparseSetArray.java
new file mode 100644
index 000000000000..05db12e49a13
--- /dev/null
+++ b/services/core/java/com/android/server/utils/WatchedSparseSetArray.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2022 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.utils;
+
+import android.annotation.NonNull;
+import android.util.ArraySet;
+import android.util.SparseSetArray;
+
+
+/**
+ * A watched variant of SparseSetArray. Changes to the array are notified to
+ * registered {@link Watcher}s.
+ * @param <T> The element type, stored in the SparseSetArray.
+ */
+public class WatchedSparseSetArray<T> extends WatchableImpl implements Snappable {
+ // The storage
+ private final SparseSetArray mStorage;
+
+ // A private convenience function
+ private void onChanged() {
+ dispatchChange(this);
+ }
+
+ public WatchedSparseSetArray() {
+ mStorage = new SparseSetArray();
+ }
+
+ /**
+ * Creates a new WatchedSparseSetArray from an existing WatchedSparseSetArray and copy its data
+ */
+ public WatchedSparseSetArray(@NonNull WatchedSparseSetArray<T> watchedSparseSetArray) {
+ mStorage = new SparseSetArray(watchedSparseSetArray.untrackedStorage());
+ }
+
+ /**
+ * Return the underlying storage. This breaks the wrapper but is necessary when
+ * passing the array to distant methods.
+ */
+ public SparseSetArray<T> untrackedStorage() {
+ return mStorage;
+ }
+
+ /**
+ * Add a value for key n.
+ * @return FALSE when the value already existed for the given key, TRUE otherwise.
+ */
+ public boolean add(int n, T value) {
+ final boolean res = mStorage.add(n, value);
+ onChanged();
+ return res;
+ }
+
+ /**
+ * Removes all mappings from this SparseSetArray.
+ */
+ public void clear() {
+ mStorage.clear();
+ onChanged();
+ }
+
+ /**
+ * @return whether the value exists for the key n.
+ */
+ public boolean contains(int n, T value) {
+ return mStorage.contains(n, value);
+ }
+
+ /**
+ * @return the set of items of key n
+ */
+ public ArraySet<T> get(int n) {
+ return mStorage.get(n);
+ }
+
+ /**
+ * Remove a value for key n.
+ * @return TRUE when the value existed for the given key and removed, FALSE otherwise.
+ */
+ public boolean remove(int n, T value) {
+ if (mStorage.remove(n, value)) {
+ onChanged();
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Remove all values for key n.
+ */
+ public void remove(int n) {
+ mStorage.remove(n);
+ onChanged();
+ }
+
+ /**
+ * Return the size of the SparseSetArray.
+ */
+ public int size() {
+ return mStorage.size();
+ }
+
+ /**
+ * Return the key stored at the given index.
+ */
+ public int keyAt(int index) {
+ return mStorage.keyAt(index);
+ }
+
+ /**
+ * Return the size of the array at the given index.
+ */
+ public int sizeAt(int index) {
+ return mStorage.sizeAt(index);
+ }
+
+ /**
+ * Return the value in the SetArray at the given key index and value index.
+ */
+ public T valueAt(int intIndex, int valueIndex) {
+ return (T) mStorage.valueAt(intIndex, valueIndex);
+ }
+
+ @NonNull
+ @Override
+ public Object snapshot() {
+ WatchedSparseSetArray l = new WatchedSparseSetArray(this);
+ l.seal();
+ return l;
+ }
+
+ /**
+ * Make <this> a snapshot of the argument. Note that <this> is immutable when the
+ * method returns. <this> must be empty when the function is called.
+ * @param r The source array, which is copied into <this>
+ */
+ public void snapshot(@NonNull WatchedSparseSetArray<T> r) {
+ snapshot(this, r);
+ }
+
+ /**
+ * Make the destination a copy of the source. If the element is a subclass of Snapper then the
+ * copy contains snapshots of the elements. Otherwise the copy contains references to the
+ * elements. The destination must be initially empty. Upon return, the destination is
+ * immutable.
+ * @param dst The destination array. It must be empty.
+ * @param src The source array. It is not modified.
+ */
+ public static void snapshot(@NonNull WatchedSparseSetArray dst,
+ @NonNull WatchedSparseSetArray src) {
+ if (dst.size() != 0) {
+ throw new IllegalArgumentException("snapshot destination is not empty");
+ }
+ final int arraySize = src.size();
+ for (int i = 0; i < arraySize; i++) {
+ final ArraySet set = src.get(i);
+ final int setSize = set.size();
+ for (int j = 0; j < setSize; j++) {
+ dst.add(src.keyAt(i), set.valueAt(j));
+ }
+ }
+ dst.seal();
+ }
+}
diff --git a/services/core/java/com/android/server/vibrator/VibrationSettings.java b/services/core/java/com/android/server/vibrator/VibrationSettings.java
index bedb9f0528c6..18e9904142eb 100644
--- a/services/core/java/com/android/server/vibrator/VibrationSettings.java
+++ b/services/core/java/com/android/server/vibrator/VibrationSettings.java
@@ -604,8 +604,7 @@ final class VibrationSettings {
}
private void registerSettingsChangeReceiver(IntentFilter intentFilter) {
- mContext.registerReceiver(mSettingChangeReceiver, intentFilter,
- Context.RECEIVER_NOT_EXPORTED);
+ mContext.registerReceiver(mSettingChangeReceiver, intentFilter);
}
@Nullable
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 003268b33cdc..f6396556ae22 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -195,7 +195,6 @@ class ActivityStarter {
private TaskFragment mInTaskFragment;
@VisibleForTesting
boolean mAddingToTask;
- private Task mReuseTask;
private ActivityInfo mNewTaskInfo;
private Intent mNewTaskIntent;
@@ -204,6 +203,7 @@ class ActivityStarter {
// The task that the last activity was started into. We currently reset the actual start
// activity's task and as a result may not have a reference to the task in all cases
private Task mTargetTask;
+ private boolean mIsTaskCleared;
private boolean mMovedToFront;
private boolean mNoAnimation;
private boolean mAvoidMoveToFront;
@@ -597,7 +597,6 @@ class ActivityStarter {
mInTask = starter.mInTask;
mInTaskFragment = starter.mInTaskFragment;
mAddingToTask = starter.mAddingToTask;
- mReuseTask = starter.mReuseTask;
mNewTaskInfo = starter.mNewTaskInfo;
mNewTaskIntent = starter.mNewTaskIntent;
@@ -605,6 +604,7 @@ class ActivityStarter {
mTargetTask = starter.mTargetTask;
mTargetRootTask = starter.mTargetRootTask;
+ mIsTaskCleared = starter.mIsTaskCleared;
mMovedToFront = starter.mMovedToFront;
mNoAnimation = starter.mNoAnimation;
mAvoidMoveToFront = starter.mAvoidMoveToFront;
@@ -1568,10 +1568,7 @@ class ActivityStarter {
return;
}
- final int clearTaskFlags = FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK;
- boolean clearedTask = (mLaunchFlags & clearTaskFlags) == clearTaskFlags
- && mReuseTask != null;
- if (result == START_TASK_TO_FRONT || result == START_DELIVERED_TO_TOP || clearedTask) {
+ if (result == START_TASK_TO_FRONT || result == START_DELIVERED_TO_TOP) {
// The activity was already running so it wasn't started, but either brought to the
// front or the new intent was delivered to it since it was already in front. Notify
// anyone interested in this piece of information.
@@ -1581,7 +1578,7 @@ class ActivityStarter {
final ActivityRecord top = targetTask.getTopNonFinishingActivity();
final boolean visible = top != null && top.isVisible();
mService.getTaskChangeNotificationController().notifyActivityRestartAttempt(
- targetTask.getTaskInfo(), homeTaskVisible, clearedTask, visible);
+ targetTask.getTaskInfo(), homeTaskVisible, mIsTaskCleared, visible);
}
if (ActivityManager.isStartResultSuccessful(result)) {
@@ -1927,6 +1924,7 @@ class ActivityStarter {
return START_SUCCESS;
}
+ /** Returns the leaf task where the target activity may be placed. */
private Task computeTargetTask() {
if (mStartActivity.resultTo == null && mInTask == null && !mAddingToTask
&& (mLaunchFlags & FLAG_ACTIVITY_NEW_TASK) != 0) {
@@ -1935,6 +1933,12 @@ class ActivityStarter {
} else if (mSourceRecord != null) {
return mSourceRecord.getTask();
} else if (mInTask != null) {
+ // The task is specified from AppTaskImpl, so it may not be attached yet.
+ if (!mInTask.isAttached()) {
+ // Attach the task to display area. Ignore the returned root task (though usually
+ // they are the same) because "target task" should be leaf task.
+ getOrCreateRootTask(mStartActivity, mLaunchFlags, mInTask, mOptions);
+ }
return mInTask;
} else {
final Task rootTask = getOrCreateRootTask(mStartActivity, mLaunchFlags, null /* task */,
@@ -2225,13 +2229,12 @@ class ActivityStarter {
// activity. Well that should not be too hard...
// Note: we must persist the {@link Task} first as intentActivity could be
// removed from calling performClearTaskLocked (For example, if it is being brought out
- // of history or if it is finished immediately), thus disassociating the task. Also note
- // that mReuseTask is reset as a result of {@link Task#performClearTaskLocked}
- // launching another activity. Keep the task-overlay activity because the targetTask
- // will be reused to launch new activity.
+ // of history or if it is finished immediately), thus disassociating the task. Keep the
+ // task-overlay activity because the targetTask will be reused to launch new activity.
targetTask.performClearTaskForReuse(true /* excludingTaskOverlay*/);
targetTask.setIntent(mStartActivity);
mAddingToTask = true;
+ mIsTaskCleared = true;
} else if ((mLaunchFlags & FLAG_ACTIVITY_CLEAR_TOP) != 0
|| isDocumentLaunchesIntoExisting(mLaunchFlags)
|| isLaunchModeOneOf(LAUNCH_SINGLE_INSTANCE, LAUNCH_SINGLE_TASK,
@@ -2344,7 +2347,6 @@ class ActivityStarter {
mInTask = null;
mInTaskFragment = null;
mAddingToTask = false;
- mReuseTask = null;
mNewTaskInfo = null;
mNewTaskIntent = null;
@@ -2352,6 +2354,7 @@ class ActivityStarter {
mTargetRootTask = null;
mTargetTask = null;
+ mIsTaskCleared = false;
mMovedToFront = false;
mNoAnimation = false;
mAvoidMoveToFront = false;
@@ -2569,8 +2572,6 @@ class ActivityStarter {
} else {
mAddingToTask = true;
}
-
- mReuseTask = mInTask;
} else {
mInTask = null;
// Launch ResolverActivity in the source task, so that it stays in the task bounds
@@ -2843,7 +2844,7 @@ class ActivityStarter {
mNewTaskIntent != null ? mNewTaskIntent : mIntent, mVoiceSession,
mVoiceInteractor, toTop, mStartActivity, mSourceRecord, mOptions);
task.mTransitionController.collectExistenceChange(task);
- addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask - mReuseTask");
+ addOrReparentStartingActivity(task, "setTaskFromReuseOrCreateNewTask");
ProtoLog.v(WM_DEBUG_TASKS, "Starting new activity %s in new task %s",
mStartActivity, mStartActivity.getTask());
@@ -2953,11 +2954,6 @@ class ActivityStarter {
private Task getOrCreateRootTask(ActivityRecord r, int launchFlags, Task task,
ActivityOptions aOptions) {
- // We are reusing a task, keep the root task!
- if (mReuseTask != null) {
- return mReuseTask.getRootTask();
- }
-
final boolean onTop =
(aOptions == null || !aOptions.getAvoidMoveToFront()) && !mLaunchTaskBehind;
final Task sourceTask = mSourceRecord != null ? mSourceRecord.getTask() : null;
diff --git a/services/core/java/com/android/server/wm/AppTaskImpl.java b/services/core/java/com/android/server/wm/AppTaskImpl.java
index 22a2c41ca5f3..6e46fa6b67d0 100644
--- a/services/core/java/com/android/server/wm/AppTaskImpl.java
+++ b/services/core/java/com/android/server/wm/AppTaskImpl.java
@@ -26,6 +26,8 @@ import android.content.Intent;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
import android.os.UserHandle;
/**
@@ -54,6 +56,16 @@ class AppTaskImpl extends IAppTask.Stub {
}
@Override
+ public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
+ throws RemoteException {
+ try {
+ return super.onTransact(code, data, reply, flags);
+ } catch (RuntimeException e) {
+ throw ActivityTaskManagerService.logAndRethrowRuntimeExceptionOnTransact(TAG, e);
+ }
+ }
+
+ @Override
public void finishAndRemoveTask() {
checkCaller();
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 81560d4f8676..466075702409 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -1992,7 +1992,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
scheduleAnimation();
forAllWindows(w -> {
- if (w.mHasSurface && !rotateSeamlessly) {
+ if (!w.mHasSurface) return;
+ if (!rotateSeamlessly) {
ProtoLog.v(WM_DEBUG_ORIENTATION, "Set mOrientationChanging of %s", w);
w.setOrientationChanging(true);
}
@@ -4047,12 +4048,20 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
@VisibleForTesting
void setImeInputTarget(InputTarget target) {
mImeInputTarget = target;
- boolean canScreenshot = mImeInputTarget == null || mImeInputTarget.canScreenshotIme();
- if (mImeWindowsContainer.setCanScreenshot(canScreenshot)) {
+ if (refreshImeSecureFlag(getPendingTransaction())) {
mWmService.requestTraversal();
}
}
+ /**
+ * Re-check the IME target's SECURE flag since it's possible to have changed after the target
+ * was set.
+ */
+ boolean refreshImeSecureFlag(Transaction t) {
+ boolean canScreenshot = mImeInputTarget == null || mImeInputTarget.canScreenshotIme();
+ return mImeWindowsContainer.setCanScreenshot(t, canScreenshot);
+ }
+
@VisibleForTesting
void setImeControlTarget(InsetsControlTarget target) {
mImeControlTarget = target;
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 214524c2f42c..2900a5df6198 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -3782,11 +3782,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
return INVALID_WINDOW_TYPE;
}
- boolean setCanScreenshot(boolean canScreenshot) {
+ boolean setCanScreenshot(Transaction t, boolean canScreenshot) {
if (mSurfaceControl == null) {
return false;
}
- getPendingTransaction().setSecure(mSurfaceControl, !canScreenshot);
+ t.setSecure(mSurfaceControl, !canScreenshot);
return true;
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 51d68bc0177a..237982220a18 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -2606,11 +2606,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return;
}
+ // Remove immediately if there is display transition because the animation is
+ // usually unnoticeable (e.g. covered by rotation animation) and the animation
+ // bounds could be inconsistent, such as depending on when the window applies
+ // its draw transaction with new rotation.
+ final boolean allowExitAnimation = !getDisplayContent().inTransition();
+
if (wasVisible) {
final int transit = (!startingWindow) ? TRANSIT_EXIT : TRANSIT_PREVIEW_DONE;
// Try starting an animation.
- if (mWinAnimator.applyAnimationLocked(transit, false)) {
+ if (allowExitAnimation && mWinAnimator.applyAnimationLocked(transit, false)) {
ProtoLog.v(WM_DEBUG_ANIM,
"Set animatingExit: reason=remove/applyAnimation win=%s", this);
mAnimatingExit = true;
@@ -2624,7 +2630,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
mWmService.mAccessibilityController.onWindowTransition(this, transit);
}
}
- final boolean isAnimating = mAnimatingExit || isExitAnimationRunningSelfOrParent();
+ final boolean isAnimating = allowExitAnimation
+ && (mAnimatingExit || isExitAnimationRunningSelfOrParent());
final boolean lastWindowIsStartingWindow = startingWindow && mActivityRecord != null
&& mActivityRecord.isLastWindow(this);
// We delay the removal of a window if it has a showing surface that can be used to run
@@ -3602,6 +3609,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
mAnimatingExit = false;
ProtoLog.d(WM_DEBUG_ANIM, "Clear animatingExit: reason=destroySurface win=%s", this);
+ // Clear the flag so the buffer requested for the next new surface won't be dropped by
+ // mistaking the surface size needs to update.
+ mReportOrientationChanged = false;
+
if (useBLASTSync()) {
immediatelyNotifyBlastSync();
}
@@ -5284,12 +5295,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
if (mControllableInsetProvider != null) {
return;
}
- if (getDisplayContent().inTransition()) {
- // Skip because the animation is usually unnoticeable (e.g. covered by rotation
- // animation) and the animation bounds could be inconsistent, such as depending
- // on when the window applies its draw transaction with new rotation.
- return;
- }
final DisplayInfo displayInfo = getDisplayInfo();
anim.initialize(mWindowFrames.mFrame.width(), mWindowFrames.mFrame.height(),
diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java
index c2414e72abbd..5f43800bd9d5 100644
--- a/services/core/java/com/android/server/wm/WindowSurfaceController.java
+++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java
@@ -217,6 +217,11 @@ class WindowSurfaceController {
mService.openSurfaceTransaction();
try {
getGlobalTransaction().setSecure(mSurfaceControl, isSecure);
+
+ final DisplayContent dc = mAnimator.mWin.mDisplayContent;
+ if (dc != null) {
+ dc.refreshImeSecureFlag(getGlobalTransaction());
+ }
} finally {
mService.closeSurfaceTransaction("setSecure");
if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG, "<<< CLOSE TRANSACTION setSecureLocked");
diff --git a/services/tests/PackageManagerComponentOverrideTests/src/com/android/server/pm/test/override/PackageManagerComponentLabelIconOverrideTest.kt b/services/tests/PackageManagerComponentOverrideTests/src/com/android/server/pm/test/override/PackageManagerComponentLabelIconOverrideTest.kt
index 7017440a86bb..7b152247eb9c 100644
--- a/services/tests/PackageManagerComponentOverrideTests/src/com/android/server/pm/test/override/PackageManagerComponentLabelIconOverrideTest.kt
+++ b/services/tests/PackageManagerComponentOverrideTests/src/com/android/server/pm/test/override/PackageManagerComponentLabelIconOverrideTest.kt
@@ -34,7 +34,6 @@ import com.android.server.pm.test.override.PackageManagerComponentLabelIconOverr
import com.android.server.testutils.TestHandler
import com.android.server.testutils.mock
import com.android.server.testutils.mockThrowOnUnmocked
-import com.android.server.testutils.spy
import com.android.server.testutils.whenever
import com.android.server.wm.ActivityTaskManagerInternal
import com.google.common.truth.Truth.assertThat
@@ -46,13 +45,9 @@ import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
-import org.mockito.Mockito.clearInvocations
-import org.mockito.Mockito.doAnswer
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.intThat
-import org.mockito.Mockito.never
import org.mockito.Mockito.same
-import org.mockito.Mockito.verify
import org.testng.Assert.assertThrows
import java.io.File
import java.util.UUID
@@ -365,7 +360,7 @@ class PackageManagerComponentLabelIconOverrideTest {
val mockActivityTaskManager: ActivityTaskManagerInternal = mockThrowOnUnmocked {
whenever(this.isCallerRecents(anyInt())) { false }
}
- val mockAppsFilter: AppsFilter = mockThrowOnUnmocked {
+ val mockAppsFilter: AppsFilterImpl = mockThrowOnUnmocked {
whenever(this.shouldFilterApplication(anyInt(), any<PackageSetting>(),
any<PackageSetting>(), anyInt())) { false }
whenever(this.snapshot()) { this@mockThrowOnUnmocked }
diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
index c9523ec16b8f..529def3697cd 100644
--- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java
@@ -27,6 +27,7 @@ import static android.app.AlarmManager.FLAG_STANDALONE;
import static android.app.AlarmManager.FLAG_WAKE_FROM_IDLE;
import static android.app.AlarmManager.RTC;
import static android.app.AlarmManager.RTC_WAKEUP;
+import static android.app.AlarmManager.SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT;
import static android.app.AlarmManager.WINDOW_EXACT;
import static android.app.AlarmManager.WINDOW_HEURISTIC;
import static android.app.AppOpsManager.MODE_ALLOWED;
@@ -122,6 +123,7 @@ import android.app.IAlarmListener;
import android.app.IAlarmManager;
import android.app.PendingIntent;
import android.app.compat.CompatChanges;
+import android.app.role.RoleManager;
import android.app.usage.UsageStatsManagerInternal;
import android.content.ContentResolver;
import android.content.Context;
@@ -184,6 +186,7 @@ import org.mockito.quality.Strictness;
import org.mockito.stubbing.Answer;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -232,6 +235,8 @@ public class AlarmManagerServiceTest {
@Mock
private PackageManagerInternal mPackageManagerInternal;
@Mock
+ private RoleManager mRoleManager;
+ @Mock
private AppStateTrackerImpl mAppStateTracker;
@Mock
private AlarmManagerService.ClockReceiver mClockReceiver;
@@ -457,6 +462,7 @@ public class AlarmManagerServiceTest {
when(mMockContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);
when(mMockContext.getSystemService(BatteryManager.class)).thenReturn(mBatteryManager);
+ when(mMockContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager);
registerAppIds(new String[]{TEST_CALLING_PACKAGE},
new Integer[]{UserHandle.getAppId(TEST_CALLING_UID)});
@@ -3191,6 +3197,70 @@ public class AlarmManagerServiceTest {
}
@Test
+ public void isScheduleExactAlarmAllowedByDefault() {
+ final String package1 = "priv";
+ final String package2 = "signed";
+ final String package3 = "normal";
+ final String package4 = "wellbeing";
+ final int uid1 = 1294;
+ final int uid2 = 8321;
+ final int uid3 = 3412;
+ final int uid4 = 4591;
+
+ when(mPackageManagerInternal.isUidPrivileged(uid1)).thenReturn(true);
+ when(mPackageManagerInternal.isUidPrivileged(uid2)).thenReturn(false);
+ when(mPackageManagerInternal.isUidPrivileged(uid3)).thenReturn(false);
+ when(mPackageManagerInternal.isUidPrivileged(uid4)).thenReturn(false);
+
+ when(mPackageManagerInternal.isPlatformSigned(package1)).thenReturn(false);
+ when(mPackageManagerInternal.isPlatformSigned(package2)).thenReturn(true);
+ when(mPackageManagerInternal.isPlatformSigned(package3)).thenReturn(false);
+ when(mPackageManagerInternal.isPlatformSigned(package4)).thenReturn(false);
+
+ when(mRoleManager.getRoleHolders(RoleManager.ROLE_SYSTEM_WELLBEING)).thenReturn(
+ Arrays.asList(package4));
+
+ mockChangeEnabled(SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT, true);
+ mService.mConstants.SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT = false;
+ mService.mConstants.EXACT_ALARM_DENY_LIST = new ArraySet<>(new String[] {
+ package1,
+ package3,
+ });
+
+ // Deny listed packages will be false.
+ assertFalse(mService.isScheduleExactAlarmAllowedByDefault(package1, uid1));
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package2, uid2));
+ assertFalse(mService.isScheduleExactAlarmAllowedByDefault(package3, uid3));
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package4, uid4));
+
+ mockChangeEnabled(SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT, false);
+ mService.mConstants.SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT = true;
+ mService.mConstants.EXACT_ALARM_DENY_LIST = new ArraySet<>(new String[] {
+ package1,
+ package3,
+ });
+
+ // Same as above, deny listed packages will be false.
+ assertFalse(mService.isScheduleExactAlarmAllowedByDefault(package1, uid1));
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package2, uid2));
+ assertFalse(mService.isScheduleExactAlarmAllowedByDefault(package3, uid3));
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package4, uid4));
+
+ mockChangeEnabled(SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT, true);
+ mService.mConstants.SCHEDULE_EXACT_ALARM_DENIED_BY_DEFAULT = true;
+ mService.mConstants.EXACT_ALARM_DENY_LIST = new ArraySet<>(new String[] {
+ package1,
+ package3,
+ });
+
+ // Deny list doesn't matter now, only exemptions should be true.
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package1, uid1));
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package2, uid2));
+ assertFalse(mService.isScheduleExactAlarmAllowedByDefault(package3, uid3));
+ assertTrue(mService.isScheduleExactAlarmAllowedByDefault(package4, uid4));
+ }
+
+ @Test
public void alarmScheduledAtomPushed() {
for (int i = 0; i < 10; i++) {
final PendingIntent pi = getNewMockPendingIntent();
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
index 0567f58b1bbe..353c8e22cceb 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt
@@ -194,7 +194,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) {
val packageParser: PackageParser2 = mock()
val keySetManagerService: KeySetManagerService = mock()
val packageAbiHelper: PackageAbiHelper = mock()
- val appsFilter: AppsFilter = mock {
+ val appsFilter: AppsFilterImpl = mock {
whenever(snapshot()) { this@mock }
}
val dexManager: DexManager = mock()
diff --git a/services/tests/servicestests/res/xml/test_account_type1_authenticator.xml b/services/tests/servicestests/res/xml/test_account_type1_authenticator.xml
index 0c531de1827e..a4558acdc274 100644
--- a/services/tests/servicestests/res/xml/test_account_type1_authenticator.xml
+++ b/services/tests/servicestests/res/xml/test_account_type1_authenticator.xml
@@ -18,4 +18,5 @@
android:accountType="@string/test_account_type1"
android:icon="@drawable/icon1"
android:smallIcon="@drawable/icon1"
+ android:customTokens="true"
android:label="@string/test_account_type1_authenticator_label" />
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java
index 3c2fbd9ccf7d..863dcb64b885 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/MagnificationProcessorTest.java
@@ -18,8 +18,11 @@ package com.android.server.accessibility;
import static android.accessibilityservice.MagnificationConfig.MAGNIFICATION_MODE_FULLSCREEN;
import static android.accessibilityservice.MagnificationConfig.MAGNIFICATION_MODE_WINDOW;
+import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
+import static android.provider.Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -255,6 +258,20 @@ public class MagnificationProcessorTest {
}
@Test
+ public void getCurrentMode_changeOtherDisplayMode_returnDefaultModeOnDefaultDisplay() {
+ final int otherDisplayId = TEST_DISPLAY + 1;
+ setMagnificationActivated(otherDisplayId, MAGNIFICATION_MODE_WINDOW);
+
+ int currentMode = mMagnificationProcessor.getControllingMode(TEST_DISPLAY);
+
+ assertFalse(mMockMagnificationController.isActivated(TEST_DISPLAY,
+ ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN));
+ assertFalse(mMockMagnificationController.isActivated(TEST_DISPLAY,
+ ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
+ assertEquals(MAGNIFICATION_MODE_FULLSCREEN, currentMode);
+ }
+
+ @Test
public void resetFullscreenMagnification_fullscreenMagnificationActivated() {
setMagnificationActivated(TEST_DISPLAY, MAGNIFICATION_MODE_FULLSCREEN);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java
index cc6d7611b4a1..ca22f80a7189 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/MagnificationControllerTest.java
@@ -555,7 +555,22 @@ public class MagnificationControllerTest {
}
@Test
- public void onRectangleOnScreenRequested_NoneIsActivated_noneDispatchEvent() {
+ public void onRectangleOnScreenRequested_noneIsActivated_noneDispatchEvent() {
+ UiChangesForAccessibilityCallbacks callbacks = getUiChangesForAccessibilityCallbacks();
+
+ callbacks.onRectangleOnScreenRequested(TEST_DISPLAY,
+ TEST_RECT.left, TEST_RECT.top, TEST_RECT.right, TEST_RECT.bottom);
+
+ verify(mScreenMagnificationController, never()).onRectangleOnScreenRequested(
+ eq(TEST_DISPLAY), anyInt(), anyInt(), anyInt(), anyInt());
+ verify(mWindowMagnificationManager, never()).onRectangleOnScreenRequested(anyInt(),
+ anyInt(), anyInt(), anyInt(), anyInt());
+ }
+
+ @Test
+ public void onRectangleOnScreenRequested_otherDisplayIsActivated_noneEventOnDefaultDisplay() {
+ mMagnificationController.onFullScreenMagnificationActivationState(TEST_DISPLAY + 1,
+ true);
UiChangesForAccessibilityCallbacks callbacks = getUiChangesForAccessibilityCallbacks();
callbacks.onRectangleOnScreenRequested(TEST_DISPLAY,
@@ -579,6 +594,41 @@ public class MagnificationControllerTest {
}
@Test
+ public void getLastActivatedMode_switchMode_returnExpectedLastActivatedMode()
+ throws RemoteException {
+ activateMagnifier(MODE_WINDOW, MAGNIFIED_CENTER_X, MAGNIFIED_CENTER_Y);
+
+ final int lastActivatedMode = mMagnificationController
+ .getLastMagnificationActivatedMode(TEST_DISPLAY);
+
+ assertEquals(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, lastActivatedMode);
+ }
+
+ @Test
+ public void getLastActivatedMode_switchModeAtOtherDisplay_returnExpectedLastActivatedMode()
+ throws RemoteException {
+ activateMagnifier(TEST_DISPLAY, MODE_WINDOW, MAGNIFIED_CENTER_X, MAGNIFIED_CENTER_Y);
+ activateMagnifier(TEST_DISPLAY + 1, MODE_FULLSCREEN, MAGNIFIED_CENTER_X,
+ MAGNIFIED_CENTER_Y);
+
+ final int lastActivatedMode = mMagnificationController
+ .getLastMagnificationActivatedMode(TEST_DISPLAY);
+
+ assertEquals(ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW, lastActivatedMode);
+ }
+
+ @Test
+ public void getLastActivatedMode_otherDisplayIsActivated_defaultModeOnDefaultDisplay()
+ throws RemoteException {
+ activateMagnifier(TEST_DISPLAY + 1, MODE_WINDOW, MAGNIFIED_CENTER_X, MAGNIFIED_CENTER_Y);
+
+ int lastActivatedMode = mMagnificationController
+ .getLastMagnificationActivatedMode(TEST_DISPLAY);
+
+ assertEquals(ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN, lastActivatedMode);
+ }
+
+ @Test
public void onFullScreenMagnificationActivationState_fullScreenEnabled_logFullScreenDuration() {
MagnificationController spyController = spy(mMagnificationController);
spyController.onFullScreenMagnificationActivationState(TEST_DISPLAY, true);
@@ -818,17 +868,22 @@ public class MagnificationControllerTest {
}
private void activateMagnifier(int mode, float centerX, float centerY) throws RemoteException {
+ activateMagnifier(TEST_DISPLAY, mode, centerX, centerY);
+ }
+
+ private void activateMagnifier(int displayId, int mode, float centerX, float centerY)
+ throws RemoteException {
final boolean windowMagnifying = mWindowMagnificationManager.isWindowMagnifierEnabled(
- TEST_DISPLAY);
+ displayId);
if (windowMagnifying) {
- mWindowMagnificationManager.disableWindowMagnification(TEST_DISPLAY, false);
+ mWindowMagnificationManager.disableWindowMagnification(displayId, false);
mMockConnection.invokeCallbacks();
}
if (mode == MODE_FULLSCREEN) {
- mScreenMagnificationController.setScaleAndCenter(TEST_DISPLAY, DEFAULT_SCALE, centerX,
+ mScreenMagnificationController.setScaleAndCenter(displayId, DEFAULT_SCALE, centerX,
centerY, true, AccessibilityManagerService.MAGNIFICATION_GESTURE_HANDLER_ID);
} else {
- mWindowMagnificationManager.enableWindowMagnification(TEST_DISPLAY, DEFAULT_SCALE,
+ mWindowMagnificationManager.enableWindowMagnification(displayId, DEFAULT_SCALE,
centerX, centerY, null, TEST_SERVICE_ID);
mMockConnection.invokeCallbacks();
}
diff --git a/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java
index 997a138cf58f..d5c5745d6680 100644
--- a/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java
@@ -26,9 +26,11 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.nullable;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.accounts.AbstractAccountAuthenticator;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerInternal;
@@ -1698,13 +1700,14 @@ public class AccountManagerServiceTest extends AndroidTestCase {
final CountDownLatch latch = new CountDownLatch(1);
Response response = new Response(latch, mMockAccountManagerResponse);
+ long expiryEpochTimeInMillis = System.currentTimeMillis() + ONE_DAY_IN_MILLISECOND;
mAms.getAuthToken(
response, // response
AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS,
"authTokenType", // authTokenType
true, // notifyOnAuthFailure
false, // expectActivityLaunch
- createGetAuthTokenOptions());
+ createGetAuthTokenOptionsWithExpiry(expiryEpochTimeInMillis));
waitForLatch(latch);
verify(mMockAccountManagerResponse).onResult(mBundleCaptor.capture());
@@ -1715,6 +1718,58 @@ public class AccountManagerServiceTest extends AndroidTestCase {
AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS);
assertEquals(result.getString(AccountManager.KEY_ACCOUNT_TYPE),
AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1);
+ assertEquals(result.getLong(AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY),
+ expiryEpochTimeInMillis);
+ }
+
+ @SmallTest
+ public void testGetAuthTokenCachedSuccess() throws Exception {
+ unlockSystemUser();
+ when(mMockContext.createPackageContextAsUser(
+ anyString(), anyInt(), any(UserHandle.class))).thenReturn(mMockContext);
+ when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager);
+ String[] list = new String[]{AccountManagerServiceTestFixtures.CALLER_PACKAGE};
+ when(mMockPackageManager.getPackagesForUid(anyInt())).thenReturn(list);
+
+ final CountDownLatch latch = new CountDownLatch(1);
+ Response response = new Response(latch, mMockAccountManagerResponse);
+ long expiryEpochTimeInMillis = System.currentTimeMillis() + ONE_DAY_IN_MILLISECOND;
+ mAms.getAuthToken(
+ response, // response
+ AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS,
+ "authTokenType", // authTokenType
+ true, // notifyOnAuthFailure
+ false, // expectActivityLaunch
+ createGetAuthTokenOptionsWithExpiry(expiryEpochTimeInMillis));
+ waitForLatch(latch);
+
+ // Make call for cached token.
+ mAms.getAuthToken(
+ response, // response
+ AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS,
+ "authTokenType", // authTokenType
+ true, // notifyOnAuthFailure
+ false, // expectActivityLaunch
+ createGetAuthTokenOptionsWithExpiry(expiryEpochTimeInMillis + 10));
+ waitForLatch(latch);
+
+ verify(mMockAccountManagerResponse, times(2)).onResult(mBundleCaptor.capture());
+ List<Bundle> result = mBundleCaptor.getAllValues();
+ assertGetTokenResponse(result.get(0), expiryEpochTimeInMillis);
+ // cached token was returned with the same expiration time as first token.
+ assertGetTokenResponse(result.get(1), expiryEpochTimeInMillis);
+ }
+
+ private void assertGetTokenResponse(Bundle result, long expiryEpochTimeInMillis) {
+ assertEquals(result.getString(AccountManager.KEY_AUTHTOKEN),
+ AccountManagerServiceTestFixtures.AUTH_TOKEN);
+ assertEquals(result.getString(AccountManager.KEY_ACCOUNT_NAME),
+ AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS);
+ assertEquals(result.getString(AccountManager.KEY_ACCOUNT_TYPE),
+ AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1);
+ assertEquals(result.getLong(AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY),
+ expiryEpochTimeInMillis);
+
}
@SmallTest
@@ -3241,11 +3296,16 @@ public class AccountManagerServiceTest extends AndroidTestCase {
}
private Bundle createGetAuthTokenOptions() {
+ return createGetAuthTokenOptionsWithExpiry(
+ System.currentTimeMillis() + ONE_DAY_IN_MILLISECOND);
+ }
+
+ private Bundle createGetAuthTokenOptionsWithExpiry(long expiryEpochTimeInMillis) {
Bundle options = new Bundle();
options.putString(AccountManager.KEY_ANDROID_PACKAGE_NAME,
AccountManagerServiceTestFixtures.CALLER_PACKAGE);
options.putLong(AccountManagerServiceTestFixtures.KEY_TOKEN_EXPIRY,
- System.currentTimeMillis() + ONE_DAY_IN_MILLISECOND);
+ expiryEpochTimeInMillis);
return options;
}
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java
index 33ea7108a705..b9ae6702c37e 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsShellCommandTest.java
@@ -25,6 +25,8 @@ import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;
+
import static junit.framework.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -48,6 +50,7 @@ import android.os.Looper;
import android.os.Process;
import android.os.ResultReceiver;
import android.os.ShellCallback;
+import android.os.UserHandle;
import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
@@ -370,6 +373,19 @@ public class LockSettingsShellCommandTest {
mUserId);
}
+ @Test
+ public void testRequireStrongAuth_STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN() throws Exception {
+ when(mLockPatternUtils.isSecure(mUserId)).thenReturn(true);
+
+ assertEquals(0, mCommand.exec(new Binder(), in, out, err,
+ new String[] { "require-strong-auth", "STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN"},
+ mShellCallback, mResultReceiver));
+
+ verify(mLockPatternUtils).requireStrongAuth(
+ STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN,
+ UserHandle.USER_ALL);
+ }
+
private List<LockPatternView.Cell> stringToPattern(String str) {
return LockPatternUtils.byteArrayToPattern(str.getBytes());
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java b/services/tests/servicestests/src/com/android/server/pm/AppsFilterImplTest.java
index b72b8d2ec6e8..d8f4349b95bf 100644
--- a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/AppsFilterImplTest.java
@@ -77,7 +77,7 @@ import java.util.concurrent.Executor;
@Presubmit
@RunWith(JUnit4.class)
-public class AppsFilterTest {
+public class AppsFilterImplTest {
private static final int DUMMY_CALLING_APPID = 10345;
private static final int DUMMY_TARGET_APPID = 10556;
@@ -98,9 +98,9 @@ public class AppsFilterTest {
}
@Mock
- AppsFilter.FeatureConfig mFeatureConfigMock;
+ AppsFilterImpl.FeatureConfig mFeatureConfigMock;
@Mock
- AppsFilter.StateProvider mStateProvider;
+ AppsFilterImpl.StateProvider mStateProvider;
@Mock
Executor mMockExecutor;
@Mock
@@ -204,11 +204,11 @@ public class AppsFilterTest {
MockitoAnnotations.initMocks(this);
doAnswer(invocation -> {
- ((AppsFilter.StateProvider.CurrentStateCallback) invocation.getArgument(0))
+ ((AppsFilterImpl.StateProvider.CurrentStateCallback) invocation.getArgument(0))
.currentState(mExisting, USER_INFO_LIST);
return new Object();
}).when(mStateProvider)
- .runWithState(any(AppsFilter.StateProvider.CurrentStateCallback.class));
+ .runWithState(any(AppsFilterImpl.StateProvider.CurrentStateCallback.class));
doAnswer(invocation -> {
((Runnable) invocation.getArgument(0)).run();
@@ -218,14 +218,14 @@ public class AppsFilterTest {
when(mFeatureConfigMock.isGloballyEnabled()).thenReturn(true);
when(mFeatureConfigMock.packageIsEnabled(any(AndroidPackage.class))).thenAnswer(
(Answer<Boolean>) invocation ->
- ((AndroidPackage)invocation.getArgument(SYSTEM_USER)).getTargetSdkVersion()
+ ((AndroidPackage) invocation.getArgument(SYSTEM_USER)).getTargetSdkVersion()
>= Build.VERSION_CODES.R);
}
@Test
public void testSystemReadyPropogates() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -236,8 +236,8 @@ public class AppsFilterTest {
@Test
public void testQueriesAction_FilterMatches() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -259,8 +259,8 @@ public class AppsFilterTest {
}
@Test
public void testQueriesProtectedAction_FilterDoesNotMatch() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -308,8 +308,8 @@ public class AppsFilterTest {
@Test
public void testQueriesProvider_FilterMatches() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -333,8 +333,8 @@ public class AppsFilterTest {
@Test
public void testOnUserUpdated_FilterMatches() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
@@ -356,11 +356,11 @@ public class AppsFilterTest {
// adds new user
doAnswer(invocation -> {
- ((AppsFilter.StateProvider.CurrentStateCallback) invocation.getArgument(0))
+ ((AppsFilterImpl.StateProvider.CurrentStateCallback) invocation.getArgument(0))
.currentState(mExisting, USER_INFO_LIST_WITH_ADDED);
return new Object();
}).when(mStateProvider)
- .runWithState(any(AppsFilter.StateProvider.CurrentStateCallback.class));
+ .runWithState(any(AppsFilterImpl.StateProvider.CurrentStateCallback.class));
appsFilter.onUserCreated(ADDED_USER);
for (int subjectUserId : USER_ARRAY_WITH_ADDED) {
@@ -373,11 +373,11 @@ public class AppsFilterTest {
// delete user
doAnswer(invocation -> {
- ((AppsFilter.StateProvider.CurrentStateCallback) invocation.getArgument(0))
+ ((AppsFilterImpl.StateProvider.CurrentStateCallback) invocation.getArgument(0))
.currentState(mExisting, USER_INFO_LIST);
return new Object();
}).when(mStateProvider)
- .runWithState(any(AppsFilter.StateProvider.CurrentStateCallback.class));
+ .runWithState(any(AppsFilterImpl.StateProvider.CurrentStateCallback.class));
appsFilter.onUserDeleted(ADDED_USER);
for (int subjectUserId : USER_ARRAY) {
@@ -391,8 +391,8 @@ public class AppsFilterTest {
@Test
public void testQueriesDifferentProvider_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -416,8 +416,8 @@ public class AppsFilterTest {
@Test
public void testQueriesProviderWithSemiColon_FilterMatches() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -435,8 +435,8 @@ public class AppsFilterTest {
@Test
public void testQueriesAction_NoMatchingAction_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -452,8 +452,8 @@ public class AppsFilterTest {
@Test
public void testQueriesAction_NoMatchingActionFilterLowSdk_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -473,8 +473,8 @@ public class AppsFilterTest {
@Test
public void testNoQueries_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -490,7 +490,7 @@ public class AppsFilterTest {
@Test
public void testNoUsesLibrary_Filters() throws Exception {
- final AppsFilter appsFilter = new AppsFilter(mStateProvider, mFeatureConfigMock,
+ final AppsFilterImpl appsFilter = new AppsFilterImpl(mStateProvider, mFeatureConfigMock,
new String[]{}, /* systemAppsQueryable */ false, /* overlayProvider */ null,
mMockExecutor, mMockPmInternal);
@@ -516,7 +516,7 @@ public class AppsFilterTest {
@Test
public void testUsesLibrary_DoesntFilter() throws Exception {
- final AppsFilter appsFilter = new AppsFilter(mStateProvider, mFeatureConfigMock,
+ final AppsFilterImpl appsFilter = new AppsFilterImpl(mStateProvider, mFeatureConfigMock,
new String[]{}, /* systemAppsQueryable */ false, /* overlayProvider */ null,
mMockExecutor, mMockPmInternal);
@@ -543,7 +543,7 @@ public class AppsFilterTest {
@Test
public void testUsesOptionalLibrary_DoesntFilter() throws Exception {
- final AppsFilter appsFilter = new AppsFilter(mStateProvider, mFeatureConfigMock,
+ final AppsFilterImpl appsFilter = new AppsFilterImpl(mStateProvider, mFeatureConfigMock,
new String[]{}, /* systemAppsQueryable */ false, /* overlayProvider */ null,
mMockExecutor, mMockPmInternal);
@@ -570,7 +570,7 @@ public class AppsFilterTest {
@Test
public void testUsesLibrary_ShareUid_DoesntFilter() throws Exception {
- final AppsFilter appsFilter = new AppsFilter(mStateProvider, mFeatureConfigMock,
+ final AppsFilterImpl appsFilter = new AppsFilterImpl(mStateProvider, mFeatureConfigMock,
new String[]{}, /* systemAppsQueryable */ false, /* overlayProvider */ null,
mMockExecutor, mMockPmInternal);
@@ -602,8 +602,8 @@ public class AppsFilterTest {
@Test
public void testForceQueryable_SystemDoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -621,8 +621,8 @@ public class AppsFilterTest {
@Test
public void testForceQueryable_NonSystemFilters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -638,9 +638,10 @@ public class AppsFilterTest {
@Test
public void testForceQueryableByDevice_SystemCaller_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{"com.some.package"},
- false, null, mMockExecutor, mMockPmInternal);
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock,
+ new String[]{"com.some.package"}, false, null,
+ mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -657,8 +658,8 @@ public class AppsFilterTest {
@Test
public void testSystemSignedTarget_DoesntFilter() throws CertificateException {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
appsFilter.onSystemReady();
@@ -686,9 +687,10 @@ public class AppsFilterTest {
@Test
public void testForceQueryableByDevice_NonSystemCaller_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{"com.some.package"},
- false, null, mMockExecutor, mMockPmInternal);
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock,
+ new String[]{"com.some.package"}, false, null,
+ mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -704,8 +706,8 @@ public class AppsFilterTest {
@Test
public void testSystemQueryable_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{},
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{},
true /* system force queryable */, null, mMockExecutor,
mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
@@ -723,8 +725,8 @@ public class AppsFilterTest {
@Test
public void testQueriesPackage_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -742,8 +744,8 @@ public class AppsFilterTest {
public void testNoQueries_FeatureOff_DoesntFilter() throws Exception {
when(mFeatureConfigMock.packageIsEnabled(any(AndroidPackage.class)))
.thenReturn(false);
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -759,8 +761,8 @@ public class AppsFilterTest {
@Test
public void testSystemUid_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -775,8 +777,8 @@ public class AppsFilterTest {
@Test
public void testSystemUidSecondaryUser_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -792,8 +794,8 @@ public class AppsFilterTest {
@Test
public void testNonSystemUid_NoCallingSetting_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -807,8 +809,8 @@ public class AppsFilterTest {
@Test
public void testNoTargetPackage_filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -838,7 +840,7 @@ public class AppsFilterTest {
.setOverlayTargetOverlayableName("overlayableName");
ParsingPackage actor = pkg("com.some.package.actor");
- final AppsFilter appsFilter = new AppsFilter(
+ final AppsFilterImpl appsFilter = new AppsFilterImpl(
mStateProvider,
mFeatureConfigMock,
new String[]{},
@@ -933,7 +935,7 @@ public class AppsFilterTest {
when(mMockPmInternal.getSharedUserPackages(any(Integer.class))).thenReturn(
actorSharedSettingPackages
);
- final AppsFilter appsFilter = new AppsFilter(
+ final AppsFilterImpl appsFilter = new AppsFilterImpl(
mStateProvider,
mFeatureConfigMock,
new String[]{},
@@ -985,8 +987,8 @@ public class AppsFilterTest {
@Test
public void testInitiatingApp_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -1003,8 +1005,8 @@ public class AppsFilterTest {
@Test
public void testUninstalledInitiatingApp_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -1021,8 +1023,8 @@ public class AppsFilterTest {
@Test
public void testOriginatingApp_Filters() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -1046,8 +1048,8 @@ public class AppsFilterTest {
@Test
public void testInstallingApp_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -1071,8 +1073,8 @@ public class AppsFilterTest {
@Test
public void testInstrumentation_DoesntFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -1100,8 +1102,8 @@ public class AppsFilterTest {
@Test
public void testWhoCanSee() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -1173,8 +1175,8 @@ public class AppsFilterTest {
@Test
public void testOnChangeReport() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
final WatchableTester watcher = new WatchableTester(appsFilter, "onChange");
watcher.register();
@@ -1246,8 +1248,8 @@ public class AppsFilterTest {
@Test
public void testOnChangeReportedFilter() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
mMockExecutor, mMockPmInternal);
simulateAddBasicAndroid(appsFilter);
appsFilter.onSystemReady();
@@ -1270,6 +1272,53 @@ public class AppsFilterTest {
watcher.verifyNoChangeReported("shouldFilterApplication");
}
+ @Test
+ public void testAppsFilterRead() throws Exception {
+ final AppsFilterImpl appsFilter =
+ new AppsFilterImpl(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
+ mMockExecutor, mMockPmInternal);
+ simulateAddBasicAndroid(appsFilter);
+ appsFilter.onSystemReady();
+
+ PackageSetting target = simulateAddPackage(appsFilter, pkg("com.some.package"),
+ DUMMY_TARGET_APPID);
+ PackageSetting instrumentation = simulateAddPackage(appsFilter,
+ pkgWithInstrumentation("com.some.other.package", "com.some.package"),
+ DUMMY_CALLING_APPID);
+
+ final int hasProviderAppId = Process.FIRST_APPLICATION_UID + 1;
+ final int queriesProviderAppId = Process.FIRST_APPLICATION_UID + 2;
+ PackageSetting queriesProvider = simulateAddPackage(appsFilter,
+ pkgQueriesProvider("com.yet.some.other.package", "com.some.authority"),
+ queriesProviderAppId);
+ appsFilter.grantImplicitAccess(
+ hasProviderAppId, queriesProviderAppId, false /* retainOnUpdate */);
+
+ AppsFilterSnapshot snapshot = appsFilter.snapshot();
+ assertFalse(
+ snapshot.shouldFilterApplication(DUMMY_CALLING_APPID, instrumentation, target,
+ SYSTEM_USER));
+ assertFalse(
+ snapshot.shouldFilterApplication(DUMMY_TARGET_APPID, target, instrumentation,
+ SYSTEM_USER));
+
+ SparseArray<int[]> queriesProviderFilter =
+ snapshot.getVisibilityAllowList(queriesProvider, USER_ARRAY, mExisting);
+ assertThat(toList(queriesProviderFilter.get(SYSTEM_USER)), contains(queriesProviderAppId));
+ assertTrue(snapshot.canQueryPackage(instrumentation.getPkg(),
+ target.getPackageName()));
+
+ // New changes don't affect the snapshot
+ appsFilter.removePackage(target, false);
+ assertTrue(
+ appsFilter.shouldFilterApplication(DUMMY_CALLING_APPID, instrumentation, target,
+ SYSTEM_USER));
+ assertFalse(
+ snapshot.shouldFilterApplication(DUMMY_CALLING_APPID, instrumentation, target,
+ SYSTEM_USER));
+
+ }
+
private List<Integer> toList(int[] array) {
ArrayList<Integer> ret = new ArrayList<>(array.length);
for (int i = 0; i < array.length; i++) {
@@ -1282,7 +1331,7 @@ public class AppsFilterTest {
PackageSettingBuilder withBuilder(PackageSettingBuilder builder);
}
- private void simulateAddBasicAndroid(AppsFilter appsFilter) throws Exception {
+ private void simulateAddBasicAndroid(AppsFilterImpl appsFilter) throws Exception {
final Signature frameworkSignature = Mockito.mock(Signature.class);
final SigningDetails frameworkSigningDetails =
new SigningDetails(new Signature[]{frameworkSignature}, 1);
@@ -1291,17 +1340,17 @@ public class AppsFilterTest {
b -> b.setSigningDetails(frameworkSigningDetails));
}
- private PackageSetting simulateAddPackage(AppsFilter filter,
+ private PackageSetting simulateAddPackage(AppsFilterImpl filter,
ParsingPackage newPkgBuilder, int appId) {
return simulateAddPackage(filter, newPkgBuilder, appId, null /*settingBuilder*/);
}
- private PackageSetting simulateAddPackage(AppsFilter filter,
+ private PackageSetting simulateAddPackage(AppsFilterImpl filter,
ParsingPackage newPkgBuilder, int appId, @Nullable WithSettingBuilder action) {
return simulateAddPackage(filter, newPkgBuilder, appId, action, null /*sharedUserSetting*/);
}
- private PackageSetting simulateAddPackage(AppsFilter filter,
+ private PackageSetting simulateAddPackage(AppsFilterImpl filter,
ParsingPackage newPkgBuilder, int appId, @Nullable WithSettingBuilder action,
@Nullable SharedUserSetting sharedUserSetting) {
final PackageSetting setting =
@@ -1324,7 +1373,7 @@ public class AppsFilterTest {
return setting;
}
- private void simulateAddPackage(PackageSetting setting, AppsFilter filter,
+ private void simulateAddPackage(PackageSetting setting, AppsFilterImpl filter,
@Nullable SharedUserSetting sharedUserSetting) {
mExisting.put(setting.getPackageName(), setting);
if (sharedUserSetting != null) {
diff --git a/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java b/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java
index 4ed4c236535f..37c95f735d89 100644
--- a/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java
+++ b/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java
@@ -17,6 +17,7 @@
package com.android.server.utils;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -860,6 +861,54 @@ public class WatcherTest {
}
}
+ @Test
+ public void testWatchedSparseSetArray() {
+ final String name = "WatchedSparseSetArray";
+ WatchableTester tester;
+
+ // Test WatchedSparseSetArray
+ WatchedSparseSetArray array = new WatchedSparseSetArray();
+ tester = new WatchableTester(array, name);
+ tester.verify(0, "Initial array - no registration");
+ array.add(INDEX_A, 1);
+ tester.verify(0, "Updates with no registration");
+ tester.register();
+ tester.verify(0, "Updates with no registration");
+ array.add(INDEX_B, 2);
+ tester.verify(1, "Updates with registration");
+ array.add(INDEX_B, 4);
+ array.add(INDEX_C, 5);
+ tester.verify(3, "Updates with registration");
+ // Special methods
+ assertTrue(array.remove(INDEX_C, 5));
+ tester.verify(4, "Removed 5 from key 3");
+ array.remove(INDEX_B);
+ tester.verify(5, "Removed everything for key 2");
+
+ // Snapshot
+ {
+ WatchedSparseSetArray arraySnap = (WatchedSparseSetArray) array.snapshot();
+ tester.verify(5, "Generate snapshot");
+ // Verify that the snapshot is a proper copy of the source.
+ assertEquals("WatchedSparseSetArray snap same size",
+ array.size(), arraySnap.size());
+ for (int i = 0; i < array.size(); i++) {
+ ArraySet set = array.get(array.keyAt(i));
+ ArraySet setSnap = arraySnap.get(arraySnap.keyAt(i));
+ assertNotNull(set);
+ assertTrue(set.equals(setSnap));
+ }
+ array.add(INDEX_D, 9);
+ tester.verify(6, "Tick after snapshot");
+ // Verify that the array is sealed
+ verifySealed(name, ()->arraySnap.add(INDEX_D, 10));
+ assertTrue(!array.isSealed());
+ assertTrue(arraySnap.isSealed());
+ }
+ array.clear();
+ tester.verify(7, "Cleared all entries");
+ }
+
private static class IndexGenerator {
private final int mSeed;
private final Random mRandom;
@@ -1084,6 +1133,18 @@ public class WatcherTest {
assertEquals(a.equals(s), true);
a.put(rowIndex, colIndex, !a.get(rowIndex, colIndex));
assertEquals(a.equals(s), false);
+
+ // Verify copy-in/out
+ {
+ final String msg = name + " copy";
+ WatchedSparseBooleanMatrix copy = new WatchedSparseBooleanMatrix();
+ copy.copyFrom(matrix);
+ final int end = copy.size();
+ assertTrue(msg + " size mismatch " + end + " " + matrix.size(), end == matrix.size());
+ for (int i = 0; i < end; i++) {
+ assertEquals(copy.keyAt(i), keys[i]);
+ }
+ }
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
index 9902e83c3648..908de34352c9 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -1139,18 +1139,8 @@ public class ActivityStarterTests extends WindowTestsBase {
true /* createdByOrganizer */);
sourceRecord.getTask().addChild(taskFragment, POSITION_TOP);
- starter.startActivityInner(
- /* r */targetRecord,
- /* sourceRecord */ sourceRecord,
- /* voiceSession */null,
- /* voiceInteractor */ null,
- /* startFlags */ 0,
- /* doResume */true,
- /* options */null,
- /* inTask */null,
- /* inTaskFragment */ taskFragment,
- /* restrictedBgActivity */false,
- /* intentGrants */null);
+ startActivityInner(starter, targetRecord, sourceRecord, null /* options */,
+ null /* inTask */, taskFragment);
assertFalse(taskFragment.hasChild());
}
@@ -1167,18 +1157,8 @@ public class ActivityStarterTests extends WindowTestsBase {
taskFragment.setTaskFragmentOrganizer(mock(TaskFragmentOrganizerToken.class), SYSTEM_UID,
"system_uid");
- starter.startActivityInner(
- /* r */targetRecord,
- /* sourceRecord */ sourceRecord,
- /* voiceSession */null,
- /* voiceInteractor */ null,
- /* startFlags */ 0,
- /* doResume */true,
- /* options */null,
- /* inTask */null,
- /* inTaskFragment */ taskFragment,
- /* restrictedBgActivity */false,
- /* intentGrants */null);
+ startActivityInner(starter, targetRecord, sourceRecord, null /* options */,
+ null /* inTask */, taskFragment);
assertTrue(taskFragment.hasChild());
}
@@ -1195,18 +1175,8 @@ public class ActivityStarterTests extends WindowTestsBase {
taskFragment.setTaskFragmentOrganizer(mock(TaskFragmentOrganizerToken.class),
targetRecord.getUid(), "test_process_name");
- starter.startActivityInner(
- /* r */targetRecord,
- /* sourceRecord */ sourceRecord,
- /* voiceSession */null,
- /* voiceInteractor */ null,
- /* startFlags */ 0,
- /* doResume */true,
- /* options */null,
- /* inTask */null,
- /* inTaskFragment */ taskFragment,
- /* restrictedBgActivity */false,
- /* intentGrants */null);
+ startActivityInner(starter, targetRecord, sourceRecord, null /* options */,
+ null /* inTask */, taskFragment);
assertTrue(taskFragment.hasChild());
}
@@ -1231,18 +1201,8 @@ public class ActivityStarterTests extends WindowTestsBase {
doReturn(true).when(signingDetails).hasAncestorOrSelfWithDigest(any());
doReturn(signingDetails).when(androidPackage).getSigningDetails();
- starter.startActivityInner(
- /* r */targetRecord,
- /* sourceRecord */ sourceRecord,
- /* voiceSession */null,
- /* voiceInteractor */ null,
- /* startFlags */ 0,
- /* doResume */true,
- /* options */null,
- /* inTask */null,
- /* inTaskFragment */ taskFragment,
- /* restrictedBgActivity */false,
- /* intentGrants */null);
+ startActivityInner(starter, targetRecord, sourceRecord, null /* options */,
+ null /* inTask */, taskFragment);
assertTrue(taskFragment.hasChild());
}
@@ -1258,23 +1218,30 @@ public class ActivityStarterTests extends WindowTestsBase {
targetRecord.info.flags |= ActivityInfo.FLAG_ALLOW_UNTRUSTED_ACTIVITY_EMBEDDING;
- starter.startActivityInner(
- /* r */targetRecord,
- /* sourceRecord */ sourceRecord,
- /* voiceSession */null,
- /* voiceInteractor */ null,
- /* startFlags */ 0,
- /* doResume */true,
- /* options */null,
- /* inTask */null,
- /* inTaskFragment */ taskFragment,
- /* restrictedBgActivity */false,
- /* intentGrants */null);
+ startActivityInner(starter, targetRecord, sourceRecord, null /* options */,
+ null /* inTask */, taskFragment);
assertTrue(taskFragment.hasChild());
}
@Test
+ public void testStartActivityInner_inTask() {
+ final ActivityStarter starter = prepareStarter(0, false);
+ // Simulate an app uses AppTask to create a non-attached task, and then it requests to
+ // start activity in the task.
+ final Task inTask = new TaskBuilder(mSupervisor).setTaskDisplayArea(null).setTaskId(123)
+ .build();
+ inTask.inRecents = true;
+ assertFalse(inTask.isAttached());
+ final ActivityRecord target = new ActivityBuilder(mAtm).build();
+ startActivityInner(starter, target, null /* source */, null /* options */, inTask,
+ null /* inTaskFragment */);
+
+ assertTrue(inTask.isAttached());
+ assertEquals(inTask, target.getTask());
+ }
+
+ @Test
public void testLaunchCookie_newAndExistingTask() {
final ActivityStarter starter = prepareStarter(0, false);
@@ -1322,21 +1289,20 @@ public class ActivityStarterTests extends WindowTestsBase {
// Start the target launch-into-pip activity from a source
final ActivityRecord sourceRecord = new ActivityBuilder(mAtm).setCreateTask(true).build();
- starter.startActivityInner(
- /* r */ targetRecord,
- /* sourceRecord */ sourceRecord,
- /* voiceSession */ null,
- /* voiceInteractor */ null,
- /* startFlags */ 0,
- /* doResume */ true,
- /* options */ opts,
- /* inTask */ null,
- /* inTaskFragment */ null,
- /* restrictedBgActivity */ false,
- /* intentGrants */ null);
+ startActivityInner(starter, targetRecord, sourceRecord, opts,
+ null /* inTask */, null /* inTaskFragment */);
// Verify the ActivityRecord#getLaunchIntoPipHostActivity points to sourceRecord.
assertThat(targetRecord.getLaunchIntoPipHostActivity()).isNotNull();
assertEquals(targetRecord.getLaunchIntoPipHostActivity(), sourceRecord);
}
+
+ private static void startActivityInner(ActivityStarter starter, ActivityRecord target,
+ ActivityRecord source, ActivityOptions options, Task inTask,
+ TaskFragment inTaskFragment) {
+ starter.startActivityInner(target, source, null /* voiceSession */,
+ null /* voiceInteractor */, 0 /* startFlags */, true /* doResume */,
+ options, inTask, inTaskFragment, false /* restrictedBgActivity */,
+ null /* intentGrants */);
+ }
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 605726c0e804..118f159bee7b 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -1201,6 +1201,20 @@ public class DisplayContentTests extends WindowTestsBase {
dc.computeImeControlTarget());
}
+ @UseTestDisplay(addWindows = W_INPUT_METHOD)
+ @Test
+ public void testImeSecureFlagGetUpdatedAfterImeInputTarget() {
+ // Verify IME window can get up-to-date secure flag update when the IME input target
+ // set before setCanScreenshot called.
+ final WindowState app = createWindow(null, TYPE_APPLICATION, "app");
+ SurfaceControl.Transaction t = mDisplayContent.mInputMethodWindow.getPendingTransaction();
+ spyOn(t);
+ mDisplayContent.setImeInputTarget(app);
+ mDisplayContent.mInputMethodWindow.setCanScreenshot(t, false /* canScreenshot */);
+
+ verify(t).setSecure(eq(mDisplayContent.mInputMethodWindow.mSurfaceControl), eq(true));
+ }
+
@UseTestDisplay(addWindows = W_ACTIVITY)
@Test
public void testComputeImeControlTarget_notMatchParentBounds() throws Exception {
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerHelperTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java
index f9689990c5e8..a82826006f17 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerHelperTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.app.ActivityManager.START_ABORTED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
@@ -26,6 +27,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.mock;
import android.app.WindowConfiguration;
import android.content.ComponentName;
@@ -45,13 +47,13 @@ import java.util.List;
import java.util.Set;
/**
- * Tests for the {@link DisplayWindowPolicyControllerHelper} class.
+ * Tests for the {@link DisplayWindowPolicyController} class.
*
* Build/Install/Run:
- * atest WmTests:DisplayWindowPolicyControllerHelperTests
+ * atest WmTests:DisplayWindowPolicyControllerTests
*/
@RunWith(WindowTestRunner.class)
-public class DisplayWindowPolicyControllerHelperTests extends WindowTestsBase {
+public class DisplayWindowPolicyControllerTests extends WindowTestsBase {
private static final int TEST_USER_0_ID = 0;
private static final int TEST_USER_1_ID = 10;
@@ -152,8 +154,51 @@ public class DisplayWindowPolicyControllerHelperTests extends WindowTestsBase {
assertTrue(mSecondaryDisplay.mDwpcHelper.isWindowingModeSupported(WINDOWING_MODE_PINNED));
}
+ @Test
+ public void testInterestedWindowFlags() {
+ final int fakeFlag1 = 0x00000010;
+ final int fakeFlag2 = 0x00000100;
+ final int fakeSystemFlag1 = 0x00000010;
+ final int fakeSystemFlag2 = 0x00000100;
+
+ mDwpc.setInterestedWindowFlags(fakeFlag1, fakeSystemFlag1);
+
+ assertTrue(mDwpc.isInterestedWindowFlags(fakeFlag1, fakeSystemFlag1));
+ assertTrue(mDwpc.isInterestedWindowFlags(fakeFlag1, fakeSystemFlag2));
+ assertTrue(mDwpc.isInterestedWindowFlags(fakeFlag2, fakeSystemFlag1));
+ assertFalse(mDwpc.isInterestedWindowFlags(fakeFlag2, fakeSystemFlag2));
+ }
+
+ @Test
+ public void testCanContainActivities() {
+ ActivityStarter starter = new ActivityStarter(mock(ActivityStartController.class), mAtm,
+ mSupervisor, mock(ActivityStartInterceptor.class));
+ final Task task = new TaskBuilder(mSupervisor).setDisplay(mSecondaryDisplay).build();
+ final ActivityRecord sourceRecord = new ActivityBuilder(mAtm).setTask(task).build();
+ final ActivityRecord disallowedRecord =
+ new ActivityBuilder(mAtm).setComponent(mDwpc.DISALLOWED_ACTIVITY).build();
+
+ int result = starter.startActivityInner(
+ disallowedRecord,
+ sourceRecord,
+ /* voiceSession */null,
+ /* voiceInteractor */ null,
+ /* startFlags */ 0,
+ /* doResume */true,
+ /* options */null,
+ /* inTask */null,
+ /* inTaskFragment */ null,
+ /* restrictedBgActivity */false,
+ /* intentGrants */null);
+
+ assertEquals(result, START_ABORTED);
+ }
+
private class TestDisplayWindowPolicyController extends DisplayWindowPolicyController {
+ public ComponentName DISALLOWED_ACTIVITY =
+ new ComponentName("fake.package", "DisallowedActivity");
+
ComponentName mTopActivity = null;
int mTopActivityUid = UserHandle.USER_NULL;
ArraySet<Integer> mRunningUids = new ArraySet<>();
@@ -161,7 +206,14 @@ public class DisplayWindowPolicyControllerHelperTests extends WindowTestsBase {
@Override
public boolean canContainActivities(@NonNull List<ActivityInfo> activities,
@WindowConfiguration.WindowingMode int windowingMode) {
- return false;
+ final int activityCount = activities.size();
+ for (int i = 0; i < activityCount; i++) {
+ final ActivityInfo aInfo = activities.get(i);
+ if (aInfo.getComponentName().equals(DISALLOWED_ACTIVITY)) {
+ return false;
+ }
+ }
+ return true;
}
@Override
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 8a75ae45c3a5..7b5d62de58f2 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -3227,8 +3227,10 @@ public class TelephonyManager {
return "LTE_CA";
case NETWORK_TYPE_NR:
return "NR";
- default:
+ case NETWORK_TYPE_UNKNOWN:
return "UNKNOWN";
+ default:
+ return "UNKNOWN(" + type + ")";
}
}
diff --git a/tests/TrustTests/src/android/trust/test/lib/utils.kt b/tests/TrustTests/src/android/trust/test/lib/utils.kt
index 78140abec210..e047202f6740 100644
--- a/tests/TrustTests/src/android/trust/test/lib/utils.kt
+++ b/tests/TrustTests/src/android/trust/test/lib/utils.kt
@@ -33,7 +33,7 @@ private const val TAG = "TrustTestUtils"
*/
internal fun wait(
description: String? = null,
- maxWait: Long = 1500L,
+ maxWait: Long = 30000L,
rate: Long = 50L,
conditionFunction: (count: Int) -> Boolean
) {